前言
在我上一篇博文“在 Linux 操作系统中运行 ASP.NET 4 (下)”中讲述了如何在 openSUSE 11.3 操作系统中使用 Apache 2.2.15 运行 ASP.NET 4。虽然说 Apache 是目前最流行的 HTTP 服务器,但是 Nginx 作为高性能的 HTTP 和反向代理服务器,目前已经得到越来越广泛的应用。国外的网站如 Ohloh、GitHub、SourceForge 等,国内网站如新浪、网易、腾讯等,都已经部署了 Nginx。所以,让我们也在 openSUSE 操作系统中部署一个 Nginx 来运行 ASP.NET 4 吧。
openSUSE 静态网络地址配置
在前一篇博文中,是在我家里的 Dell 本本上的 Windows Vista 操作系统中使用 Oralce VM VirtualBox 4.0 来运行 openSUSE 11.3 虚拟机,当时我家里的 TP-LINK 宽宽路由器提供了 DHCP 服务,可以自动获得网络地址。而现在是我工作单位的一台 Lenovo 台式机上运行着 Ubuntu 10.10 操作系统,使用 Oracle VM VirtualBox 4.0 来运行 OpenSUSE 11.3 虚拟机。此时没有 DHCP 服务,只能使用静态网络地址。在 openSUSE 11.3 操作系统配置静态网络地址的方法如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/68c4a48bc28840a48946c5d5b498daf4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4b7f989c7ea7272ab2bb2357569f53b5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/49fa508349b5dce37659f1c30a3d391f.png)
上述步骤的作用是:
- 修改 /etc/sysconfig/network/ifcfg-eth0 文件,将文件中第 1 行的 BOOTPROTO='dhcp4' 改为 'static',即使用静态网络地址。然后增加第 2 到第 4 行,分别设定 IP 地址为 10.2.31.15、广播地址为 10.2.31.255、子网掩码为 255.255.255.0。
- 新增 /etc/sysconfig/network/routes 文件,设置网关为 10.2.31.254。
- 修改 /etc/sysconfig/network/config 文件,设置 DNS 服务,直接设为 Google 提供的免费 DNS: 8.8.8.8。
然后使用以下命令更新网络设置和重新启动网络服务:
然后使用以下命令在 /etc/hosts 文件中增加 ben.skyiv.com 的域名。注意这里 IP 地址必须是 127.0.0.1。
![](https://i-blog.csdnimg.cn/blog_migrate/624b448d933ea5b4075e3bc74e47b031.png)
在宿主机的 Ubuntu 10.10 操作系统的 /etc/hosts 文件中也增加一个 ben.skyiv.com 域名,指向 10.2.31.15,即运行 openSUSE 11.3 操作系统的客户机的静态网络地址。
![](https://i-blog.csdnimg.cn/blog_migrate/b5659bd6928a9b611f4a0e83b465c13e.png)
停止 Apache 服务
使用以下命令停止 Apache 服务,并禁止 Apache 服务开机自动启动:
安装 Nginx
首先使用以下命令添加 Nginx 所在的安装源到软件仓库,然后更新软件仓库:
注意在更新软件仓库时要回答“a”表示总是信任这个安装源。然后例行地更新一次软件包:
意外发生,居然进行了漫长地更新,看一下具体信息,原来是升级 mono 2.8.2。赶紧到 mono 官方网站的下载页面去看看,果真发布了新的 mono 2.8.2 版本。
现在可以使用以下命令安装 Nginx :
安装过程非常快,因为只需下载 381 KB 的文件,可见 Nginx 是多么的小巧了。
启动 Nginx
首先使用以下命令启动 Nginx,并让 Nginx 开机时自动运行:
这时,Nginx 已经可以正常使用了。让我们在宿主机的 Ubuntu 10.10 操作系统中访问客户机 openSUSE 11.3 操作系统中的 Nginx 吧,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/a22797914ef6878ac84b653bac6397dc.png)
我们知道,openSUSE 操作系统默认情况下网站的内容是在 /srv/www/htdocs 目录下,因此上图中显示的是 Nginx 安装时生成的 /srv/www/htdocs/index.html 文件的内容,如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/d167f0cb6a905c66973af0c8b70fe8e8.png)
现在让我们输入一个不存在的 URL: http://ben.skyiv.com/none,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/8ed486641aede504edcf8556d954a699.png)
如我们所料地出现了“404 Not Found”错误。页末显示 Nginx 的版本为 0.8.54,这已经最新的稳定版了。
配置 Nginx 以运行 ASP.NET 4
Nginx 的配置文件是 /etc/nginx/nginx.conf,让我们修改这个文件,加上自己的网站吧:
![](https://i-blog.csdnimg.cn/blog_migrate/7e02bf8166eb209e17a4585ff5080d38.png)
注意 /etc/nginx/nginx.conf 文件中第 89 行 fastcgi_index 后面只能跟一个参数,指明在 ASP.NET 网站的主目录的默认页面文件是什么,我在这里指定为 index.html,有些人也可能会喜欢用 default.aspx 代替。
![](https://i-blog.csdnimg.cn/blog_migrate/f804aa251a6ea4973f2a0d102b10d9b7.png)
上图中已经是完整的 /etc/nginx/fastcgi_params 文件,其中最后三行是我添加的。
![](https://i-blog.csdnimg.cn/blog_migrate/ac6f6f98a0440e33d3a5045be23d525a.png)
这个 /etc/init.d/nginx 就是 Nginx 启动、停止、重启等的脚本文件,其中第 178 行到第 179 行中我添加的,以便使 Mono FastCGI 服务随同 Nginx 一起启动。
最后,不要忘记重启 Nginx 服务,使我们修改的配置生效:
运行 ASP.NET 4
已经一切就绪,可以在宿主机的 Ubuntu 10.10 操作系统上来访问运行于 openSUSE 11.3 操作系统中 Nginx 上的 ASP.NET 4 网站了:
![](https://i-blog.csdnimg.cn/blog_migrate/41303d954d5931f50406493014e06211.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ffd16ef3a77cbf5a9a27a3eea934529b.png)
可以看到,一切正常。对了,这个网站的源程序请参阅我的上一篇博文:“在 Linux 操作系统中运行 ASP.NET 4 (下)”。如果在浏览器中输入一个不存在的网址,就会得到以下结果:
![](https://i-blog.csdnimg.cn/blog_migrate/97b062a1bd9ff33772ba1b2c20ee2905.png)
这个“The resource cannot be found”错误是预料之中的。从上面这个网页的末尾可以看出,这个网站使用 mono 2.8.2 来运行 ASP.NET 4.0.30319.1。