首页 > 其他 > 详细

Nginx + Passenger + Rails + Redis 部署

时间:2016-01-14 15:50:52      阅读:401      评论:0      收藏:0      [点我收藏+]

1. 安装Nginx和Passenger(参考:https://www.phusionpassenger.com/library/install/nginx/install/oss/el6/)

sudo yum install -y epel-release pygpgme curl
sudo curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
sudo yum install -y nginx passenger passenger-devel

 2. 配置Nginx和Passenger

/etc/nginx/nginx.conf 在文件中http中添加rails应用配置server block
server{
  listen port;      #替换为监听的端口
  server_name hostname;  #替换为主机地址
  root APP_PATH/public;  #APP_PATH表示rails应用根目录

  passenger_enabled on;
  passenger_ruby /usr/local/bin/ruby;  #ruby解析器路径 可通过 passenger-config about ruby-command 查看

  access_log APP_PATH/log/access.log;
  error_log APP_PATH/log/error.log;

  client_header_buffer_size 512k;      #请求头大小设置
  large_client_header_buffers 4 512k;
}

/etc/nginx/conf.d/passenger.conf #将该文件下这三个的注释符去掉

passenger_root /some-filename/locations.ini;
passenger_ruby /usr/bin/ruby;
passenger_instance_registry_dir /var/run/passenger-instreg;

 3. 重启Nginx,检测Passenger是否被Nginx启动成功

sudo passenger-config validate-install
sudo passenger-memory-stats

 如果没有错误日志,即表示配置成功。
4. 升级nginx和passenger,只需要执行下面命令即可:

sudo yum update nginx passenger
sudo service nginx restart

 5. 安装Redis,使用sidekiq为Rails部署任务异步执行环境。

git clone https://github.com/antirez/redis.git
yum install -y tcl
cd redis && make && make test
sysctl vm.overcommit_memory=1
echo 511 > /proc/sys/net/core/somaxconn
echo never > /sys/kernel/mm/transparent_hugepage/enabled
cd src && ./redis-server ../redis.conf  #使用指定的redis.conf启动

 这是是免安装方法,便于升级,如要安装到Linux中,可以执行安装操作,详细参考README.md.
6. 启动redis之后,就可以启动sidekiq执行

cd APP_PATH && bundle exec sidekiq -q mailers -q default

 记住必须指定要执行的队列(mailers、default),否则任务不会执行。

遇到错误解决办法:
1. Cannot stat ‘XXX/config.ru‘: Permission denied (errno=13);
为应用目录下的public添加执行权限,如下:

chmod g+x, o+x APP_PATH/public
chmod g+x, o+x APP_PATH

 2. Errno::EACCES (Permission denied @ dir_s_mkdir - XXX)/Errno::EACCES (Permission denied @ utime_internal - XXX.cache)
这些错误都是因为没有写或者执行文件的权限,因为如果config.ru的所有者是root,那么passenger用来启动rails的用户会变为nobody,所以导致一些目录没有写权限,可通过赋予权限解决。如果config.ru的所有者不是root,那么就会以它的所有者启动rails。详细:https://www.phusionpassenger.com/library/admin/nginx/troubleshooting/ruby/
3. Request Entity Too Large
因为body太大,修改nginx配置即可
在对应的server block中添加下面的配置:
client_max_body_size 10M;  #设置指定的大小

Nginx + Passenger + Rails + Redis 部署

原文:http://www.cnblogs.com/zhangyanpei/p/5130369.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!