在Linux上配置同时支持ASP.NET和PHP的服务器

该博客详细记录了在Ubuntu Server上配置Nginx、Apache2和Jexus的过程,用于分别处理PHP和ASP.NET站点。首先更新系统并安装必要的库,然后依次安装Mono、Apache2、PHP和Jexus。在安装过程中,解决了如libgdiplus和Mono的依赖问题。接着,调整Apache2和Jexus的端口以避免冲突,并设置它们开机自启动。最后,配置Nginx进行反向代理,以处理静态内容和动态内容的请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境简述
本地调试
操作系统: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
1
2
二、构建编译环境:
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
1
2
3
三、安装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
1
2
3
注:这一步跟原文不太一样,我是根据错误提示修改了一些。

四、源文件下载与解压:
下载:

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
1
2
注:(2015/10/13)最新版为libgdiplus-3.12.tar.gz、mono-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
1
2
3
4
5
6
五、安装Libgdiplus和Mono:
安装libgdiplus
cd libgdiplus-3.12
./configure --prefix=/usr
make
sudo make install
cd ..
1
2
3
4
5
遇到问题: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
1
注:原文中提及的/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
1
安装Mono
cd mono-4.2.1.60
./configure --prefix=/usr
make
sudo make install
cd ..
1
2
3
4
5
安装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
1
2
3
4
一下就成功了,这次并没有遇到什么问题,Jexus此时就装好了。接下来需要为Jexus配置开机启动,和默认站点。此部分先留到最后。

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

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

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

sudo /etc/init.d/apache2 restart
1
2
3
4
出现错误:

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
1
参考:ubuntu 14.04 apache2 服务重启出现 AH00558…
在/etc/apache2/apache2.conf配置文件中加入:

ServerName localhost
1
修改后重启Apache2

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

<?php echo "Hello RMEGo!"; ?>
1
访问: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
1
将Listen 80改为Listen 8081或者其他你觉得合适的端口,只要不和其他端口冲突就行。

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

sudo vim /etc/apache2/sites-available/000-default.conf
1
将第一行的<VirtualHost *:80>改成<VirtualHost *:8081>

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

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

http://ServerName:80/ //ServerName换成域名或者服务器IP,测试结果应该为"载入页面时到服务器的连接被重置。"(火狐)
http://ServerName:8081/ //此时测试结果应该为Apache2默认页 It works.
1
2
修改Jexus使用的默认端口以及添加Jexus的开机自动启动
Jexus好像没有全局使用端口的说法,直接进入到站点配置里面把默认站点的端口改成8082吧,也可以是你觉得不冲突的端口,注意以后添加站点的时候使用同样的端口就行了。

sudo vim /usr/jexus/siteconf/default
1
打开之后,有一个很显眼的port=80在上面,修改成port=8082,保存退出即可。

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

sudo vim /etc/init.d/rc.local
1
在文件的最后加上

/usr/jexus/jws start
1
然后执行sudo reboot重启服务器,再看看服务是否正常吧。

重启之后,运行:

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

http://ServerName:80/ //ServerName换成域名或者服务器IP,测试结果应该为"载入页面时到服务器的连接被重置。"(火狐)
http://ServerName:8081/ //此时测试结果应该为Apache2默认页 It works.
http://ServerName:8082/ //此时测试结果应该为Jexus的默认页,或者是Jexus报出的404错误。
1
2
3
大功告成,接下来就差Nginx了呢~!

安装并配置Nginx
sudo apt-get install nginx
1
关于配置
经过查阅多处文章和阔空晴云的指导,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
————————————————
版权声明:本文为优快云博主「赤石俊哉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/toshiya14/article/details/48974923

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值