在FreeBSD上边使用.net环境
最近有需要在FreeBSD上边运行.net的web环境,早以久仰mono大名,如是去到它的官网(http://mono-project.com/)大致的研究了一下.
也动手尝试了一下,还好比较简单,做笔记如下:
首先在FreeBSD上边安装Apache:
cd /usr/ports/www/apache22 make install clean
然后再安装mono:
cd /usr/ports/lang/mono make install clean
再安装mod_mono:
cd /usr/ports/www/mod_mono make install clean
网上有些资料说还要安装xsp,但这个时候用pkg_info查看的时候,其实xsp已经装上了.
现在就是对mono进行配置,使apache支持它.
使用port安装mod_mono的时候,会自动在:
/usr/local/etc/apache22/Includes
位置生成mod_mono.conf文件,它的内容是:
more /usr/local/etc/apache22/Includes/mod_mono.conf
# mod_mono.conf # Achtung! This file may be overwritten # Use 'include mod_mono.conf' from other configuration file # to load mod_mono module. LoadModule mono_module /usr/local/libexec/apache22/mod_mono.so Header set X-Powered-By "Mono" AddType application/x-asp-net .aspx AddType application/x-asp-net .asmx AddType application/x-asp-net .ashx AddType application/x-asp-net .asax AddType application/x-asp-net .ascx AddType application/x-asp-net .soap AddType application/x-asp-net .rem AddType application/x-asp-net .axd AddType application/x-asp-net .cs AddType application/x-asp-net .vb AddType application/x-asp-net .master AddType application/x-asp-net .sitemap AddType application/x-asp-net .resources AddType application/x-asp-net .skin AddType application/x-asp-net .browser AddType application/x-asp-net .webinfo AddType application/x-asp-net .resx AddType application/x-asp-net .licx AddType application/x-asp-net .csproj AddType application/x-asp-net .vbproj AddType application/x-asp-net .config AddType application/x-asp-net .Config AddType application/x-asp-net .dll DirectoryIndex index.aspx DirectoryIndex Default.aspx DirectoryIndex default.aspx
在apache配置文件httpd.conf中加入如下内容:
Include /usr/local/etc/apache22/Includes/mod_mono.conf
好,所有的配置完成.现在做一个测试页面来测试一下.
ee /usr/local/www/apache22/data/test.aspx
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.UI" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { Response.Write("<center><h1>Hello world~</h1><br />Hello mono~</center>"); } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>test page</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
后用浏览器打开看看,如果显示:
Hello world~
Hello mono~
嗯,那就是配置成功了.
更新(201208141705):
为了提升服务器安全,今天在那台FreeBSD服务器上边新增加一个权限级别更低的用户,然后在Apache里边把它作为User和Group,然后重新启动Apache,测试其它的页面均没有问题,但aspx的始终无法启动,查看httpd-error.log,里边有两行如下:
[Tue Aug 14 08:48:57 2012] [error] /tmp/.wapi: Operation not permitted
[Tue Aug 14 08:48:59 2012] [error] Failed to connect to mod-mono-server after several attempts to spawn the process.
然后看了下/tmp/.wapi目录属性,嗯,新用户没有权限.那明白了.用chown -R给一下权限就OK了.
我用的是apache20,不是apache22,不知可不可以,有空我也测试一下!
“用chown -R给一下权限就OK了”,具体是给哪个权限?apache吗?
我也遇到了这个错误,麻烦您解释一下好吗
运行一下:
chown -R newuser:newusergroup /tmp/.wapi
newuser为你的用户名
newusergroup为你的用户所在的组.
这个错误的提示是apache的进程没有权限,所以把apache中的启动用户权限加入到这个文件夹中就行了.