【发布时间】:2011-06-23 08:06:39
【问题描述】:
嗯,我想知道是否有一种方法可以在 Lighty 和 Ubuntu 上同时运行 rails 和 PHP。我想在一台服务器/域上同时运行我的 PHP 项目和 Rails 项目。
我真的对 Linux 没什么经验,所以请原谅我的幼稚。
如果有办法,请告诉我:)
【问题讨论】:
标签: php ruby-on-rails linux ubuntu lighttpd
嗯,我想知道是否有一种方法可以在 Lighty 和 Ubuntu 上同时运行 rails 和 PHP。我想在一台服务器/域上同时运行我的 PHP 项目和 Rails 项目。
我真的对 Linux 没什么经验,所以请原谅我的幼稚。
如果有办法,请告诉我:)
【问题讨论】:
标签: php ruby-on-rails linux ubuntu lighttpd
同时运行它们非常简单。我一直这样做(ROR 运行 Redmine,其余的运行 PHP)。
对于 ROR,您有 2 个实际选项。要么从 FastCGI(我所做的)提供它,要么使用独立服务器(如 Mongrel 等)运行它并代理它。两者都有优势。 FastCGI 的优势在于它是独立的(无需运行辅助服务器)。独立的优点是更容易配置。
如果您有具体问题,我可以提供指导,但互联网上有关于如何执行此操作的指南。
我的 lighttpd.conf:
$HTTP["host"] =~ "my.ror.site" {
server.error-handler-404="/dispatch.fcgi"
fastcgi.server = (".fcgi" => ("ror_1" => (
"min-procs"=>8,
"max-procs" => 8,
"socket" => "/tmp/myrorlock.fastcgi",
"bin-path"=> "/path/to/ror/site/public/dispatch.fcgi",
"kill-signal" => 9,
"bin-environment" => ( "RAILS_ENV" => "production" )
)))
}
fastcgi.server = ( ".php" =>
(
(
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi -c /etc/php.ini",
"min-procs" => 1,
"disable-time" => 1,
"max-procs" => 1,
"idle-timeout" => 20,
"broken-scriptfilename" => "enable",
"bin-copy-environment"=> (
"PATH", "SHELL", "USER"
),
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "40",
"PHP_FCGI_MAX_REQUEST" => "50000"
)
)
)
)
就是这样。注意kill-signal 选项。这很重要,否则每次重新启动服务器时都会到处出现僵尸进程......
【讨论】:
$HTTP["host"] =~ "my.ror.site" -- =~ 表示它正在进行正则表达式比较,可能不需要。当您想要进行正常的字符串比较时,请使用==。 More info。除此之外,感谢您的示例!
查看 Lighty 配置目录的 conf.d 子目录中的 fastcgi.conf(不确定它在 Ubuntu 上的位置,但快速搜索建议 /etc/lighttpd)。 PHP 和 Rails 都有注释掉的示例;通过将两者结合起来,您应该能够获得所需的设置(尽管我建议先让一个工作,然后再设置另一个)。
FastCGI 是 Lighty 可以与 Ruby 或 PHP 等运行时通信的方法。 Lighty 也可以使用 SCGI,尽管我自己从未使用过它,并且不确定它的效果如何(最后我听说它仍然是实验性的)。
您可能还会发现 Lighty 文档 wiki 上的 Optimizing FastCGI 页面很有帮助,尽管它是相当特定于 PHP/MySQL 的。
【讨论】:
我不使用 Lighty。 Rails 最好与Passenger 和Apache 一起使用,考虑到Passenger 对Apache 的附加功能。我通过将其路径指向其他地方,在与我的 Rails 应用程序相同的域中提供 Wordpress (PHP)。 Here's an article to follow。 HTH。
【讨论】: