• Mono 之 Nginx


       在Linux上部署网站需要先安装Web服务器端软件,IIS只能在windows上使用,相对的我们可以选择著名的apache、Ngnix等。本文将简单Nginx的安装、配置以及利用其运行一个简单的Asp.net 网站。

    Nginx

        Nginx (Engine X)是一个高性能的Web服务器,由于其稳定、功能丰富、低资源消耗等特点,已经有很多网站利用它进行部署(国内不少大公司开始利用nginx 取代 apache,毕竟LAMP 太教条化了)。

    Nginx安装

      本文将从源码开始安装nginx 目前最新版为 1.2.0,所有的安装过程都是在Ubuntu操作系统下进行的。

    首先下载源码:

     wget http://nginx.org/download/nginx-1.2.0.tar.gz

    然后解压

    tar -zxv -f nginx-1.2.0.tar.gz

    进入解压的目录后接着执行

    ./configure

    碰到了 PCRE Library 没有安装的问题

    利用  apt-get install libpcre3 libpcre3-dev 命令安装PCRE库

    再次运行./configure  发现缺乏Http gzip模块

    执行 :apt-get install libssl-dev 安装对应的模块。

    再次运行./configure 

     

    接着依次运行

    make
    
    make install

    这样就完成了Nginx的安装,默认安装在/usr/local/nginx下。

    使用以下命令启动Nginx

    /usr/local/nginx/sbin/nginx

    测试Nginx 

    Nginx默认以Deamon进程启动,输入下列命令测试是否启动成功:

    curl -i http://localhost/

    成功安装后会得到以下结果:

    如果出现以上信息,恭喜你Nginx 安装成功。

    如果想停止运行Nginx可以利用以下命令:

    /usr/local/nginx/sbin/nginx -s stop

    配置Nginx

        nginx的配置文件是纯文本文件,主配置文件默认放在安装目录下的conf文件夹中。conf下有很多的配置文件,其中nginx.conf为主配置文件。整个配置文件以block的形式组织,每一个"{}"及其内容就代表一个block.block可以分为几个层次,整个配置文件中main指令位于最高层,在main层下面可以有Events、HTTP等层级,而在HTTP层中又包含有server层,即server block,server block中又可分为location层,并且一个server block中可以包含多个location block.

     

     打开配置文件在 Http 配置块内添加:

    include /usr/local/nginx/conf/monotest.conf;

    说明:这里利用 include 命令 将虚拟主机Server 节的配置移动到单独的文件中方便管理,空格后面紧跟的是文件路径。(不要忘记分号“;”).

    Monotest .conf 的配置如下:

    server{
        listen 8001;
        server_name localhost;
    
        location   / {
        root /home/ubuntu/www/monotest/;
        index default.aspx Default.aspx;
        fastcgi_index Default.aspx;
        fastcgi_pass 127.0.0.1:9001;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /usr/local/nginx/conf/fastcgi_params;
                        }
    
    }

    server 表示我们配置的虚拟主机,listen 指定服务监听的端口(通常为80 ),这里我们指定为8001;server_name用来指定IP地址或者域名,多个域名之间用空格分开;

    location 可以用于匹配URL,其语法为location [=|~|~*|^~] /uri/ { … }

    • location  / { 匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。
    • location =/ {} 仅仅匹配/
    • location ~* \.(gif|jpg|jpeg)$ {} 不区分大小写匹配任何以gif,jpg,jpeg结尾的文件

    root 表示站点的路径;index  表示配置的默认页。

    fastcgi_pass  ,表示FastCgi服务启动时所采用的地址

      Nginx并不直接支持外部程序到调用或解析(IIS 则可以直接调用IASPI进行扩展),需要通过FastCGI接口来调用。在Linux下FastCGI利用的是Socket,所以我们需要指定地址和绑定端口。

    启动站点

      启动站点需要分别启动nginx 和 fastcgi服务。

    首先启动nginx 输入文章开始的 /usr/local/nginx/sbin/nginx 命令如果没有其他提示表示运行成功(Linux的哲学啊!),接着启动fastCgi 

    su nohup fastcgi-mono-server4 /applications=/:/home/ubuntu/www/monotest/    /socket=tcp:127.0.0.1:9001 &

    nohup ....  &  表示让程序在后台运行。

    fastcgi-mono-server4  针对的是 mono/.net 4.0   fastcgi-mono-server2 命令针对的是 mono/.net2.0 版本。

    /application 参数用于指定虚拟路径和物理路径见的映射,"/: " 表示映射到根路径,可参考:http://www.mono-project.com/FastCGI

    /socket 指定地址和端口。

    命令成功运行后会提示:

    nohup: 忽略输入并把输出追加到"nohup.out"

    新建简单网站

        打开Monodevelop新建一个简单的asp.net 网站,在项目模板张选择“C#”-》“ASP.NET”-》“Web application”。

    将项目名称命名为“monotest”.

       网站只是用于测试nginx的配置,无需做太多的设计,使用项目模板的默认生成即可。

      右击项目,选择命令“工具”-》“Deloy to web”:

     点击“Edit targets” 按钮,然后在弹出的“工程选项”窗口左栏 找到 “部署”-》“Web deloyment target”

     

     点击 “Add” 在弹出的窗口中填写好要保存的目标路径即可。最后将发布好的网站拷贝到上面server虚拟主机配置中指定的 路径中。

    运行效果

     

    后记:经过一番折腾总算是成功运行,目前还不知道性能如何,文章中只是点到了一部分和Mono相关的内容,Nginx、FastCGi 的很多配置也没有说明。

    nginx依赖的库

    1. gzip module requires zlib library 
    2. rewrite module requires pcre library 
    3. ssl support requires openssl library

    参考链接

    http://wiki.nginx.org/Chs

    http://kb.cnblogs.com/page/98352/

    http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html

    http://blog.sina.com.cn/s/articlelist_1834459124_0_1.html

    http://book.51cto.com/art/201202/314644.htm

  • 相关阅读:
    安卓开发环境的演变
    对软件工程实践课程的预定目标
    Angular4.0踩坑之路:探索子路由和懒加载
    Angular4.0踩坑之路:如何成功读取本地json文件
    Angular踩坑之路:在Angular中监听键盘事件
    Angular踩坑之路:初探Angular过程中的一些总结与记录
    Angular踩坑之路:初探webpack
    Angular踩坑之路:设置开发环境
    (Nodejs)安装教程、切换全局模块安装路径、切换npm下载源
    (ES、ik分词器)ES的分词器插件elasticsearch-analysis-ik
  • 原文地址:https://www.cnblogs.com/keyindex/p/2536843.html
Copyright © 2020-2023  润新知