如何testinggunicorn是否正在工作并与nginx进行通信?

我正在部署我的第一次尝试使用django + gunicorn + nginx

  • 我有Django的工作( curl -XGET http://127.0.0.0.1:8000工作正常,如果我运行开发服务器)。
  • 我有nginx工作的静态内容(例如,我可以检索http://example.com/static/my_pic.png在我的浏览器)。
  • 我没有从我的网站上获取任何wsgi内容,我一直没能find一个很好的故障排除指南(它是否适用于其他人?)。 我使用主pipe开始gunicorn,它报告它确实在运行:

(在壳:)

 supervisorctl status my_app my_app RUNNING pid 1002, uptime 0:29:51 

这是我用来启动它的样板脚本:

 #!/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 

下面是(精简的)nginxconfiguration文件:

 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/; } } 

所以:gunicorn正在运行,nginx正在运行…应该执行什么testing(以及如何?)以确定gunicorn是否正确地执行了wsgi的东西(以及如果nginx正确地代理所述东西)?

编辑:我已经把问题缩小到gunicorn和nginx之间通过unix socket的通信。 如果我更改$ SOCKFILE绑定到0.0.0.0:80并停止nginx,那么应用程序的页面将从我的网站提供。 坏消息是两个conf文件之间的套接字文件string是完全一样的,所以我不知道他们为什么不通信。 我想这意味着nginx没有正确的读取和传递数据呢?

其实我已经做了有关Django + Nginx + Gunicorn设置的该死的好教程。
看看,应该清楚。

https://reduxblog.com/post/setting-django-nginx-gunicorn-postgresql/