今年4月開始學(xué)習(xí)Rails,因有一些想法想用自己的雙手進行實現(xiàn),之前使過PHP開發(fā)一個旅游圖片社交項目,實現(xiàn)起來實在是漏洞百出而且框架性完全不夠?,F(xiàn)在經(jīng)過多方權(quán)衡,最終還是拋棄了開發(fā)起步以及部署時的方便快速,決定重頭學(xué)習(xí)Rails來開發(fā)現(xiàn)在的新項目。
學(xué)習(xí)的過程可以說還是快速而且愉快的,整套框架都是建立在MVC和CRUD等web應(yīng)用開發(fā)原則之上,使起來清晰簡潔。真正的問題出現(xiàn)在部署的時候......
項目及我的個人網(wǎng)站都是放在阿里云上的,主機系統(tǒng)是CentOS 7。在正式下手部署之前做了很多research,不得不說Rails的環(huán)境部署實在是紛繁復(fù)雜,光主流rails app server就有好幾個,再加上數(shù)據(jù)庫的選擇,各種組合選的讓人頭暈~長話短說,最終我選定了Nginx?作為反向代理+Unicorn?為rails app server的經(jīng)典組合來完成部署。
以下就來詳細記錄一下從零開始部署的過程以供參考:
1. 更新操作系統(tǒng)
? ? $ yum update
? ? (查看系統(tǒng)版本)
? ? $ cat /etc/redhat-release
2. 安裝EPEL software
? ? $ yum install epel-release
? ? $ yum repolist
3. 安裝一些工具和庫
? ? $ yum install curl-devel nano sqlite-devel libyaml-devel
4. 安裝RVM,安裝指定版本的Ruby
? ? $ gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
? ? $ curl -L https://get.rvm.io | bash -s stable
? ? $ source /etc/profile.d/rvm.sh? #set up system environment for Ruby, 這步不可少
? ? $ rvm reload
? ? $ rvm install 2.2.1? #這里指定你想要使用的ruby版本
5. (天朝特供)把gem source改成淘寶鏡像以提高rails安裝速度
? ? $ gem source -r https://rubygems.org/
? ? $ gem source -a https://ruby.taobao.org
6. 安裝node.js 作為rails的javascript 運行環(huán)境
? ? $ yum install nodejs
7. 安裝指定版本的rails
? ? $ gem install bundler
? ? $ gem install rails -v 4.2.1
8. 安裝Nginx
? ? $ yum install nginx
9. 安裝Unicorn
? ? $ gem install unicorn
10. 創(chuàng)建一個新rails項目或者將項目從git托管平臺克隆到主機
? ? #進入項目目錄,記住項目目錄這一步很重要,牽扯到之后配置Nginx和Unicorn的成功
? ? #我將項目放在 /var 下一個新建的rails文件夾里
? ? $ cd /var
? ? $ mkdir rails
? ? $ cd /var/rails
? ? $ rails new your_project #創(chuàng)建新項目
? ? ($ git clone https://github.com/xxx/your_project.git #或者將項目用git克隆過來)
11. 附:用git更新項目代碼
? ? $ git pull https://github.com/xxx/your_project.git
12. 運行bundle install
? ? $ cd /var/rails/your_project
? ? $ bundle install --without development:test
接下來開始配置Nginx 和 Unicorn:
- 首先在rails項目的根目錄中找到文件夾config,在里面創(chuàng)建文件unicorn.rb并寫如下內(nèi)容:

- 然后配置Nginx與Unicorn之間的通訊
先執(zhí)行以下命令進入nginx目錄并找到nginx.conf文件
? ? $ cd /etc/nginx? #一般nginx安裝完成之后所在路徑,不熟悉linux的童鞋可以用whereis nginx命令來尋找路徑
? ? $ vi nginx.conf? #查看nginx.conf文件
進入nginx.conf文件后按 i 開始編輯,以下為所需修改的相應(yīng)內(nèi)容:

這樣就基本大功告成了,現(xiàn)在可以啟動兩個server讓 rails 項目跑起來了~
進入rails項目目錄,然后
? ? $ RAILS_ENV=production bundle exec rake assets:precompile? #這一步不可少,不然asset pipeline不工作
接著啟動Unicorn和Nginx
? ? $ unicorn_rails -c config/unicorn.rb -D -E production
? ? $ service nginx start
不出意外,你的項目已經(jīng)在生產(chǎn)環(huán)境下愉快的跑起來了~
附上阿里云服務(wù)器推薦碼一枚:v8p4nn ?新購服務(wù)器的時候輸入推薦碼有9折優(yōu)惠哦