Ubuntu Server Nginx 下配置 mono 下运行 asp.net mvc
OS: Ubuntu 9.10
WebServer: Nginx 0.7.62 + mono-fastcgi-server2
environment: movo 2.05 + asp.net 2.05 + asp.net mvc 1.0
DbServer: MySql Server 5.1
以下是步骤:
1.安装Ubuntu 9.10(废话)
2.安装Mono(由于Ubuntu 9.10已经内置了最新版的Mono,所以这一步省了)
3.安装Nginx
sudo apt-get install nginx
4.安装fastcgi-mono-server
sudo apt-get install mono-fastcgi-server2
5.配置Nginx
a.以root进入/etc/nginx
b.用gedit打开nginx.conf
c.在文件中的http节点最后添加:
server {
listen 80;
server_name localhost;
location ~ {
root /ver/www; #网站的根目录
index Default.aspx default.aspx index.aspx Index.aspx index.html index.htm default.htm;
fastcgi_pass 127.0.0.1:9000; #fastcgi要监听的端口号,与后面mono-fastcgi-server2要监听的端口号要一至
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
d.到网站根目录,将/etc/nginx/sites-enabled下的default文件复制过去(其实是链接过去的)
e.打开default文件(以root),在其中的server节点下添加以下内容(就是上面的location节点):
location ~ {
fastcgi_pass 127.0.0.1:9000; #fastcgi要监听的端口号,与后面mono-fastcgi-server2要监听的端口号要一至
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location / {
root /ver/www; #网站的根目录
index Default.aspx default.aspx index.aspx Index.aspx index.html index.htm default.htm;
}
f.打开/etc/nginx下的fastcgi_params文件,在最后加入以下内容(这个一定要加,不然mvc的路由功能就不起作用):
fastcgi_param PATH_INFO "";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
g.至此nginx就算配置完了.
6.启动Server
a.nginx
sudo /etc/init.d/nginx start 或 restart
b.mono-fastcgi-server2(很奇怪,安装的时候和用的时候的名字是相反的), 下面/socket是监听的端口, /address是本机IP, /application是站点相对路径和相对应的程序的
sudo fastcgi-mono-server2 /socket=tcp:9000 /address=127.0.0.1 /applications=/:/var/www
c.浏览器中输入http://localhost这时你程序程应该就能跑起来了.
7.配置web.conf以使用MySql作为数据库
a.打开web.config
b.在前加入以下内容:
<system.data>
<DbProviderFactories>
<clear />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
</DbProviderFactories>
</system.data>
c.这样你就可以在asp.net中使用MySql作为数据库了,MySql.Data.dll可以到MySql网站中下载,这里就不细说了.
8.如果你使用MySql中的MermberShip Provider作为你站点的用户管理, 那你的程序可能还不能正常去行, 因为Mono现在还不提供Hased的密码加密方式,所以你需要用到encrypted.
a.将web.config中的memberShip > providers > add节点中的passwordFormat的值改为encrypted
b.在<system.web>节点下加入以下内容, 其中的键值你也可以用别的:
<machineKey validationKey="B6AF9388159183B6A8EE690C851398A11997C519F859599459E30121EF4DF8BF2B1666B
C82BB6FEB2FEF279BEB325E897AED6EA5B71C55D213B76510EF96CAA8" decryptionKey="3C5EF273A20ED2473594C9691627700A79376A7C1455320A" validation="SHA1" />
c.这样你的程序就可以使用MySql的MemberShipProvider了.