本教程將會涉及如下工具: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 賬號從新登錄。
更新 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 是一個 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
刪除原有的默認網站配置:
$ 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 地址或域名,應該看到你的網站在運行。