Nginx+Mongrel+Rails 3.0+Windows部署發布

來源:互聯網
上載者:User

    偶知道大家都不提倡在windows下進行rails的開發,更不提倡在windows下進行rails的部署。。。。

但是有個項目確實存在這個需求,既然平台因素無法忽略,就只好逆天而行了…

 

    思路:Nginx實現前端(有人說nginx在windows下效能不穩定,會出現各種莫名奇妙的問題,汗~~), 提供SSL單向和雙向認證(針對不同的用戶端提供不同的認證方式…),提供靜態頁面、圖片、js、css檔案, 其餘代理到後端的mongrel.(部分功能未實行,發布時也是以developmen模式發布的)

          Mongrel後端伺服器(為什麼passenger沒有windows版的, mongre_rails竟然還不支援rails 3.0, 感覺自己嘗試的時候特悲劇)

 

    步驟:1. mongrel安裝

             2.為mongrel啟動rails註冊服務

             3.下載nginx,並註冊服務

             4.配置nginx,實現SSL單雙向認證和代理功能

 

    一、Mongrel安裝

gem install mongrel 

 

    二、為mongrel啟動rails註冊服務

      1. 下載微軟的2個工具: instsrv.exe、srvany.exe, 細節參考 三、下載nginx,並註冊服務

       2.為rails啟動書寫一個rails.bat檔案,內容如下:

cd D:\WEB_APP\SVNMSC:\ruby187\bin\rails s -p 3003 -b 127.0.0.1

  #-b 127.0.0.1 只綁定127.0.0.1,限定只能本機訪問,由於前端nginx也是在本機運行,意思是僅運行nginx直接存取, 外部使用者只能通過nginx才能訪問        

      3. 為rails.bat註冊服務,細節參考 三、下載nginx,並註冊服務

        4. SVNMS.reg檔案內容如下:

Windows Registry Editor Version 5.00  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SVNMS]  "Description"="SVN Manager Sysetem: D:\\WebApp\\SVNS\\rails s -e development""DisplayName"="SVNMS"      [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SVNMS\Parameters]  "Application"="D:\\WEB_APP\\rails.bat""AppParameters"="""AppDirectory"="D:\\WEB_APP\\SVNMS"     

    三、下載nginx,並註冊服務

       1. 下載nginx windows版本 http://www.nginx.org

       2. 下載微軟的2個工具: instsrv.exe、srvany.exe
        去微軟網站下載安裝Windows Server 2003 Resource Kit Tools(rktools.exe),它包括標題提及的所有必要的工具,下載完安裝好。

       3. 運行命令
          在rktools安裝目錄下(一般在C:\Program Files\Windows Resource Kits\Tools目錄)可以發現這兩個程式.在運行下面命令之前,確保將instsrv.exe、srvany.exe複製到nginx的安裝(解壓)目錄下,然後運行:

instsrv NGINX c:\nginx\srvany.exe  #註冊服務

3.在c:\nginx\下,編輯一個nginx.reg檔案
         

Windows Registry Editor Version 5.00  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NGINX\Parameters]      "Application"="C:\\nginx\\nginx.exe"     "AppParameters"=""      "AppDirectory"="C:\\nginx\\"  

參數解釋:Application:exe或bat檔案的絕對路徑
             AppParameters: 運行參數
             AppDirectory:工作目錄,就是工作時目前的目錄

4.讓服務與程式關聯起來, 命令列執行

regedit /s nginx.reg  

5.編輯啟動nginx指令碼start-nginx.bat(關閉指令碼不用變), 讓程式以服務方式運行
   

@ECHO OFF      net stop nginx      net start nginx      EXIT  

6.刪除服務

sc delete SVNMS

 

補充:但是,當停止Nginix服務後,訪問瀏覽器仍然能看到網站。查看進程,你會發現,Nginx啟動了兩個nginx進程(根據nginx.conf的配置worker_processes ,Fork出來的進程顯然沒有被停止,結果就是nginx永遠關不掉。因此徹底關閉nginx請使用taskkill命令:

taskkill /F /IM nginx.exe > nul

結果是寫一個stop_nginx指令碼來處理nginx停止的所有操作

@echo off   echo Stopping nginx service... net stop nginx   echo Kill nginx process...   taskkill /F /IM nginx.exe > nul

 

    四、配置nginx,實現SSL單雙向認證和代理功能

server {        listen       8083;        server_name  liuwm-pc@grandsoft.com.cn;        root D:/www-date/public;        location / {            root D:/WEB_APP/SVNMS/public;                        #proxy
         proxy_set_header Host $host:8083;            proxy_set_header X-Real-IP $remote_addr;            proxy_set_header X-Forwarded-For $remote_addr;            proxy_pass http://127.0.0.1:3003/;                        proxy_set_header X-Forwarded-Proto https;            proxy_redirect off;        }        #SSL        ssl on;        ssl_certificate  E:/nginx/nginx-1.1.7/ssl/server.crt;        ssl_certificate_key  E:/nginx/nginx-1.1.7/ssl/server_no.key;        ssl_client_certificate E:/nginx/nginx-1.1.7/ssl/ca.crt;               error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }

  

參考:windows下nginx+mongrel配置

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.