资讯专栏INFORMATION COLUMN

搭建同时支持PHP和ASP.NET的Linux服务器环境

王军 / 1486人阅读

摘要:我的服务器安装的是最新版,上面的代码贴的是参考文章的原文。换成域名或者服务器,测试结果应该为载入页面时到服务器的连接被重置。火狐此时测试结果应该为默认页此时测试结果应该为的默认页,或者是报出的错误。个人认为,避免和混用才是上上策。

注:本文只是个人研究以及探索的方法,可能不太严谨,如果犯了什么专业性的错误,还希望各位看官加以指正,谢谢。(´・ω・`)

特别感谢:阔空晴云(每次遇到什么问题都问你真是太麻烦你了 膜拜)
本文由 赤石俊哉 原创撰写,您可以用于任何的学习交流用途,不得用于任何形式的商业用途。如需转载请注明原作者的版权信息和来源。

环境简述 本地调试

操作系统:Ubuntu Server x64 14.04.1 LTS 参考官方说明
CPU资源:Intel Core i7 3610QM (VirtualBox仅适用一个核心)
MEM资源:512MB DDR3 1600MHz
存储资源:10Gb 笔记本机械硬盘

服务器端

操作系统:Ubuntu 14.04 X86
CPU资源:Intel(R) Xeon(R) CPU E31245 @ 3.30GHz (4 cores)
MEM资源:524288 kB (512MB)
存储资源:20GB SSD

想法

发起HTTP请求之后,先经过Nginx,如果是PHP站点则转发到Apache2,如果是ASP.NET站点则转发到Jexus。


配置ASP.NET部分(Jexus)环境 安装Mono

参考:在Ubuntu操作系统上安装mono的具体方法

一、更新系统:
sudo apt-get update
sudo apt-get upgrade
二、构建编译环境:
sudo apt-get install build-essential
sudo apt-get install automake autoconf
sudo apt-get install bison gettext libtool libglib2.0-dev libfreetype6-dev libfontconfig-dev
三、安装libgdiplus、mono以及编译环境所需要的其它库文件
sudo apt-get install libtiff5-dev
sudo apt-get install libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev 
sudo apt-get install libjpeg-dev

注:这一步跟原文不太一样,我是根据错误提示修改了一些。

四、源文件下载与解压:

下载:

wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2
wget http://download.mono-project.com/sources/mono/mono-3.0.12.tar.bz2

注:(2015/10/13)最新版为libgdiplus-3.12.tar.gzmono-4.2.1.60.tar.bz2
我的服务器安装的是最新版,上面的代码贴的是参考文章的原文。

解压:(改成你下载的对应版本就行了)

tar jvxf libgdiplus-2.10.tar.bz2
tar jvxf mono-3.0.12.tar.bz2

//如果下载的是新版,使用的是gzip(tar.gz),使用下面的命令解压。

tar zxvf libgdiplus-3.12.tar.gz
五、安装Libgdiplus和Mono: 安装libgdiplus
cd libgdiplus-3.12
./configure --prefix=/usr
make
sudo make install
cd ..

遇到问题:gdiplus-private.h:33:31: fatal error: freetype/tttables.h: No such file or directory
参考:Ubuntu Server(Ubuntu 14.04 LTS 64位)安装libgdiplus2.10.9出错问题记录
具体操作如下:

这个错误就是说创建/usr/X11/include/freetype链接失败了,因为找不到freetype,但是我们找到了freetype2,这样我们做个链接吧。(用上面参考资料的解决方案发现权限不够,于是加上了sudo。)

sudo ln -s /usr/include/freetype2 /usr/include/freetype

注:原文中提及的/usr/lib64/libglib-2.0.so.0: could not read symbols: Invalid operation问题,由于我并没有遇到,所以略过,如果遇到这个问题,可以参考上面参考链接的解决方法。


遇到问题:No package "cairo" found
参考:Cairo Download

sudo apt-get install libcairo2-dev

安装Mono
cd mono-4.2.1.60
./configure --prefix=/usr
make
sudo make install
cd ..
安装Jexus
wget http://www.linuxdot.net/down/jexus-5.5.3.tar.gz
tar -zxvf jexus-5.5.3.tar.gz
cd jexus-5.5.3
sudo ./install

一下就成功了,这次并没有遇到什么问题,Jexus此时就装好了。接下来需要为Jexus配置开机启动,和默认站点。此部分先留到最后。


配置PHP部分(Apache2)部分环境

Apache+PHP的部分就不知道配置过多少回了,这个就没有那么复杂了。

安装Apache2
sudo apt-get install apache2

打开浏览器输入"服务器地址"测试访问Apache2的默认页面,可以看到一个Apache2 Ubuntu Default Page则说明Apache2的安装成功了,接着安装PHP就行了~

安装PHP
sudo apt-get install php5
其他配置
sudo apt-get install libapache2-mod-php5
//注释:上面的安装是为Apache2安装PHP5的支持。

sudo /etc/init.d/apache2 restart

出现错误:

AH00558: apache2: Could not reliably determine the server"s fully qualified domain name, using 127.0.1.1. Set the "ServerName" directive globally to suppress this message

参考:ubuntu 14.04 apache2 服务重启出现 AH00558...
在/etc/apache2/apache2.conf配置文件中加入:

ServerName localhost

修改后重启Apache2

测试Apache+PHP是否运转正常
sudo vim /var/www/html/test.php

输入

访问:http://服务器ip/test.php
若显示的是Hello RMEGo,就说明配置成功了。


配置Nginx

在配置Nginx之前,我们先要为Apache2和Jexus做一些更改,默认他们使用的都是80端口,然而我们需要把80给Nginx,如果是一个PHP站点则转发到Apache2上,如果是ASP.NET站点,则转发到Jexus上,我相信没有人闲到同一个站点同时用PHP和ASP.NET吧╮(╯_╰)╭,如果有的话,可以转发到Jexus上,并且启用Jexus的Fast-CGI来使用PHP,这里就不详细讨论了。

修改Apache2的默认使用端口
sudo vim /etc/apache2/ports.conf

Listen 80改为Listen 8081或者其他你觉得合适的端口,只要不和其他端口冲突就行。

然后,再改变默认站点的端口

sudo vim /etc/apache2/sites-available/000-default.conf

将第一行的改成

当然,这里8081不是一定的,但是要和上面我们修改的一致。P.S.这句话等于是废话,反正配置完了默认站点要删除的,配置新站点的时候注意端口一样吧。

重启Apache2,测试是否能从8081端口访问,而不能从80端口访问。

http://ServerName:80/ //ServerName换成域名或者服务器IP,测试结果应该为"载入页面时到服务器的连接被重置。"(火狐)
http://ServerName:8081/ //此时测试结果应该为Apache2默认页 It works.
修改Jexus使用的默认端口以及添加Jexus的开机自动启动

Jexus好像没有全局使用端口的说法,直接进入到站点配置里面把默认站点的端口改成8082吧,也可以是你觉得不冲突的端口,注意以后添加站点的时候使用同样的端口就行了。

sudo vim /usr/jexus/siteconf/default

打开之后,有一个很显眼的port=80在上面,修改成port=8082,保存退出即可。

添加Jexus的开机自动启动

刚刚不马上添加开机启动的原因,就是因为大家都在用80端口,所以会出现端口占用,无法启动的情况,现在将Jexus和Apache2的端口都分开了,再来添加Jexus的开机启动吧。

sudo vim /etc/init.d/rc.local

在文件的最后加上

/usr/jexus/jws start

然后执行sudo reboot重启服务器,再看看服务是否正常吧。

重启之后,运行:

sudo /usr/jexus/jws status

如果显示的是Jexus is Runing,那么就成功了。
然后去浏览器测试一下:

http://ServerName:80/ //ServerName换成域名或者服务器IP,测试结果应该为"载入页面时到服务器的连接被重置。"(火狐)
http://ServerName:8081/ //此时测试结果应该为Apache2默认页 It works.
http://ServerName:8082/ //此时测试结果应该为Jexus的默认页,或者是Jexus报出的404错误。

大功告成,接下来就差Nginx了呢~!

安装并配置Nginx
sudo apt-get install nginx
关于配置

经过查阅多处文章和阔空晴云的指导,Nginx反向代理的配置大概如下:
css jpg js png gif 等静态内容,直接由Nginx处理。
php 等php内容,反向代理到8081端口,也就是Apache2,给Apache2处理。
aspx cshtml 等ASP.NET内容,反向代理到8082端口,也就是Jexus。

P.S. 对于使用PHP的,静态内容交给Nginx,非静态内容的任何内容都反代给Apache2,这样等于我们仍然还可以照原来使用Apache2的习惯去做伪静态等等的配置。同样的,对于使用ASP.NET的站点则除静态内容之外,都交给Jexus来处理
个人认为,避免Apche2和Jexus混用才是上上策。至少我感觉我会乱掉。 QAQ


最后说说

这样前Nginx,后Apache+Jexus的环境就算配好了,如果需要使用到其他的环境,可以独立配置好服务器,设置为其他端口,然后再在nginx中加入反代的处理。
Nginx配置笔记(待补充)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22451.html

相关文章

  • 搭建同时支持PHPASP.NETLinux务器环境

    摘要:我的服务器安装的是最新版,上面的代码贴的是参考文章的原文。换成域名或者服务器,测试结果应该为载入页面时到服务器的连接被重置。火狐此时测试结果应该为默认页此时测试结果应该为的默认页,或者是报出的错误。个人认为,避免和混用才是上上策。 注:本文只是个人研究以及探索的方法,可能不太严谨,如果犯了什么专业性的错误,还希望各位看官加以指正,谢谢。(´・ω・`) 特别感谢:阔空晴云(每次遇到什么...

    wwq0327 评论0 收藏0
  • 盘点 PHP ASP.NET 10大对比!

    摘要:谷歌,,,雅虎和最近因世界杯获得庞大观众数量的都在使用。因此,数据库服务器的能力是毋庸置疑的。微软的服务器,服务器以及未来的更新价格昂贵。更依赖于微软数量有限的开发者做出的改进和更新。 【编者按】本文主要针对开源 PHP 和非开源的 ASP.NET 在性能、成本、可扩展性,技术支持和复杂性等方面进行比较。 在网上论坛,总是有成百上千的文章和帖子在讨论 PHP 和 ASP.NET,究竟谁...

    hosition 评论0 收藏0
  • 上云概览——在云务器上快速搭建个人网站

    云服务器作为云计算时代重要的产物,以绝对的性能和价格优势逐渐受到企业和个人站长朋友的青睐和使用。那么,对于个人站长而言,如何利用云服务器搭建个人网站呢? 通常个人站长主要是搭建一些Wordpress博客、Discuz论坛等站点,大多数是使用PHP语言建站,建议使用Linux云服务器,也可以选用Windows云服务器。而Linux系统搭建网站主要是以执行命令的形式来完成,不懂命令代码的站长很难去操作...

    bingo 评论0 收藏0
  • 深入分析JavaWeb Item1 -- JavaWeb开发入门

    摘要:中主要是使用语言。将的动态功能和标准的安全性引入大型网络应用的开发集成部署和管理之中。提供了一个图形界面的管理工具,称为信息服务管理器,可用于监视配置和控制服务。 一、基本概念 1.1、WEB开发的相关知识   WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。  Internet上供外界访问的Web资源分为: 静态web资源(如html 页面...

    tinna 评论0 收藏0

发表评论

0条评论

王军

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<