Apache+mono+xsp搭建Linux下的asp.net平台

最近做项目需要用到在linux下搭建web服务器,虽然PHP很简单易行,但是前段时间一直看的微软asp.net,所以想尽办法在linux下搭建一个支持发布asp.net网页的平台。参阅了各种资料,现总结如下:

核心:利用开源项目mono来辅助linux内核搭建支持asp.net的平台

1.首先我们需要下载以下安装包:

apache(强大的web服务器开源软件,此处我们只需要它的httpd组件)

mod-mono(真正实现支持.aspx等文件的mono模块)

xsp(轻量级web服务器,此处我们只是利用它内部支持mod-mono-server的模块)

mono(开源项目基础安装)

下载地址:mono,mod-mono,xsp:

apache:

2.顺序安装以上软件包:

apache:

./configure

make

make install

mono:

./configure

make

make install

注意:在执行./configure后,可能会出现以下几个问题:

(1)错误:没有安装bison

解决方法:直接apt-get install安装bison,如果不行就去网上下载一个bison的软件包,手工执行./configure;make;make install来进行安装

(2)错误:不支持gettext

解决方法:更新源至科大debian源,然后直接apt-get install一般就可以了

make命令的执行时间会有十几分钟,耐心等待...

xsp:

./configure --prefix=/usr

make

make install

mod-mono:

./configure --prefix=/usr/local/

make

make install

3.配置httpd.conf

安装好了上述软件包并不代表我们的平台就搭好了,还需要修改apache的配置文件httpd.conf

vim /usr/local/apache2/conf/httpd.conf

(1)ServerName

修改网页发布的ip地址。作为测试,直接设置成本机地址就好了:

ServerName 本机ip地址:80

(2)网页访问权限

要让别的机器访问即将发布的网页,我们需要将 <Directory></directory>中的Deny from all改成Allow from all以便获得最大权限。当然如果考虑到安全性,可以另外设置,具体参见文章最后的参考资料

(3)使apache载入mod-mono模块

在配置文件开头增加如下语句可以让apache载入mod-mono模块:

Include /usr/local/apache2/conf/mod_mono.conf

(4)自定义asp.net应用

在配置文件末尾加入下列语句(#后为注释):


    MonoAutoApplication disabled    # 下面语句就是在手动设置mono应用,所以mono自动应用功能需要关闭
    AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd # 添加mono需要识别的文件类型,可以看到这些都是asp.net常用的文件类型
    Alias /test "/usr/lib/xsp/test" # 配置一个虚拟目录
    MonoApplications "/test:/usr/lib/xsp/test" # 配置上述虚拟目录对应的asp.net应用,此处利用的是xsp自带的实例网页代码
    MonoServerPath /usr/bin/mod-mono-server2   # 实际上apache能支持asp.net全是靠一个叫做mod-mono-server的服务器来实现的,此处就是确定使用mod-mono-server的版本(mod-mono-server仅支持asp.net,mod-mono-server2支持asp.net 2.0)
    MonoPath test "/usr/lib/mono/2.0:/usr/lib:/usr/lib/xsp/2.0"   # 告诉apache上述mod-mono-server2所在的路径
    <Location "/usr/lib/xsp/test"> # 配置上述实际应用
        MonoSetServerAlias test
        SetHandler mono
    </Location>

此时我们的httpd.conf配置文件就写好了,然后开启apache:

cd /usr/local/apache2/bin

./apachectl start

这时在浏览器地址栏输入:

本机ip地址/test

如果可以看到网页,那么恭喜你,第一步成功了...

为啥说第一步成功了?还有第二步吗?答案是:有

当我们试图点击网页上的menu或者gridview时,会发现网页报找不到gdiplus.dll的错误!

这是因为xsp这个例子中的网页要用到window下的一个动态链接库文件gdiplus.dll,而我们的linux当然没有!别急,我们可以在linux中添加功能相应的.so文件,步骤如下:

(1)find / -name libgdiplus.so

发现libgdiplus.so文件位于目录/usr/local/lib/,因此我们需要将此路径写入系统的ld.so.conf配置文件,否则即使存在,系统内核也不会发现这个动态链接库文件

(2)vim /etc/ld.so.conf 增加一行:include /usr/local/lib/libgdiplus.so

(3)执行ldconfig命令将新的动态链接库文件添加进ld.so.cache缓存以便mono需要的时候调用

(4)验证:如果输入命令ldconfig -p|grep libgdiplus.so 有结果,则证明配置成功。此时再次点击menu或gridview,发现问题解决了!

4.添加自己的asp.net网站

上面的xsp例子成功了,那我们如何添加自己的asp.net网站呢?方法和上面同理,只需要在httpd.conf中添加类似如下代码即可:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wygzwy.html