在 Ubuntu 12.04 Server 上安裝部署 Ruby on Rails 應用

前言

  1. 本教程只適合 Ubuntu Server 用於部署項目到線上,建議使用一樣的 Ubuntu 版本,以避免遇到一些版本不一樣帶來的問題。
  2. 本教程適合新手初次部署 Rails 應用;

本文測試經過環境

  • Ubuntu 12.04 Server,
  • 服務器安裝測試於 Linode VPS (Ubuntu 12.04 LTS (GNU/Linux 3.4.2-x86_64-linode25 x86_64)。

配置 Ubuntu Server 系統

若是你是國內服務器,推薦修改網易的源

  1. 輸入 sudo vi /etc/apt/sources.list 將裏面的內容替換成:
deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse

而後更新一下: html

$ sudo apt-get update

安裝必要的三方庫

$ sudo apt-get install -y wget vim build-essential openssl libreadline6 libreadline6-dev libmysqlclient-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libxml2-dev libxslt-dev libcurl4-openssl-dev autoconf automake libtool imagemagick libmagickwand-dev libpcre3-dev nodejs libpq-dev

安裝 Ruby, Rails 及相關

安裝 RVM

$ \curl -L https://get.rvm.io | bash -s stable $ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"' >>~/.bashrc $ source ~/.bashrc $ rvm -v

安裝 Ruby

若是你是國內服務器,推薦將 RVM 的安裝源替換成 Taobao 的鏡像服務器,這樣安裝能更快! node

$ sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm/config/db

用 RVM 安裝 Ruby: mysql

$ rvm pkg install readline openssl $ rvm install 2.0.0 $ rvm use 2.0.0 --default $ ruby -v
ruby 2.0.0p247

國內服務器推薦替換 RubyGems 的到淘寶鏡像: nginx

$ gem sources --remove https://rubygems.org/ $ gem sources -a http://ruby.taobao.org/ $ gem sources -l *** CURRENT SOURCES *** http://ruby.taobao.org

安裝 Rails

$ gem install rails $ rails -v
Rails 4.0.0

安裝 MySQL 或其餘數據庫

固然,若是你的項目是用的其餘數據庫,請本身解決 git

$ sudo apt-get install mysql-server

跟着提示安裝,此處涉及東西在本教程以外,請自行 Google 相關教程解決。 github

部署你的網站

接下來你能夠經過 Git 或其餘方式將你項目的源代碼提交到服務器上面,建議放到用戶的 ~/www 下面。 sql

爲了方便教程,咱們假設,用戶是 jason (擁有 sudo 權限), 項目名 gitlab 後面遇到相似的地方請更具本身的狀況修改 shell

$ cd ~/ $ pwd /home/jason/ $ mkdir www $ cd www $ git clone git@you.host:gitlab.git $ cd gitlab $ bundle install

修改你的數據庫配置,建立數據庫,合併 migration ...這些是 Rails 開發的基礎,這裏就不細說了,重點是最後你能讓你的項目能用 rails s 跑起來! 數據庫

$ rails s -e production

安裝 Passenger 用於部署 Rails 應用

$ gem install passenger $ passenger -v
Phusion Passenger version 4.0.10

因爲 Passenger 須要從新編譯 Nginx,若是你以前有安裝 Nginx 須要卸載掉!
nginx -v,有的話卸載 $ sudo apt-get remove nginx-common nginx-full nginx ubuntu

用 Passenger 安裝 Nginx

$ sudo passenger-install-nginx-module

接下來會出現提示,選擇 Yes: download, compile and install Nginx for me. (recommended) ,對於後面的提示一直選默認哪項,敲回車。

最後看到

Nginx with Passenger support was successfully installed.

表示你人品很好 Nginx 安裝成功!不然請看 Passenger 官方安裝文檔 自行解決……

安裝 Nginx init script

接下來你須要安裝 Nginx 的啓動腳本,以及配置開機自動啓動

$ cd ~/ $ git clone git://github.com/jnstq/rails-nginx-passenger-ubuntu.git $ sudo mv rails-nginx-passenger-ubuntu/nginx/nginx /etc/init.d/nginx $ sudo chmod +x /etc/init.d/nginx

配置 Nginx 開機自啓動

$ sudo update-rc.d nginx defaults

配置 Nginx 與網站

打開 Nginx 的 nginx.conf

$ sudo vim /opt/nginx/conf/nginx.conf

PS: 若是你不是 Passenger 安裝的 Nginx,這個配置文件還有可能在 /usr/local/nginx/ 或 /etc/nginx 下面

請參考下面的例子修改:

user jason; # 修改爲你的系統賬號名,否則項目目錄 /home/jason/www 這裏沒有權限 worker_processes 8; # 修改爲和你 CPU 核數同樣 pid /var/run/nginx.pid; http { include mime.types; default_type application/octet-stream; client_max_body_size 50m; sendfile on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; ## ------------ 重點修改內容 --------  server { # 此處用於防止其餘的域名綁定到你的網站上面  listen 80 default; return 403; } server { listen 80; server_name you.host.name; # 請替換成你網站的域名  rails_env production; root /home/jason/www/gitlab/public; passenger_enabled on; location ~ ^(/assets) { access_log off; # 設置 assets 下面的瀏覽器緩存時間爲最大值(因爲 Rails Assets Pipline 的文件名是根據文件修改產生的 MD5 digest 文件名,因此此處能夠放心開啓)  expires max; } } ## --------------------------------- }

重啓 Nginx

$ sudo /etc/init.d/nginx start

部署完成!能夠嘗試訪問你的域名。

本頁貢獻者:

2  C6c57c07843274735d6f5dc451a203ee  186d5420364f43c606f5150ceaa5241a  2a1e7d051ff8c1b7d2f47f00dbc03733
相關文章
相關標籤/搜索