我正在尝试部署阅读文档我自己服务器上的实例。推荐的部署方式是使用 Gunicorn + nginx 和 postgres。因为基本上没有关于如何执行此操作的文档(除了他们的 fabfile,当然,它只适用于他们的服务器),我一直在尝试手动设置自己的服务器。
这是我的nginx.conf
:
server {
listen 80 default;
server_name mysite.com;
access_log /var/log/nginx/mysite.access.log;
error_log /var/log/nginx/mysite.error.log;
location /favicon.ico {
root /home/mysite/Code/checkout/readthedocs.org/media/images;
break;
}
location robots.txt {
root /home/mysite/Code/checkout/readthedocs.org/media;
break;
}
location /static/ {
alias /home/mysite/Code/checkout/readthedocs.org/media/;
expires 30d;
break;
}
location /media/ {
alias /home/mysite/Code/checkout/readthedocs.org/media/;
expires 30d;
break;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://127.0.0.1:8888;
}
}
settings.py
可以找到 django 的配置这里。我唯一改变的settings.py
就是添加,gunicorn
这样INSTALLED_APPS
我就可以用它运行 gunicorn。
我用来运行 gunicorn 服务器的命令是:
./manage.py run_gunicorn -b 127.0.0.1:8888
然后,如果我尝试从本地浏览器访问127.0.0.1
,它会工作,但总是显示 404 页面,无论我输入什么 URL。运行./manage.py runserver
将正确运行所有内容。
现在我不是系统管理员,之前对 django、gunicorn 或 nginx 基本没有经验。我已经在 Google 上搜索并尝试了几个星期的配置,但一无所获。我的问题是:
- 我如何知道 gunicorn 调用了哪个 django 路由?我可以调试它吗?我能找到的所有日志文件都没有显示这一点。
- 您觉得我的配置文件有什么问题吗?如果是,您能告诉我哪里出了问题吗?
非常感谢。
答案1
您是否尝试过在端口 8888 加载该网站以确保它正常运行?
你收到的 404 消息是否包含nginx在文本中?这表明 nginx 在查找资源时遇到了问题,而不是端口 8888 上的服务。在这种情况下,您可以对配置文件进行故障排除。
您正在记录 nginx 中的访问,因此您可以查看日志以获取更多信息。tail -n 10 /var/log/nginx/mysite.access.log
将让您看到该日志的最后 10 行。
默认情况下,nginx 使用合并日志格式:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
这应该可以帮助您弄清楚日志文件中每一列的含义。