首頁 後端開發 php教程 nginx+unicorn部署ruby web環境

nginx+unicorn部署ruby web環境

Aug 08, 2016 am 09:23 AM
nbsp nginx ruby unicorn


    最近接手了一個ruby的web項目,由於之前沒有接觸過ruby以及相關的web開發,而且項目當中文檔缺失,所以在部署該項目的時候很是走了一些彎路最後參考多篇ruby on rails的開發環境部署,以及學習了下ruby當中的gem/bundler等的關係,成功部署專案。在這兒記一下,算是一個小的總結,也可以對ruby web開發剛入門部署環境時提供一個參考。
    我們的專案是基於padrino,如果是基於rails的項目,部署應該也是差不多的。

    1.安裝ruby

    由於系統中可能有多個ruby相關的項目,而不同的項目可能需要針對不同的ruby版本進行或測試,所以系統當開發中可能需要安裝多個ruby的版本。而這就需要對應的工具來管理已有版本和安裝新版本。我這兒選用的是rbenv,也可以用老牌的rvm。
     安裝rbenv
git clone git://github.com/sstephenson/rbenv.git  ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
登入後複製
新增ruby-build元件
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
登入後複製
新增gem-rehash元件
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
登入後複製
安裝ruby(以ruby2.1.5為例)
的文件,然後使用本地安裝的方式來安裝
wget -O ~/.rbenv/versions/ruby-2.1.5.tar.gz http://ruby.taobao.org/mirrors/ruby/2.1/ruby-2.1.5.tar.gz
env RUBY_BUILD_MIRROR_URL=file:///home/ziven/.rbenv/versions/ruby-2.1.5.tar.gz# ~/.rbenv/bin/rbenv install 2.1.5
登入後複製
其中wget是下載相應的ruby文件,這裡是ruby-2.1.5.tar.gz
RUBY_BUILD_MIRROR_URL
登入後複製
用來指定安裝的ruby鏡像路徑,這裡直接使用本地路徑。注意本地路徑後面應該加上#來結尾
rbenv install命令後面的版本應該跟要安裝的ruby版本對應,例如可能安裝的版本是帶有相應的補丁編號的(例如: 1.9.3-p223),此處也應該寫上。

2. 安裝必要元件

    因為我們一般採用bundler來管理專案所需的gems,所以此處是需要安裝bundler的。
    考慮到國內連接ruby鏡像的速度,我們更換gem源為taobao源。
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
登入後複製
之後執行gem sources -l應該只有https://ruby.taobao.org/這個來源
    安裝bundler
   
gem install bundler
登入後複製

3.原始碼放置到/opt/projectA

    b.安裝依賴的gems

    在專案的根目錄執行:
bundle install
登入後複製
    此處需要注意,並根據不同的情況執行的命令可能略有差異。例如在生產環境部署時,可能需要執行
bundle install --deployment --without development test
登入後複製
這樣部署時,相關的依賴gems被安裝到 projectA/vendor/bundle下面。尤其適合不同的專案依賴同一個gem的不同版本的時候使用。

    c.資料庫相關遷移
    由於本專案是基於padrino所以需要執行:
padrino rake --envir db:migrate
登入後複製
需要注意的是,此處視情況可能需要使用bundle來執行此指令:

bundle exec padrino rake --envir db:migrate
登入後複製
 padrino預設在db/seeds.rb當中完成admin帳號的建立。所以此處執行:
bundle exec padrino rake --envir seed
登入後複製
執行過程當中會提示輸入admin帳戶的郵箱跟密碼

    d.unicorn部署
     此處可能需要對應的unicorn啟動腳本,可以參考ruby-china的unicorn.rb來寫。此處從略。
啟動unicorn server:

bundle exec unicorn -E production -c unicorn.rb -D
登入後複製
這樣padrino server就已經正常啟動了。如果unicorn.rb當中監聽的是tcp端口,那麼此時訪問相應的url應該可以打開了。如果是採用的監聽unix socket的方式,那麼也應該使用nginx(或apache)來做反向代理。
4. nginx的安裝設定

    a. nginx的安裝

    nginx就是安裝linux一般軟體的安裝方式來安裝。建議使用源碼安裝方式。此處簡略起見,暫以套件管理器的安裝方式進行安裝:

sudo apt-get install nginx-full
登入後複製

    b. nginx的設定
	upstream myserver {
	  server unix:/tmp/projectA.sock fail_timeout=0;
	}
	
	server {
	    listen       7788;
	    server_name  localhost;
	
	    client_max_body_size 10M;
	
	    error_page   500 502 503 504  /50x.html;
	    location = /50x.html {
	        root   /usr/share/nginx/html;
	    }
	
	    root /opt/projectA/web/public;
	
	    try_files $uri $uri.html @app;
	
	    location @app {
	        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	        proxy_set_header Host $http_host;
	        proxy_redirect off;
	        proxy_pass http://myserver;
	    }
	}
登入後複製

此處將7788連接埠的請求轉送到

unix:/tmp/projectA.sock
登入後複製
進行處理。也即轉發到剛剛我們的web伺服器處理。
至此,server已經可以正常運作。其他的一些輔助功能可以根據需要進行添加。例如nginx可能需要ssl憑證來認證。 ruby on rails專案的部署大同小異,其部署過程當中可能在執行相應的命令時需要根據情況做相應的調整。不過只要熟悉了ruby web的部署方式,其他的可以參考相關框架的文件還是比較容易部署的。

以上就介紹了nginx+unicorn部署ruby web環境,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

怎麼啟動nginx服務器 怎麼啟動nginx服務器 Apr 14, 2025 pm 12:27 PM

啟動 Nginx 服務器需要按照不同操作系統採取不同的步驟:Linux/Unix 系統:安裝 Nginx 軟件包(例如使用 apt-get 或 yum)。使用 systemctl 啟動 Nginx 服務(例如 sudo systemctl start nginx)。 Windows 系統:下載並安裝 Windows 二進製文件。使用 nginx.exe 可執行文件啟動 Nginx(例如 nginx.exe -c conf\nginx.conf)。無論使用哪種操作系統,您都可以通過訪問服務器 IP

See all articles