Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7116569
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: LINUX

2015-02-12 11:08:32

CentOS6.5使用Nginx+Passenger部署Ruby on Rails环境

[日期:2015-02-12] 来源:Linux社区  作者:john88wang [字体:  ]
本文介绍如何使用Nginx+Passenger来部署Ruby on Rails环境,本文使用的操作系统版本是6.5。

1.安装ruby

  wget
  mkdir -p /data/app_platform/ruby
  tar -zxvf ruby-2.0.0-p594.tar.gz
  cd ruby-2.0.0-p594
  ./configure --prefix=/data/app_platform/ruby
  make 
  make install
  ln -sf /data/app_platform/ruby/bin/* /usr/bin/
  gem install rails
2.安装Nginx和Passenger
Passenger有两种方式安装,一种是standalone 方式即Passenger独立运行,然后通过Nginx将ruby相关请求转发到Passenger,另一种是与Nginx整合在一起安装,维护方便。这里选用第一种方式。
Passenger 4.0以上和Nginx 1.4以上可以整合到一起

  wget
  wget
  useradd -r www -s /sbin/nologin
  mkdir -p /data/app_platform/{nginx,passenger}
  tar -zxvf passenger-4.0.57.tar.gz 
  mv -f passenger-4.0.57/*  /data/app_platform/passenger
  tar -zxvf nginx-1.4.4.tar.gz
  cd nginx-1.4.4
  ./configure --user=www --group=www --prefix=/data/app_platform/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre  --with-http_perl_module --with-http_realip_module  --with-http_addition_module  --add-module=/data/app_platform/passenger/ext/nginx
  make
  make install          
  mkdir -p /data/app_platform/nginx/conf/conf.d/
  
3.配置Nginx

添加Nginx启动文件/etc/init.d/nginx
#!/bin/sh 

# nginx - this script starts and stops the nginx daemon 

# chkconfig:  - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \ 
#              proxy and IMAP/POP3 proxy server 
# processname: nginx 
# config:      /etc/nginx/nginx.conf 
# config:      /etc/sysconfig/nginx 
# pidfile:    /var/run/nginx.pid 
  
# Source function library. 
. /etc/rc.d/init.d/functions 
  
# Source networking configuration. 
. /etc/sysconfig/network 
  
# Check that networking is up. 
[ "$NETWORKING" = "no" ] && exit 0 
  
nginx="/data/app_platform/nginx/sbin/nginx" 
prog=$(basename $nginx) 
  
sysconfig="/etc/sysconfig/$prog" 
lockfile="/var/lock/subsys/nginx" 
pidfile="/data/app_data/nginx/logs/nginx.pid" 
  
NGINX_CONF_FILE="/data/app_platform/nginx/conf/nginx.conf" 
  
[ -f $sysconfig ] && . $sysconfig 
  
  
start() { 
    [ -x $nginx ] || exit 5 
    [ -f $NGINX_CONF_FILE ] || exit 6 
    echo -n $"Starting $prog: " 
    daemon $nginx -c $NGINX_CONF_FILE 
    retval=$? 
    echo 
    [ $retval -eq 0 ] && touch $lockfile 
    return $retval 

  
stop() { 
    echo -n $"Stopping $prog: " 
    killproc -p $pidfile $prog 
    retval=$? 
    echo 
    [ $retval -eq 0 ] && rm -f $lockfile 
    return $retval 

  
restart() { 
    configtest_q || return 6 
    stop 
    start 

  
reload() { 
    configtest_q || return 6 
    echo -n $"Reloading $prog: " 
    killproc -p $pidfile $prog -HUP 
    echo 

  
configtest() { 
    $nginx -t -c $NGINX_CONF_FILE 

  
configtest_q() { 
    $nginx -t -q -c $NGINX_CONF_FILE 

  
rh_status() { 
    status $prog 

  
rh_status_q() { 
    rh_status >/dev/null 2>&1 

  
# Upgrade the binary with no downtime. 
upgrade() { 
    local oldbin_pidfile="${pidfile}.oldbin" 
  
    configtest_q || return 6 
    echo -n $"Upgrading $prog: " 
    killproc -p $pidfile $prog -USR2 
    retval=$? 
    sleep 1 
    if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]];  then 
        killproc -p $oldbin_pidfile $prog -QUIT 
        success $"$prog online upgrade" 
        echo  
        return 0 
    else 
        failure $"$prog online upgrade" 
        echo 
        return 1 
    fi 

  
# Tell nginx to reopen logs 
reopen_logs() { 
    configtest_q || return 6 
    echo -n $"Reopening $prog logs: " 
    killproc -p $pidfile $prog -USR1 
    retval=$? 
    echo 
    return $retval 

  
case "$1" in 
    start) 
        rh_status_q && exit 0 
        $1 
        ;; 
    stop) 
        rh_status_q || exit 0 
        $1 
        ;; 
    restart|configtest|reopen_logs) 
        $1 
        ;; 
    force-reload|upgrade)  
        rh_status_q || exit 7 
        upgrade 
        ;; 
    reload) 
        rh_status_q || exit 7 
        $1 
        ;; 
    status|status_q) 
        rh_$1 
        ;; 
    condrestart|try-restart) 
        rh_status_q || exit 7 
        restart 
        ;; 
    *) 
        echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}" 
        exit 2 
esac

Nginx主配置文件/data/app_platform/nginx/conf/nginx.conf
user  www; 
worker_processes  4; 
  
error_log  /data/app_data/nginx/logs/error.log  error; 
  
pid        /data/app_data/nginx/logs/nginx.pid; 
  
worker_rlimit_nofile 65535; 
  
events { 
    use epoll; 
    worker_connections  10240; 

  
  
http { 
    passenger_root /data/app_platform/passenger; 
    passenger_ruby /usr/bin/ruby; 
    passenger_max_pool_size 10; 
    passenger_debug_log_file /data/app_data/nginx/logs/passenger.log; 
    passenger_show_version_in_header on; 
    passenger_spawn_method smart; 
    
    include      mime.types; 
    default_type  application/octet-stream; 
  
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
                      '$status $body_bytes_sent "$http_referer" ' 
                      '"$http_user_agent" "$http_x_forwarded_for"'; 
  
    access_log  logs/access.log  main; 
  
    sendfile        on; 
    tcp_nopush      on; 
    tcp_nodelay    on; 
    server_tokens off;  
  
    keepalive_timeout  60; 
    server_names_hash_bucket_size 128; 
    client_header_buffer_size 32k; 
    large_client_header_buffers 1 128k;# 4 32k 
    client_max_body_size 8m; 
    client_body_buffer_size 128k; 
  
    fastcgi_connect_timeout 60; 
    fastcgi_send_timeout 60; 
    fastcgi_read_timeout 60; 
    fastcgi_buffer_size 256k; 
    fastcgi_buffers 4 512k;#8 128 
    fastcgi_busy_buffers_size 512k; 
    fastcgi_temp_file_write_size 512k; 
    #fastcgi_intercept_errors on; 
  
    gzip on; 
    gzip_min_length 1k; 
    gzip_buffers    1 64k; #4 16 
    gzip_http_version 1.0; 
    gzip_comp_level 2; 
    gzip_types      text/plain application/x-javascript text/css application/xml; 
    gzip_vary on; 
    
  
    include /data/app_platform/nginx/conf/conf.d/*.conf; 
      
  
    server { 
  
          listen      80        default; 
          server_name _; 
          return 403; 
  
  
            } 
}

Nginx主配置文件关键部分就是这里,表明passenger是整合到Nginx中的。
    passenger_root /data/app_platform/passenger; 
    passenger_ruby /usr/bin/ruby; 
    passenger_max_pool_size 10; 
    passenger_debug_log_file /data/app_data/nginx/logs/passenger.log; 
    passenger_show_version_in_header on; 
    passenger_spawn_method smart;

添加虚拟主机

server { 
  
    server_name xxx.com.cn;  
    access_log  /data/app_data/nginx/logs/xxx.log main; 
  
    root /data/zmkm_app/zmkm/public/; 
    passenger_enabled on; 
  
    index index.html index.htm; 
  
    location /assets/LiveVideo.swf { 
  
        root /data/zmkm_app/zmkm/public/; 
        index index.html index.htm; 
        passenger_enabled on; 
  
    } 
  
}

需要注意的如果虚拟主机制定的目录下需要Nginx处理ruby代码则需要加上passenger_enabled on;这条这令,并且location指定的内容还需要再次添加

CentOS 5.9上搭建Ruby on Rails 环境  

CentOS下配置Ruby on Rails并部署Redmine  

CentOS系统搭建Ruby On Rails平台 

Ruby on Rails 和 Laravel: 入门  

重要文章阅读:Ruby入门--Linux/Windows下的安装、代码开发及Rails实战 

Ruby on rails初体验系列文章:



下搭建Ruby On Rails 

实测 Ubuntu 13.10 上搭建 Ruby on Rails 

Ruby on Rails 4 Tutorial 中文版 高清完整PDF 

本文永久更新链接地址

阅读(1022) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~