djv*_*jvs 0 ruby-on-rails passenger nginx rvm ruby-on-rails-3
我有"rvm use 1.9.3"和"rvmsudo passenger start --socket(sitename).socket"作为让Nsengerx下的Passenger运行的先决条件.其他一切都很完美,但现在的问题是如何确保所有这些命令或某些等效命令能够在Nginx上运行,Nginx在系统启动时启动.我希望这一切都自动完成.
这是我添加到nginx.conf中的部分看起来像(#是显然适用于Nginx/passenger的某些配置的东西,我根本没有尝试过.)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
那我现在该怎么办?
从系统开始的流程的技巧是确保您关心的部分以与最初设置时相同的权限和用户/组开始.假设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和其他东西的情况.
对不起,这比我希望的更为一般,但也许它很有用......
| 归档时间: |
|
| 查看次数: |
765 次 |
| 最近记录: |