Nginx Passenger 部署 Ruby on Rails
1. 导入passenger秘钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
官网: https://www.phusionpassenger.com/library/install/nginx/install/oss/trusty/
2. 安装支持https传输的apt插件
sudo apt-get install apt-transport-https ca-certificates
3. 添加apt源
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update -- 不执行,则找不到passenger
4. 安装passenger包
sudo apt-get install nginx-extras passenger
5 安装完成之后,需要去修改nginx配置
进入 /etc/nginx/nginx.conf里,去除下面的两条注释
# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
# passenger_ruby /usr/bin/ruby;
修改为:
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /home/your_name/.rvm/wrappers/default/ruby;
6. 上传文件
例如:(github)
sudo mkdir /var/www/example.com
cd /var/www/example.com
git clone https://github.com/YOURNAME/REPO.git current
clone过来之后需要安装对应的组件(数据库)
sudo apt-get install postgresql libpq-dev
在项目下 1. bundle 2. RAILS_ENV=production rake db:create db:migrate 3. rake assets:precompile
7. nginx
删除默认的配置
rm /etc/nginx/sites-enabled/default
(sudo) vim /etc/nginx/sites-enabled/example.com.conf:
server {
listen 80 default;
server_name example.com; # 这里填写你真实域名
root /var/www/example.com/current/public;
passenger_enabled on;
}
8. 重启
sudo service nginx restart
注: 若无域名,可在/etc/hosts 下面映射一个虚拟域名
例如:
127.0.0.1 xiaozhu.com
1. 导入passenger秘钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
官网: https://www.phusionpassenger.com/library/install/nginx/install/oss/trusty/
2. 安装支持https传输的apt插件
sudo apt-get install apt-transport-https ca-certificates
3. 添加apt源
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update -- 不执行,则找不到passenger
4. 安装passenger包
sudo apt-get install nginx-extras passenger
5 安装完成之后,需要去修改nginx配置
进入 /etc/nginx/nginx.conf里,去除下面的两条注释
# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
# passenger_ruby /usr/bin/ruby;
修改为:
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /home/your_name/.rvm/wrappers/default/ruby;
6. 上传文件
例如:(github)
sudo mkdir /var/www/example.com
cd /var/www/example.com
git clone https://github.com/YOURNAME/REPO.git current
clone过来之后需要安装对应的组件(数据库)
sudo apt-get install postgresql libpq-dev
在项目下 1. bundle 2. RAILS_ENV=production rake db:create db:migrate 3. rake assets:precompile
7. nginx
删除默认的配置
rm /etc/nginx/sites-enabled/default
(sudo) vim /etc/nginx/sites-enabled/example.com.conf:
server {
listen 80 default;
server_name example.com; # 这里填写你真实域名
root /var/www/example.com/current/public;
passenger_enabled on;
}
8. 重启
sudo service nginx restart
补续:
一切就绪之后,启动应用,发现会有报错:
`Message from application: cannot load such file -- bundler/setup (LoadError)`
根据已往的经验,可判断是因为bundler的原因。可是试了之后发现不是。
然后看passanger文档,发现配置有问题。
https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_ruby
然后输入:
passenger-config --ruby-command
可以看到PassengerRuby 信息,把他放在nginx.conf里。 这样就解决了问题。
注: 若无域名,可在/etc/hosts 下面映射一个虚拟域名
例如:
127.0.0.1 xiaozhu.com