Passenger

安装

  1. sudo yum install -y epel-release yum-utils
  2. sudo yum install -y pygpgme curl
  3. sudo curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
  4. sudo yum install nginx passenger

修改 /etc/nginx/conf.d/passenger.conf:

  1. passenger_root /usr/share/ruby/vendor_ruby/phusion_passenger/locations.ini;
  2. # 使用 RVM/rbenv/系统 默认的 ruby 版本。username 根据实际情况修改
  3. passenger_ruby /home/username/.rvm/wrappers/default/ruby;
  4. # passenger_ruby /home/username/.rbenv/shims/ruby;
  5. # passenger_ruby /usr/bin/ruby;
  6. passenger_instance_registry_dir /var/run/passenger-instreg;

Nginx 配置

单独域名:

  1. server {
  2. listen 80;
  3. server_name example.com;
  4. root /data/app/your-app/current/public;
  5. passenger_enabled on;
  6. access_log /var/log/nginx/your-app.access.log main;
  7. error_log /var/log/nginx/your-app.error.log warn;
  8. }

子路径(sub-uri):

  1. location /sub-uri {
  2. alias /data/app/your-app/current/public;
  3. passenger_enabled on;
  4. passenger_base_uri /sub-uri;
  5. passenger_env_var RAILS_RELATIVE_URL_ROOT /sub-uri;
  6. passenger_app_root /data/app/your-app/current;
  7. }

部署到子路径的详细文档请参考 Deploy Rails appliction to sub-uri

默认使用 /etc/nginx/conf.d/passenger.conf 中配置的 ruby 版本,可通过 passenger_ruby 指定要使用的 ruby 版本

注意: Passenger 使用的 ruby 版本必须与部署工具部署(尤其 bundle install)使用 ruby 版本一致

参考资料