CentOS MONO nginx 运行

发布时间:2019-09-05 07:17:12编辑:auto阅读(1777)

       昨天做了个部署.net On linux的测试,今天调试成功。

        部署环境:
      CentOS6.2 X86-64
        libgdiplus-2.10
        mono 2.10.8
        xsp-2.10
        nginx1.2.7
        第一步:安装必要的软件包
         yum install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel
                     libtiff-devel libexif-devel giflib-devel
                     libX11-devel freetype-devel fontconfig-devel cairo-devel
         (如果编译的过程中提示你需要什么依赖的话,再安装吧,这样差不多了)还有个openssl-devel得装,因为需要安装pcre软件(nginx需要它)。如果你是最小化安装Linux,那么还得安装yum install  wget unzip
        
        第二步:准备相应软件
       
        下载libgdiplus-2.10
       
        wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2

        下载mono2.10.8
       
        wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.bz2
        下载xsp-2.10
        wget http://download.mono-project.com/sources/xsp/xsp-2.10.tar.bz2

        下载pcre
        wget  ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.zip

        下载Nginx
        wget  http://nginx.org/download/nginx-1.2.7.tar.gz

     --------------------割一下---------------------------
        第三步:安装
        先安装libgdiplus-2.10
        tar jxvf  libgdiplus-2.10.tar.bz2
        cd   libgdiplus-2.10
        ./configure --prefix=/opt/mono
        make
        make install
        安装mono
       
       tar -jxvf mono-2.10.8.tar.bz2
       cd mono-2.10.8
       ./configure --prefix=/opt/mono
       make  (这一步时间相当长)
       make install
       更改环境变量
       回到安装用户的家目录:cd  ~
       在家目录下编辑.bash_profile文件
       vi  .bash_profile
       在最后面加入:
       PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig
       LD_LIBRARY_PATH=/opt/mono/lib
       PATH=/opt/mono/bin:$PATH
       export PKG_CONFIG_PATH LD_LIBRARY_PATH PATH

       保存退出
       vi /etc/ld.so.conf
       在最后加入/opt/mono/lib
       上面这步我有点晕,这个操作是把mono的lib加到全局lib中,而上面那个环境变量LD_LIBRARY_PATH=/opt/mono/lib
       也是同样目的,在ld.so.conf中找不到的话,就在LD_LIBRARY_PATH=/opt/mono/lib中找,是不是重复了??
       先不管这些,继续。
       操作完之后,要让系统这次参数生效有两个办法:
       第一:. ./.bash_profile(在家目录执行次命令)
            ldconfig(任意地方执行次命令,目的:加载lib)
       第二:logout注销用户,重新登录
      
       如果你的环境变量生成好了,那么输入mono -V查看mono版本
       如果正确显示版本,那么说明安装无误。
      
       安装xsp-2.10
       tar jxvf  xsp-2.10.tar.bz2
       cd xsp-2.10
        ./configure -prefix=/opt/mono
       make
       make install

       安装pcre
       unzip  pcre-8.32.zip
       cd  pcre-8.32
       ./configure --prefix=/usr/local/pcre
       make 
       make install

       按理说这样就ok了,可是,出问题了。问题在下面...

       安装nginx
       tar zxvf nginx-1.2.7.tar.gz
       cd  nginx-1.2.7
       创建用户和组:
       useradd www
       ./configure --prefix=/opt/nginx  --user=www --group=www --with-http_stup_status_module --with-http_ssl_module --with-pcre=../pcre-8.32
       make
       make install
       亮点在绿色部分,绿色的参数表示的pcre解压目录,nginx要的是它的解压目录。那我上面为啥还有编译安装pcre呢?
       我怕在这一步出错,编译安装下试试,看看能不能通过。果然,缺少openssl支持。yum install openssl-devel就可以了。
       我把/usr/local/pcre删除掉。rm -rf /usr/local/pcre
      把nginx的sbin加入到环境变量:
      vi .bash_profile
      PATH=/opt/mono/bin:$PATH改成PATH=/opt/nginx/sbin:/opt/mono/bin:$PATH就ok了。

    第四部:修改配置文件
          修改/opt/nginx/conf/nginx.conf
          server {
            listen       80;
            server_name  localhost;
            location / {
                root  /data/web;
                index  index.html index.htm;
                #fastcgi_index Default.aspx;

                fastcgi_pass  127.0.0.1:9000;
                include   /opt/nginx/conf/fastcgi_params;
            }

            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
           红色部分是修改的地方。
           修改/opt/nginx/conf/fastcgi_params
           在最下面一行加入:
           fastcgi_param  PATH_INFO          "";
           fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
           这两处修改用来让nginx支持.net MVC

           好了,保存退出。
           创建文件夹/data/web上面参数我自定义的,习惯的话就把目录改成/var/www/html好了,呵呵。

          启动nginx
          /opt/nginx/sbin/nginx
          如果上面修改的nginx环境变量生效直接输入nginx启动。
          然后启动fastcgi
          fastcgi-mono-server2 /applications=www.domain1.xyz:/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000
          上面那个启动了是不是到后台了,如要需要在后台跑,加个 &
    第五步:测试
          cd /data/web
          vim test.aspx
          输入内容:<%="HelloWorld!"%>保存退出。
         在浏览器输入:ip/test.aspx看看跑起来了吗?

         nginx重启:nginx -s reload
         nginx关闭:ps -ef |grep nginx
                    kill -9   nginx的进程

         fastcgi关闭同上。
       -----------------说明-------------------
       如果跑MVC3,需要用fastcgi-mono-server4
      

关键字