ph033378 发表于 2016-12-24 11:31:14

用nginx+passenger部署Rails应用

系统及环境
系统:Red Hat Enterprise Linux Server release 5.4 (Tikanga)
环境:已预装ruby 1.8.5
友情提示:Ubuntu下安装nginx时可能会出现依赖包没有正确安装的情况。要去手工安装一些包。
具体步骤
1.         ruby安装
下载源代码包到本地Linux主机,然后解压缩,进入该目录,进行配置,编译和安装,依次执行(提示没有权限时加sudo):
l  tar xzvf ruby-1.8.7.tar.gz
l  cd ruby-1.8.7
l  sudo ./configure –prefix=/usr/local/ruby
l  sudo make && sudo make install
2.         环境配置
安装好以后,执行ruby –v。显示的仍然是ruby 1.8.5。执行env发现环境变量/usr/bin优先了。而ruby正好在/usr/bin下。所以刚编译安装的目录/usr/local/ruby/bin应该加在系统PATH前面。
修改操作系统PATH路径,加入/usr/local/ruby/bin:
export PATH=/usr/local/ruby/bin:$PATH
         执行完以后再执行ruby –v。显示了ruby 1.8.7
3.         gem和rails安装
下载gem源码。然后依次执行:
l  tar xzvf rubygems-1.5.2.tgz
l  cd rubygems-1.5.2/
l  ruby setup.rb
安装rails就简单了。sudo gem install rails
4.         nginx安装
先安装passenger:
sudo gem install passenger
安装好后执行:
sudo passenger-install-nginx-module
选择3:Learn how to deploy your application,会提示是否自动下载nginx。选择1:是
安装nginx时会提示安装目录:输入/opt/nginx/
至此,rails环境搭建完成
5.         获取代码
执行:svn co http:// ######
将代码checkout到rails应用目录
6.         配置
复制config/database.yml.example为config/database.yml。修改数据库配置。然后配置nginx。编辑/opt/nginx/conf/nginx.conf。添加:
http{
         ...
         passenger_root /usr/local/passenger;
         passenger_ruby /usr/local/bin/ruby;
 
         server {
                   listen 80;
                   server_name beta.twork.taobao.net;
                   root /Users/freetest/public; #这里根据不同的用户,目录不同
                   passenger_enabled on;
                   rails_env production;
              }
...
}
现在启动nginx还会报nobody无法取得某些目录的写入权限。因为nginx默认为nobody启动的。可以有两个方法:
1、  将应用和应用目录下所有文件夹和文件都置为权限777。执行 chmod 777 –R 应用目录
2、  将nginx的启动用户设置为具有操作应用目录的用户。如root(不建议)或者用户本身。具体做法是更改/opt/nginx/conf/nginx.conf第一行。user 用户名 组名
测试下环境:sudo /opt/nginx/sbin/nginx
启动好nginx后自动会把passenger启动起来。在浏览器就可以访问了
页: [1]
查看完整版本: 用nginx+passenger部署Rails应用