Esc*_*her 7 django nginx gunicorn
我正在部署我第一次尝试使用django + gunicorn + nginx.
curl -XGET http://127.0.0.0.1:8000如果我运行开发服务器,工作正常).http://example.com/static/my_pic.png在我的浏览器中检索).(在shell :)
supervisorctl status my_app
my_app RUNNING pid 1002, uptime 0:29:51
Run Code Online (Sandbox Code Playgroud)
这是我用来启动它的样板脚本:
#!/bin/bash
#script variables
NAME="gunicorn_myapp" # Name of process
DJANGODIR=/webapps/www/my_project # Django project directory
SOCKFILE=/webapps/www/run/gunicorn.sock # communicte using this socket
USER=app_user # the user to run as
GROUP=webapps # the group to run as
NUM_WORKERS=3
DJANGO_SETTINGS_MODULE=my_project.settings # settings file
DJANGO_WSGI_MODULE=my_project.wsgi # WSGI module name
# Activate the virtual environment
cd $DJANGODIR
source ../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
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE
Run Code Online (Sandbox Code Playgroud)
这是(精简的)nginx配置文件:
upstream my_server {
server unix:/webapps/www/run/gunicorn.sock fail_timeout=10s;
}
server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
client_max_body_size 4G;
access_log /webapps/www/logs/nginx-access.log;
error_log /webapps/www/logs/nginx-error.log;
location /favicon.ico { access_log off; log_not_found off; }
location /static/ {
autoindex on;
alias /webapps/www/my_project/my_app/static/;
}
location /media/ {
autoindex on;
alias /webapps/www/my_project/my_app/media/;
}
location / {
proxy_pass http://my_server;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://example.com;
break;
}
}
location /robots.txt {
alias /webapps/www/my_project/my_app/static/robots.txt ;
}
# Error pages
error_page 500 502 503 504 /500.html;
location = /500.html {
root /webapps/www/my_project/my_app/static/;
}
}
Run Code Online (Sandbox Code Playgroud)
所以:gunicorn正在运行,nginx正在运行...我应该执行什么测试(以及如何?)以确定gunicorn是否正确地执行了wsgi(如果nginx正确地代理了所说的东西)?
编辑:我已经通过unix socket将问题缩小到gunicorn和nginx之间的通信.如果我将$ SOCKFILE更改为绑定0.0.0.0:80并停止nginx,则应用程序的页面将从我的网站提供.坏消息是套接字文件字符串在两个conf文件之间完全相同,所以我不知道他们为什么不进行通信.我想这意味着nginx没有正确获取并传递数据呢?
转到项目目录:
cd projectname
gunicorn --log-file=- projectname.wsgi:application
Run Code Online (Sandbox Code Playgroud)
和
sudo systemctl status gunicorn
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7677 次 |
| 最近记录: |