1、配置production環境
部署ruby_on_rails項目到nginx之前,先要使項目在production環境上跑起來。我使用的是預設資料庫sqlite3。
在Gemfile中添加:
gem 'yaml_db'
然後進行bundle安裝
bundle install
rake db:dump //遷移資料庫
配置生産環境使用的資料庫:在config/database.yml檔案添加如下内容:
production:
<<: *default
database: db/development.sqlite3
然後加載資料庫:
rake db:load RAILS_ENV='production'
生成安全密鑰:
rake secret
生成一段符号,加到secrets.yml檔案裡,如:
production:
secret_key_base: 52761ca9d6a033907f27619e87c5a642007cd12be1ae2aebd179ebb690610b37ebd55941ff09bf9e5105265280e
修改/config/enviroment/production.rb裡的屬性,如下,加載CSS等功能樣式
config.serve_static_assets = true
最後運作,讓工程跑起來
rails s -e production
2、安裝passenger、nginx
安裝passenger:
sudo gem install passenger
安裝nginx到預設安裝路徑:
sudo passenger-install-nginx-module
在安裝過程中會遇到有些包需要手動安裝,我們需要使用apt-get進行安裝,可能 apt-get安裝不上去,提示連接配接不到源,你需要更改apt-get源檔案,具體位址為:/etc/apt/sources.list.d/official-package-repositories.list
安裝nginx啟動腳本:
cd ~/
git clone git://github.com/jnstq/rails-nginx-passenger-ubuntu.git
sudo cp rails-nginx-passenger-ubuntu/nginx/nginx /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
配置nginx:
以root身份打開nginx的預設安裝目錄/opt/nginx/conf/nginx.conf,修改為如下:
server {
listen 80; //端口号
server_name localhost;
rails_env development;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /home/rails_projects/huodongtong/public; //rails工程pubilc的路徑
passenger_enabled on;
}
啟動nginx服務:
sudo /etc/init.d/nginx start
停止nginx服務:
sudo /etc/init.d/nginx stop
重新開機nginx服務:
sudo /etc/init.d/nginx restart
在浏覽器上輸入localhost(如果不是80端口就要使用localhost:端口号),就可以看到自己的工程項目,别人可通過ip通路你的服務項目