部署上 server 後,通常會需要在一個 staging server 在上線之前,先部署到 staging server ,以防一些本機測試不到的一些東西。
新增environments/staging.rb
新增 config/environments/staging.rb
環境設定內容同 config/environments/production.rb
新增deploy/staging.rb
新增 config/deploy/staging.rb
內容同 config/deploy/production.rb
佈署 ip 看看是不是同一台伺服器
server新增設定檔
server 上新增 /opt/nginx/conf/vhost/staging.conf
設定檔,內容跟 production 用的 nginx 設定檔一樣
除了需要加一行 rack_env staging;
因為預設是 rack_env prodcution;
設定網址和部署目錄
如果 staging 和 production 同一台 server 的話 網址(domain name)和佈署目錄得要不一樣: 上述的 nginx vhost 設定,裡面
- server_name 的網址要改
- root 目錄位置要改
搬移指令
將專案本來 config/deploy.rb
裡面的
set :deploy_to, '/home/deploy/shopping'
設定搬到
config/deploy/staging.rb
和 config/deploy/production.rb
並且改成不同目錄
1 2 3 4 |
|
Push code to github
git push
檢查部署缺少什麼檔案
cap staging deploy:check
到 server 上新增 shared/config/database.yml 和 secrets.yml,注意 yml 第一層要改成 staging。
如果有其他 yml 設定也需要一併設定 (例如 facebook.yml 和 email.yml 裡面要多加 staging)
新增staging資料庫
在 server 上新增 staging 用的資料庫
mysql -u root -p
CREATE DATABASE ["databasename"] CHARACTER SET utf8;
部署
cap staging deploy
重開nginx
sudo service nginx restart
參考文件: