Ubuntu配置Apache2+FastCGI+PHP5+.Net2.0(Mod_Mono)+Mysql
作者:Leven 日期:2008-05-08 00:29:16
最近升级了Ubuntu,所以将web开发环境重新配置了一下,为了方便,apache在我的系统上支持了php,.net等环境,由于apt更新的时候mod_php5和mod_mono好像无法共存,所以我使用fastcgi来支援php,其实采用fastcgi也可以支援.net,不过官方还没给出apache的配置方法,我测试了下,也没能成功,所以只好先用mod_mono来跑了。有了fastcgi,一切就方便了,使用fastcgi可以轻松支持php,python,perl,ruby,大大减少apache加载模块。
配置安装环境,首先使用apt-get方式装上apache2,以及想装的其他mod,然后
sudo apt-get install mono*
把和mono有关的都装了把,一劳永逸,也不用省那么点空间了。由于安装了mono,系统默认卸载了mod_php5,因此再至少需要
sudo apt-get install php-cgi
同时你可以需要安装一些常用php模块,如php-mysql,php-mssql,php-pgsql,php-sqlite如果不知道有哪些包可以选择,可以在“新立得包管理器”中搜索php
装好了这个然后来装Mysql服务器,主要就是和mysql相关的包。
但是ubuntu使用apt-get方式安装mysql有一个bug,它无法创建系统默认数据库,因此会导致安装失败,由于我需要将windows上mysql的数据库转移到这个系统上,所以我直接将window下mysql的数据库文件复制到了/etc/mysql/my.cnf中配置的数据库目录/var/lib/mysql下,然后执行安装,则可以成功安装。
ok,下面进入重头戏的apache配置,我们打开当前虚拟主机的配置文件sudo gedit /etc/apache2/sites-available/default 。
(注:本文仅为配置一个本地开发环境,并非web服务器,因此并没有完善的安全措施,如果要配置一台服务器,下面的配置将让您的服务器变得十分危险。)
首先配置php环境:
1。开启fastcgi支持,建立文件夹 sudo mkdir /var/fcgi-bin在配置文件中新增:
- ScriptAlias /fcgi-bin/ "/var/fcgi-bin/"
- <Directory "/var/fcgi-bin/">
- Options ExecCGI
- SetHandler fastcgi-script
- AllowOverride None
- Options None
- Order allow,deny
- Allow from all
- </Directory>
2.建立php-cgi的链接 sudo ln /usr/bin/php-cgi /var/fcgi-bin/php-cgi
3.修改执行权限 sudo chmod 777 /var/fcgi-bin/
4.新增php的fastcgi支持,在配置文件中新增
- FastCgiServer /var/fcgi-bin/php5-cgi
- AddHandler php-fastcgi .php
- Action php-fastcgi /fcgi-bin/php5-cgi
- AddType application/x-httpd-php .php
(注:如果您的服务器在添加了上面的部分之后无法启动,请检查/etc/apache2/mods-enabled目录下十分有actions.conf和actions.load文件没,如果没有这两个文件,系统就无法解析Action命令了,如果没有,可以sudo cp /etc/apache2/mods-available/actions* /etc/apache2/mods-enabled 将这两个copy进来。)
OK执行sudo /etc/init.d/apache2 restart
如果提示服务器成功执行,说明php配置完成,最后我们在默认的web目录/var/www下新建一个test.php文件,文件内容如下:
- <?php
- phpinfo();
- ?>
用ff浏览http://localhost/test.php,如果能出现php配置信息,则php配置大功告成。
下面开始配置Mono,安装mono的时候,系统应该已经将mod_mono加载到apache中了,因此只需要在配置文件中正确配置。
仍然是编辑刚才的default文件。加入:
- Alias /dotnet "/var/www/dotnet"
- AddMonoApplications dotnet "/dotnet:/var/www/dotnet"
- MonoServerPath dotnet /usr/bin/mod-mono-server2
- MonoPath dotnet /usr/lib/mono/2.0:/usr/lib:/usr/lib/mono/2.0
- <Directory "/var/www/dotnet">
- MonoSetServerAlias dotnet
- SetHandler mono
- </Directory>
非常容易就能让服务器支持.net了,这儿配置是支持.net2.0,如果要想支持.net1.1,清注释掉MonoPath这一行。
这儿配置Mono就像配置window下的虚拟目录一样,一个目录就是一个.net虚拟目录
如果要测试.net的执行情况,可以使用.net探针来查看,本文最后将提供一个开源.net探针下载。
到此为止,web环境基本配置完成。然后使用MonoDevelop拿出以前的.net项目,重新编译,然后发布在apache的.net目录,发现Linux下的.net和windows上还是有稍微的差别的,这也是因为操作系统的差别造成的,在此总结下.Net夸平台开发的几点建议:
1.由于linux下路径严格区分大小写,保持路径引用大小写一致,由于windows不分大小写,因此经常程序也不大在乎这些,导致程序在.net下执行失败,建议整个程序中路径和web页面名一致只采用小写字母+下划线形式
2.windows下路径间隔/和\都认,默认为\但是linux下系统路径间隔只能是/,由于这个问题很多牵涉到路径的程序在linux下都难得跑起来,解决方案有两个,一可以都只使用/反正windows也支持,二是写个专门的函数统一比如:
- public static string FormatRealPath(string path)
- {
- #ifdef WINDOWS
- return path.Replace('/','\\');
- #else
- return path.Replace('\\','/');
- #endif
- }
这样,在不同平台来用宏来配置。更好的方式是运行时判断系统。
3.关于程序集的问题,建议在mono环境下重新编译所有程序集。
4.发现某些程序可能导致mod-mono-server2死掉,出现503错误,目前估计没解决方案,建议方案就是尽量照上面几条写程序,以尽可能少减少这样情况,如果出现了,则只能重启apache了。
不得不佩服mono的开发者,目前Mono对.net2.0的支持基本上是完美了(除了Windows.Forms以及一些和系统关联太大的),可以说开发windows和linux通用的asp.net程序已经不是异想天开了。
最后提供一个开源asp.net探针

发大水啦~~~~ 淹死你~~~~~
-- 引用完毕 --
一看就知道现在你很无聊...
上一篇
下一篇
文章来自:
Tags: