rails+unicorn+nginx配置、shell启动脚本

1、nginx 配置文件

1.1、项目目录放在系统/var/www/

upstream app {
# Path to Unicorn SOCK file, as defined previously
	server unix:/var/www/app/shared/sockets/unicorn.sock fail_timeout=0;
#server 127.0.0.1:4000 fail_timeout=0;
}

server {
	listen 80;
	server_name app.example.cn;
	access_log  /var/log/nginx/app_access.log;
	error_log   /var/log/nginx/app_error.log;
	proxy_redirect off;
	root /var/www/app/public;
	location / {
		try_files $uri/index.html $uri @app;
	}
	location @app {
		proxy_pass http://app;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Host $http_host;
		proxy_redirect off;
	}

	error_page 500 502 503 504 /500.html;
	client_max_body_size 4G;
	keepalive_timeout 10;
}

2、unicorn配置文件,touch config/unicorn.rb

2.1创建文件 mkdir -p shared/pids shared/sockets shared/log

app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/shared"
working_directory app_dir

worker_processes 2
preload_app true
timeout 30

listen "#{shared_dir}/sockets/unicorn.sock", :backlog => 64

# Logging
stderr_path "#{shared_dir}/log/unicorn.stderr.log"
stdout_path "#{shared_dir}/log/unicorn.stdout.log"

pid "#{shared_dir}/pids/unicorn.pid"

#before_fork do |server, worker|
#  defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
#
#  old_pid = "#{ server.config[:pid] }.oldbin"
#  unless old_pid == server.pid
#    begin
#      Process.kill :QUIT, File.read(old_pid).to_i
#    rescue Errno::ENOENT, Errno::ESRCH
#    end
#  end
#end
#
#after_fork do |server, worker|
#  defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
#end

3、创建unicorn启动脚本

3.1 在项目目录下面创建sh mkdir ./sh touch server_crl.sh&& vi server_crl.sh

3.2、chomd +x ./server_crl.sh

#!/bin/sh

### BEGIN INIT INFO
# Provides:          unicorn
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the unicorn app server
# Description:       starts unicorn using start-stop-daemon
### END INIT INFO

set -e

USAGE="Usage: $0 <start|stop|restart|upgrade|rotate|force-stop>"

# app settings
AS_USER="ubuntu"
APP_NAME="app"
APP_ROOT="/var/www/$APP_NAME"
ENV="production"

# environment settings
PATH="$PATH"
CMD="cd $APP_ROOT && bundle exec unicorn -c config/unicorn.rb -E $ENV -D"
PID="$APP_ROOT/shared/pids/unicorn.pid"
OLD_PID="$PID.oldbin"

# make sure the app exists
cd $APP_ROOT || exit 1

sig () {
  test -s "$PID" && kill -$1 `cat $PID`
}

oldsig () {
  test -s $OLD_PID && kill -$1 `cat $OLD_PID`
}

run () {
  if [ "$(id -un)" = "$AS_USER" ]; then
    eval $1
  else
    su -c "$1" - $AS_USER
  fi
}

case $1 in
  start)
    sig 0 && echo >&2 "Already running" && exit 0
    echo "Starting $APP_NAME"
    run "$CMD"
    ;;
  stop)
    echo "Stopping $APP_NAME"
    sig QUIT && exit 0
    echo >&2 "Not running"
    ;;
  force-stop)
    echo "Force stopping $APP_NAME"
    sig TERM && exit 0
    echo >&2 "Not running"
    ;;
  restart|reload|upgrade)
    sig USR2 && echo "reloaded $APP_NAME" && exit 0
    echo >&2 "Couldn‘t reload, starting ‘$CMD‘ instead"
    run "$CMD"
    ;;
  rotate)
    sig USR1 && echo rotated logs OK && exit 0
    echo >&2 "Couldn‘t rotate logs" && exit 1
    ;;
  *)
    echo >&2 $USAGE
    exit 1
    ;;
esac
时间: 2024-10-12 18:46:52

