1、安装passenger
sudo gem install passenger
2、安装带passenger插件的nginx
自动下载编译nginx
sudo passenger-install-nginx-module
默认安装路径/opt/nginx
3、配置nginx
默认配置文件路径/opt/nginx/conf/nginx.conf
http {
passenger_root /Users/ecloud/..../ruby/gems/2.3.0/gems/passenger-5.0.28;
passenger_ruby /Users/ecloud/.rbenv/versions/2.3.1/bin/ruby;
}
passenger_buy就是执行which ruby找到的路径,passenger_root是passenger_ruby的下级目录
4、配置rails production环境
进入项目目录
rake secret
将输出复制到/config/secret.yml中的secret_key_base这一项中
5、运行nginx
sudo /opt/nginx/sbin/nginx
6、 ## 自动化部署
Gemfile添加
gem 'capistrano-rails'
gem 'capistrano-passenger'
在项目目录下运行
cap install #bundle exec cap install
主要文件解释
1、config/deploy.rb 主配置文件
所有部署/回滚中需要自动执行的自定义任务都可以挂在这里
2、config/deploy/*.rb 针对不同环境的配置
配置服务器的IP、登录用户名之类的变量,由于这些文件会被提交到git上,所以密码不要配置到文件中。最好使用ssh公钥验证。
3、lib/capistrano/tasks 文件夹放置自定义脚本,脚本必须以.rake结尾
修改config/deploy.rb文件
set :application, 'my-app'
set :scm, :git #如果使用svn,改成 :svn
set :repo_url, '<remote repo url>' #remote仓库的url
set :deploy_to, '/var/www/my_app' #默认部署位置
修改config/deploy/staging.rb
#根据实际服务器的ip/域名和用户名修改下面
server 'example.com',
user: 'user_name',
roles: %w{web app},
ssh_options: {
user: 'user_name', # overrides user setting above
keys: %w(/home/user_name/.ssh/id_rsa),
forward_agent: false,
auth_methods: %w(publickey password)
# password: 'please use keys'
}