Gunicorn和Django与Upstart和Nginx

首先我有很多Django实例的设置和运行这样.

在每个项目中,我都有一个script.sh shell脚本,可以开始弹药等:

 #!/bin/bash
  set -e
  LOGFILE=/var/log/gunicorn/app_name.log
  LOGDIR=$(dirname $LOGFILE)
  NUM_WORKERS=3
  # user/group to run as
  USER=root
  GROUP=root
  PORT=8060
  IP=127.0.0.1
  cd /var/www/webapps/app_name
  source ../bin/activate
  test -d $LOGDIR || mkdir -p $LOGDIR
  exec /var/www/webapps/bin/gunicorn_django -b $IP:$PORT -w $NUM_WORKERS \
    --user=$USER --group=$GROUP --log-level=debug --log-file=$LOGFILE 2>>$LOGFILE

当使用bash script.sh从命令行运行此脚本时,该网站工作完美,所以Nginx设置正确.

一旦我使用upstart与服务app_name启动应用程序启动,然后停止.它甚至不写入日志文件.

这是/etc/init/app_name.conf中的app_name.conf文件

description "Test Django instance"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /var/www/webapps/app_name/script.sh

那么这里有什么问题?因为从命令行运行的原因,而是做起来不起作用.我不知道在哪里看错了什么?

最佳答案
嗯,我想出来了如果有人遇到这样的事情…

它基本上缺乏关于shell脚本的知识.

在注释掉每一行o脚本文件后,我发现了以下行的问题:source ../bin/activate和之后的所有内容.

问题是它前面有2个空格,现在我知道它需要一直保持一致.现在它有效

这是我如何想出来的:

tail -f /var/log/syslog
Jun 26 10:54:59 saturn7 init: app_name main process (3521) terminated with status 127

我发现状态127基本上是一个没有找到的命令.所以我知道问题其实是在脚本文件中.

但我不知道为什么bash ./script.sh会工作,不告诉我什么是错的?我需要阅读关于schell脚本

相关文章

###进入nginx 目录cd /usr/local/nginx###递归显示 2 级目录...
在cmd命令窗口输入下面命令进行查看 tasklist /fi "ima...
Nginx显示500错误原因和解决方法
linux系统下启停nginx的命令
nginx 的 default_server 指令可以定义默认的 server出处理一...
Nginx是一款轻量级的 Web 服务器、反向代理服务器,由于它的...