Ubuntu 14.04 上使用 Nginx Passenger 部署 Ruby on Rails

本教程將會涉及如下工具:html

  • Ubuntu 14.04 LTSnginx

  • RVMgit

  • Ruby 2.1.1github

  • Rails 4.0.3web

  • Passenger 4.0+sql

  • Nginx(由 Passenger 編譯)數據庫

推薦經過 Vagrant 搭建虛擬機環境進行練習。ubuntu

建立賬號

假設你已經用 root 賬號經過 SSH 登錄服務器。瀏覽器

出於安全考慮,不要使用 root 賬號運行 web 應用。這裏新建一個專門用於部署的用戶,例如 deploy 或者其它你喜歡的名字。運行如下命令建立用戶:安全

# useradd -m -s /bin/bash deploy

將用戶加入 sudo 羣組,以便使用 sudo 命令:

# adduser deploy sudo

爲 deploy 用戶設置密碼:

# passwd deploy

退出當前 SSH 連接,用 deploy 賬號從新登錄。

安裝 RVM 和 Ruby

更新 apt,並安裝 curl:

$ sudo apt-get update
$ sudo apt-get install curl

而後安裝 RVM:

$ \curl -sSL https://get.rvm.io | bash

RVM 安裝完畢後,從新登錄 SSH,讓 RVM 配置生效。而後安裝 Ruby 2.1.1:

$ rvm use --install --default 2.1.1

Ruby 安裝過程會請求 apt-get update 的權限,並自動安裝系統依賴。安裝完畢後,確認目前的 Ruby 版本:

$ ruby -v

應該看到 ruby 2.1.1 字樣。

安裝 Passenger

Passenger 是一個 app server,支持基於 Rack 框架的 Ruby app(包括 Rails)。Passenger 的特色是須要做爲模塊編譯到 Nginx 中,優勢是配置簡單,不須要本身寫啓動腳本。

安裝 Passenger 最簡單的方法是經過 apt 安裝,首先導入 Passenger 的密鑰(官方文檔):

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

安裝 apt 插件以支持 https 傳輸:

sudo apt-get install apt-transport-https ca-certificates

添加 apt 源(對應 Ubuntu 14.04 LTS):

$ sudo echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main" > /etc/apt/sources.list.d/passenger.list
$ sudo apt-get update

安裝 Passenger 的包:

$ sudo apt-get install nginx-extras passenger

如今修改 nginx 配置,編輯 /etc/nginx/nginx.conf,找到這兩行註釋:

# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;# passenger_ruby /usr/bin/ruby;

將它修改成:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;passenger_ruby /home/deploy/.rvm/wrappers/default/ruby;

這會打開 Passenger 支持,而且指定使用以前用 rvm 安裝的 ruby 版本。

上傳文件

用你喜歡的方法把項目上傳到服務器上,例如 git(推薦)或 rsync,假設你使用 git,而且使用 github 的公開源。

建立站點文件夾:

$ sudo mkdir -p /var/www/example.com
$ sudo chown deploy:deploy /var/www/example.com

clone 項目文件:

$ cd /var/www/example.com
/var/www/example.com $ git clone https://github.com/YOURNAME/REPO.git current

取決於你的應用,這裏須要安裝數據庫等其餘系統組件,例如 PostgreSQL:

$ sudo apt-get install postgresql libpq-dev

執行 bundle 和 migrate:

/var/www/example.com $ cd current
/var/www/example.com/current $ bundle install
/var/www/example.com/current $ RAILS_ENV=production rake db:create db:migrate

執行 assets precompile:

/var/www/example.com/current $ rake assets:precompile

修改 Nginx 配置

刪除原有的默認網站配置:

$ rm /etc/nginx/sites-enabled/default

新建網站配置:

$ touch /etc/nginx/sites-enabled/example.com.conf

編輯 /etc/nginx/sites-enabled/example.com.conf,寫入如下內容:

server {    listen 80 default;    server_name example.com; # 這裏填寫你真實域名    root /var/www/example.com/current/public;    passenger_enabled on;}

重啓 nginx:

$ sudo service nginx restart

完成

在瀏覽器打開服務器的 IP 地址或域名,應該看到你的網站在運行。

https://github.com/ruby-china/ruby-china/wiki/Ubuntu-14.04-%E4%B8%8A%E4%BD%BF%E7%94%A8-Nginx-Passenger-%E9%83%A8%E7%BD%B2-Ruby-on-Rails

相關文章
相關標籤/搜索