【问题标题】:How to autostart rvm'ed Passenger inside Nginx如何在 Nginx 中自动启动 rvm'ed 乘客
【发布时间】:2012-03-19 01:28:11
【问题描述】:

我有“rvm use 1.9.3”和“rvmsudo Passenger start --socket (sitename).socket”作为让乘客在 Nginx 下运行的先决条件。其他一切都完美无缺,但现在的问题是如何确保所有这些命令或一些等效命令都能与 Nginx 一起工作,Nginx 在系统启动时启动。我希望这一切都自动化。

这就是我在 nginx.conf 中添加的部分的样子(# 是显然适用于 Nginx/passenger 的 some 配置的东西,我根本没有尝试过。)

upstream (sitename)_upstream{
  server unix:/(filepath)
}

server {
  listen 80;
  server_name (url);
  root (filepath);
  access_log (logpath);
  error_log (logpath);
 # passenger_enabled on;
 # rails_spawn_method smart;
 # rails_env development;
  location / {
    proxy_pass http://(sitename)_upstream;
    proxy_set_header Host $host;

  } 

}

那我现在该怎么办?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 nginx rvm passenger


    【解决方案1】:

    从系统开始的进程的技巧是确保您关心的部分以与您最初设置它们时相同的权限和用户/组开始。假设是 Linux 系统,启动时启动的进程在 /etc/init/d/<script> 中运行,并在启动时由 root(默认情况下)运行。您可以使用su 更改您的脚本以作为单独的用户启动——实际上大多数服务器进程都会这样做,因此它们在受保护的用户环境中运行。

    同时,RVM 设计为作为每个用户进程运行。几个月前,我尝试设置一个在全球范围内运行 RVM 的服务器,我认为这有点违背 RVM 的原则。因此,在我们的案例中,我们确保我们的 Web 服务器(在我们的案例中是 Apache,但 Nginx 具有相同的选项)已启动,以便其子进程 - 实际处理 Web 请求的那些以与 RVM 相同的用户身份运行配置。另一种方法是向 Nginx 和 RVM 用户授予组可写权限,但这需要更多工作。

    RVM 的另一个问题是它的世界是在 shell 脚本运行时创建的——通常是 ~/.bash_profile 脚本,因此,任何需要具有相同环境的服务器都可能希望在该 shell 中运行。

    这一切听起来都很难,但至少对我们而言,实际上,创建一个作为应用程序运行的用户帐户,并以该用户身份安装 RVM,并进行一些其他设置,这一切都“正常工作” ",尤其是在运行 rake、bundle、capistrano 和其他东西的情况下。

    对不起,这比我希望的要笼统一些,但也许有用...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2014-08-01
      • 1970-01-01
      • 2018-05-16
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多