【问题标题】:Making nginx work with ruby on rails让 nginx 在 Rails 上与 ruby​​ 一起工作
【发布时间】:2014-08-08 15:13:15
【问题描述】:

我正在尝试在 nginx 上运行 ruby​​。

我已经在 rails 上安装了 ruby​​ 并安装了乘客 gem。我已经准备好运行 nginx,如何将它与 ruby​​ on rails 集成。

我在 nginx.conf 中启用了这个:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini; 
passenger_ruby /usr/bin/ruby;

这也在我的虚拟主机 /etc/nginx/sites-available/default 中

passenger_enabled on;

修改后nginx无法重启。

有人可以帮我解决这个问题吗?我正在运行 ubuntu 14.04

【问题讨论】:

  • passenger_rootpassenger_ruby 是否与Passenger setup 在安装时为您提供的路径相同?
  • 你检查你的 nginx 错误日志了吗?通常在 Ubuntu 上 /var/log/nginx/error.log... 它通常会给出很好的错误

标签: ruby-on-rails nginx


【解决方案1】:

我将尝试一步一步地解释它。 Nginx + RoR + Capistrano

1.创建用户(如果需要)

adduser deployer

2。将用户移动到 sudo 用户

visudo
deployer ALL=(ALL:ALL) ALL

3。为他安装 bash

nano /etc/passwd
Меняем /bin/sh на /bin/bash

4.更改 ssh 端口以确保安全

nano /etc/ssh/sshd_config
Change Port 22 on Port XXXX (where XXXX is any number)

5.重新加载 ssh

6.使用我们的新用户通过 ssh 输入

ssh -p XXXX deployer@XXX.XXX.XXX.XXX

7.如果需要,更新系统

sudo apt-get update 
sudo apt-get upgrade
sudo apt-get install curl

8.安装 rvm:

curl -L get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
rvm requirements

9.安装 ruby​​、postgres 等。

10.安装 gem 乘客:

gem install passenger

11.使用乘客安装 nginx

rvmsudo passenger-install-nginx-module

12.根据需要设置交换

sudo dd if=/dev/zero of=/swap bs=1M count=1024
sudo mkswap /swap
sudo swapon /swap

13.更改 nginx 的配置(服务器部分):

server {
      listen 80;
      server_name www.yourhost.com;
      root /somewhere/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
      location ^~ /assets/ 
           { gzip_static on; 
           expires max; 
           add_header Cache-Control public; 
      }
 }

14.如果是 Ubuntu,则为 nginx 启动/停止/重启克隆好的脚本:

git clone https://github.com/vkurennov/rails-nginx-passenger-ubuntu.git
sudo cp nginx/nginx.conf /etc/init.d/nginx.conf
sudo chmod +x /etc/init.d/nginx/conf

15.运行 nginx:

sudo /etc/init.d/nginx start

博雅!!检查您的浏览器!

开始我们的应用吧!

1.用于 depoly 的 gem ‘capistrano’

group :development do
  gem 'capistrano'
  gem 'rvm-capistrano’
  gem ‘net-ssh’, ‘2.7.0'
end

2。运行:

capify .

打开 deploy.rb 并设置:

set :application, 'app_title'
set :repository,  'app_repo'

5.添加:

require 'bundler/capistrano'
require "rvm/capistrano"

load 'deploy/assets’

set :port, XXXX
set :use_sudo, false

set :rails_env, :production
set :branch, "master"
set :deploy_to, "/home/deployer/app_title"
set :user, 'deployer'

role :web, "XXX.XXX.XXX.XXX"                          # Your HTTP server, Apache/etc
role :app, "XXX.XXX.XXX.XXX"                          # This may be the same as your `Web` server
role :db,  "XXX.XXX.XXX.XXX", :primary => true # This is where Rails migrations will run

6.上限部署:检查

7.上限部署:设置

set :bundle_cmd, "/home/deployer/.rvm/gems/ruby-2.0.0-p451@global/bin/bundle"
set :bundle_dir, "/home/deployer/.rvm/gems/ruby-2.0.0-p451"

set :rvm_type, :user
set :rvm_ruby_string, 'ruby-2.0.0-p451@global'

8.部署方法:

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

9.在服务器上克隆 ssh-key 并添加到 repo

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub

10.添加宝石“therubyracer”

11.帽部署:冷

博雅!如果smth不清楚,我会提出问题。

【讨论】:

  • 即使在将文档根目录更改为 myapp/public nginx 后,我也确实按照您的步骤进行操作,但仍然显示默认索引页面!
  • 你重启过nginx了吗?我还发布了我的 deploy.rb。可能有用:gist.github.com/PavelTkachenko/c9c16561c3053be41d9f
  • 是的,我确实重启了,但没有区别
  • 你做了 cap deploy:cold
猜你喜欢
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 2011-01-16
  • 2010-11-14
  • 1970-01-01
相关资源
最近更新 更多