我正在尝试将 Django 项目部署到 AWS Lightsail 服务器。
我主要遵循本教程。我添加了一些 SSL 协议以提高安全性。
这个项目在我的 Ubuntu 18.04 VirtualBox 上完美运行,具有完全相同的设置和完全相同的组件,相同的 SSL 协议。但是在 Lightsail 上,它不响应浏览器请求。它会将我重定向到 https,但随后会死掉......我无法识别任何日志中的任何错误。这让我猜
/etc/systemd/system/webrock.socket:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/webrock.sock
[Install]
WantedBy=sockets.target
/etc/systemd/system/webrock.service:
[Unit]
Description=gunicorn daemon
Requires=webrock.socket
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/django/webrock
ExecStart=/home/ubuntu/django/webrock/venv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/webrock.sock \
core.wsgi:application
[Install]
WantedBy=multi-user.target
/etc/nginx/sites-available/webrock:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2 ipv6only=on;
include snippets/signed.conf; # path to certs
include snippets/params.conf; # cert related params
index index.html index.htm index.nginx-debian.html;
server_name mydomain.com www.mydomain.com; #changed this line by replacing domain name with dummy
location = /favicon.ico {access_log off; log_not_found off;}
location /static/ {
root /home/ubuntu/django/webrock;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/webrock.sock;
try_files $uri $uri/ =404;
}
}
server {
listen 80;
listen [::]:80;
server_name mydomain.com www.mydomain.com; #changed this line by replacing domain name with dummy
return 302 https://$server_name$request_uri;
}
我单独留下了 nginx 默认文件。现在每次我通过打卡服务器IP访问页面时,我都会看到nginx默认页面。当我使用域名时,我被重定向到 HTTPS,但是……什么都没有。我认为 gunicorn 和 nginx 之间存在一些中断,但我没有足够的经验来解决问题或解决问题。
正如我上面提到的,完全相同的设置在我的 VirtualBox 中的类似系统上运行完美。
我非常感谢您的建议和提示。
更新: 我禁用了 nginx 中的重定向部分并让它监听端口 80。它工作。现在我试图弄清楚如何将 HTTP2 和端口 443 引入到设置中。顺便说一句,我的 ufw 看起来像这样: