linux上跑aspx(apache + mono)

来源:互联网 发布:洗头发 知乎 编辑:程序博客网 时间:2024/06/08 10:15

环境

centos6.0 + apache2.2.21 +mono2.6 + mod_mono2.6.3 + xsp2.6.3

apache安装

去http://httpd.apache.org/download.cgi下载 apache的 unix版本

切换roo用户

su root

解压 tar文件

tar -zxvf  或者 -jxvf

cd进解压后的文件夹

./configure --prefix=安装到的路径  //这个路径可以省略,默认安装到/usr/local/apache2

make

make install

cd 到安装后的文件夹 ,进入到bin文件夹 执行命令 启动apache

[root@localhost bin]# apachectl start

在浏览器中输入地址 http://localhost/ 或者 http://127.0.0.1/  能看到apache的羽毛标志,表示正常启动来。

设置apache自动启动:

简单的方式是在shell下 用ntsysv命令 选择httpd 确定就好了

还有种方式是把httpd添加到linux服务中,这种方法我没有试过,

在redhat、红旗等版本的Linux中启动脚本放在 /etc/rc.d目录中,名称是:rc.local。而SuSe版本的Linux启动脚本是放在/etc/init.d目录中,名称 boot.local.

例如:apache、mysql自动启动

在红旗、radhat等Linux中如下

#cd /etc/rc.d

#vi rc.local

在rc.local加入:

/usr/local/apache/bin/apachectl start

/usr/local/mysql/bin/mysqld_safe --user=mysql

在SuSe中如下

#cd /etc/init.d

#vi boot.local

在rc.local加入:

/usr/local/apache/bin/apachectl start

/usr/local/mysql/bin/mysqld_safe --user=mysql

添加为Linux的服务:

Apache安装路径为:/usr/local/apache
Linux的启动级别为5,版本为Linux AS4
Apache安装完后,发现Apache无法自动启动,查看/etc/rc.d/rc5.d/下,应该没有S打头,httpd结尾的链接文件。
1、将apachectl文件拷贝到/etc/rc.d/init.d 中,然后在/etc/rc.d/rc5.d/下加入链接即可。
命令如下:
cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd  //如果有其他的版本的Apache存在,也可以直接覆盖掉
ln -s /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S85httpd      //建立链接(85的意义后面介绍)
此时Apache就可以自动启动了。
2、运行chkconfig --list,发现没有linux服务列表中httpd,通过chkconfig --add httpd来添加,但是提示:httpd服务不支持 chkconfig。需要编辑/etc/rc.d/init.d/httpd,添加以下注释信息:
# chkconfig: 345 85 15
# descrīption: Apache
第一行3个数字参数意义分别为:哪些Linux级别需要启动httpd(3,4,5);启动序号(85);关闭序号(15)。
保存后执行:chkconfig --add httpd,成功添加。
在rc3.d、rc4.d、rc5.d路径中会出现S85httpd的链接文件,其他运行级别路径中会出现K61httpd的链接文件。
3、运行chkconfig --list,httpd在其中。

 mono 安装

下载mono 的linux版本,解压安装到 /usr,我用的是mono2.6

 在configure mono的时候提示 need at least  glib2.0 2.4 , 需要安装编译环境

yum install gcc bison pkgconfig glib2-devel gettext make httpd-devel gcc-c++ libstdc++-devel

安装完mono 后,配置环境变量,如果没有配置环境变量,在安装xsp的时候会报找不到mono的错误

cd到mono的安装目录下

/*opt/mono是mono的路径*/

echo export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig:$PKG_CONFIG_PATH>>~/.bash_profile
echo export PATH=/opt/mono/bin:$PATH>>~/.bash_profile
source ~/.bash_profile

测试mono

在shell中

 mono -v 版本信息

mono-test-install 测试输出

xsp安装

下载安装到  就可以

XSP在configure的时候要么不指定--prefix,要么指定为/usr/local
假如指定--prefix=/usr,就会造成
mod_mono装在了/usr/local/lib和/usr/local/bin下
而xsp装在了/usr/lib和/usr/bin下
导致了xsp的mod-mono-server.exe和mod-mono-server2.exe没有安装在mod_mono的lib/mono/1.0和lib/mono/2.0目录中
最终导致aspx文件不能被解析,在apache的log中可以看到:mod_mono找不到mod-mono-server(2).exe的错误。

mod_mono安装

下载安装到 /usr/local 就可以

在/usr/local/apache2/conf/httpd.conf

在最上面加上
Include /usr/local/apache2/conf/mod_mono.conf
这个mod_mono里面包含了 我们需要的httpd.conf的配置 所以Include就好了

测试asp.NET把xsp解压后的文件夹下 有个tes文件夹,复制到/var/www/

修改apache的配置文件在/etc/httpd/conf/下 httpd.conf

在最后添加

Listen 8080

NameVirtualHost *:8080

<VirtualHost  *:8080>

DocumentRoot  /var/www/test/

DirectoryIndex  index.aspx

ServerName aspx.yoursit.com

</VirtualHost>

在防火墙上 开启8080端口,打开firfox 地址栏 http://127.0.0.1:8080/  看看测试正常