rails+unicorn+nginx配置、shell启动脚本的相关文章

Centos 配置开机启动脚本启动 docker 容器

原文:Centos 配置开机启动脚本启动 docker 容器 Centos 配置开机启动脚本启动 docker 容器 Intro 我们的 Centos 服务器上部署了好多个 docker 容器,因故重启的时候就会导致还得手动去手动重启这些 docker 容器,为什么不写个脚本自动重启呢,于是就有了这篇文章. 批量启动 Docker 容器 之前我们有提到过关于 docker 的一些骚操作 ,可以直接使用 docker start $(docker ps -aq) # 启动所有容器 docker s

【Web】Nginx配置开机启动

在添加nginx服务之后,大家会希望开机伴随启动nginx,避免手动路径输入启动: nginx官方提供了启动脚本:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/ nginx 安装可以参考[Web]Nginx下载与安装 配置步骤 1.添加nginx服务,进入/etc/init.d/目录,新添加nginx脚本文件,内容就是官方起启动脚本(/etc/init.d/nginx),如下: 1 #!/bi

bash shell学习 01(配置和启动脚本)

bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls -la *sh 一. bash shell的配置变量可分为自定义变量和环境变量他们作用范围不同set 可以查看所有变量set|more 查看 enter一行一行查看set|less enter换行 pagedown换页 q退出 env只能查看环境变量 bash shell的设置方式1.通过自定义变

RHEL6编译安装nginx、开机启动脚本

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. nginx的模块需要第三方库的支持,检查是否安装下列库:zlib.zlib-devel(nginx扩展,gzip压缩).openssl.openssl-devel(nginx扩展).prce.prce-devel(重写rewrite.支持nginx伪静态):Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一

linux下Oracle自启动配置及启动脚本 12c 测试通过

参考:http://www.jb51.net/article/32214.htm 1. Oracle的一些基本参数[[email protected] ~]$ echo $ORACLE_SIDadela[[email protected] ~]$ echo $ORACLE_HOME /u01/app/oracle/product/12.1.0/db_1[[email protected] ~]$ echo $ORACLE_BASE /u01/app/oracle 2. 修改/etc/oratab

给nginx制作一个启动脚本

在安装nginx的时候,nginx并没有快捷的启动. 它是通过/usr/local/nginx/sbin/nginx 来启动的. 现在来制作一个启动脚本能在init.d/下启动. 创建编辑init.d/nginx vim /etc/init.d/nginx #!/bin/bash# chkconfig: - 30 21# description: http service.# Source Function Library. /etc/init.d/functions# Nginx Settin

nginx配置php启动异常|Cannot bind/listen socket - [2] No such file or directory.

问题描述:  每次启动都报如下错误 PHP Warning:  PHP Startup:  in Unknown on line 0<br /><b>Warning</b>:  PHP Startup:  in <b>Unknown</b> on line <b>0</b><br />PHP Warning:  PHP Startup:  in Unknown on line 0<br /><

nginx二进制编译-启动脚本编写

解压包 #tar zxf nginx-1.11.2.tar.gz 编写脚本 # vi nginx-running.sh 内容: #!/bin/bash# chkconfig: 2345 97 25#description nginx-server-scrytnginx=/usr/local/nginx/sbin/nginxcase "$1" in start ) netstat -anlpt | grep nginx if [ $? -eq 0 ] then echo "ng

shell启动脚本中的0、1、2、&gt;和&amp;解析

目录 一.0 1 2 文件描述符 二.>是重定向符,就是把前面输出的内容重定向到后面指定的位置 三.& 是一个描述符,如果1或2前不加&,会被当成一个普通文件 nohup sh gmv.sh >ls.txt 2>&1 &  后台运行脚本的一般格式,并且把日志(正常日志和错误日志)输出到ls.txt中 tail -f ls.txt可以动态查看日志 一.0 1 2 文件描述符在 shell 程式中,最常使用的 FD (file descriptor) 大概有三