前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS6.5使用Nginx+Passenger部署Ruby on Rails环境

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

作者头像
星哥玩云
发布2022-07-04 13:01:50
5250
发布2022-07-04 13:01:50
举报
文章被收录于专栏:开源部署开源部署

本文介绍如何使用Nginx+Passenger来部署Ruby on Rails环境,本文使用的操作系统版本是CentOS6.5。 1.安装ruby

  wget http://cache.ruby-lang.org/pub/ruby/ruby-2.0.0-p594.tar.gz   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 http://s3.amazonaws.com/phusion-passenger/releases/passenger-4.0.57.tar.gz   wget http://nginx.org/download/nginx-1.4.4.tar.gz   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指定的内容还需要再次添加

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档