我想在nginx webserver + gunicorn上运行我的django应用程序。 我已经按照教程设置了大部分内容,并且达到了我需要设置Nginx的程度。 我有我的应用程序:
/home/ec2-user/davidbien
这也是我的virtualenv安装的地方。 在davidbien文件夹里面我有以下脚本guni.sh:
#!/bin/bash
NAME="test"
DJANGODIR=/home/ec2-user/davidbien
SOCKFILE=/home/ec2-user/virtual/run/gunicorn.sock
USER=ec2-user
GROUP=ec2-user
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=davidbien.settings
DJANGO_WSGI_MODULE=davidbien.wsgi
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source ../virtual/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start your Django Unicorn
# (do not use --daemon)
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
这似乎运行正常,因为我在运行时没有得到任何东西。我也可以使用
运行应用程序gunicorn davidbien.wsgi:application --bind 0.0.0.0:8000
这很好用。
现在,我进入nginx设置。 我安装了它并在/ etc / nginx /中创建了两个文件夹 - sites-available和sites-enabled。 然后我在sites-available中创建了一个test.conf文件,并在下面插入了以下代码:
upstream app_server_djangoapp {
server 35.177.26.219:8000 fail_timeout=0;
}
server {
listen 80;
server_name 35.177.26.219;
access_log /var/log/nginx/guni-access.log;
error_log /var/log/nginx/guni-error.log info;
keepalive_timeout 5;
# path for static files
root /home/ec2-user/davidbien/davidbien/static;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://app_server_djangoapp;
break;
}
}
}
我还编辑了nginx.conf文件,如下所示:
http {
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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /sites-enabled/*.*;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
}
我重新启动nginx并收到此错误:
无法访问此网站 35.177.26.219拒绝联系。
检查日志后我发现了这个:
2017/11/11 17:21:43 [error] 3524#0: *1 connect() failed (111: Connection refuseed) while connecting to upstream, client: 2.96.149.96, server: 35.177.26.219, request: "GET /favicon.ico HTTP/1.1", upstream: "http://35.177.26.219:8000/favicon.ico", host: "35.177.26.219", referrer: "http://35.177.26.219/"
道歉,需要冗长的解释。 现在的问题是,出了什么问题? 感谢。
EDIt:根据Marco的评论,来自gunicorn的日志:
usage: gunicorn [OPTIONS] [APP_MODULE]
gunicorn: error: No application module specified.
EDIT2:编辑的gunicorn剧本。