这个问题有点长,但我试着从我的疑惑和试验中提供尽可能多的信息。我一直在摆弄gunicorn和nginx的配置,以在AWS EC2 ubuntu服务器上托管3个django项目。我一直无法对它们进行排序以运行,也无法完全理解它们的设置。
**(1)**首先我有他们如下(每个项目文件夹有自己的venv设置):
drwxrwxr-x 10 ubuntu ubuntu 4096 Mar 26 02:10 first_project/
drwxrwxr-x 7 ubuntu ubuntu 4096 Mar 26 01:20 second_project/
drwxrwxr-x 7 ubuntu ubuntu 4096 Mar 26 01:25 third_project/
**(2)**我尝试在/etc/systemd/system/
文件夹中创建单独的.socket文件
-rw-r--r-- 1 root root 112 Mar 26 02:17 gunicorn_first.socket
-rw-r--r-- 1 root root 112 Mar 26 02:19 gunicorn_second.socket
-rw-r--r-- 1 root root 112 Mar 26 02:22 gunicorn_third.socket
(3),并将所有这些内容包括在内:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
**(4)**在添加.socket文件后,我添加了.service文件
-rw-r--r-- 1 root root 112 Mar 26 02:35 gunicorn_first.service
-rw-r--r-- 1 root root 112 Mar 26 02:39 gunicorn_second.service
-rw-r--r-- 1 root root 112 Mar 26 02:44 gunicorn_third.service
(5)并增加内容如下(第N次-〉第一、第二、第三次)
[Unit]
Description=gunicorn daemon
Requires=gunicorn_NTH.socket
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/NTH_project
ExecStart=/home/ubuntu/NTH_project/venv/bin/gunicorn --workers 3 --access-logfile - --bind unix:/run/gunicorn.sock NTH_project.wsgi:application
[Install]
WantedBy=multi-user.target
**(6)**最后是我的nginx默认配置(/etc/nginx/sites-enabled/default)
,如下所示:我已经打开了端口8081、8082、8083 -每个项目一个
server {
listen 8081;
server_name MY_IP;
location /first_project {
root /home/ubuntu/first_project;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn_first.sock;
}
}
server {
listen 8082;
server_name MY_IP;
location /second_project {
root /home/ubuntu/second_project;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn_second.sock;
}
}
server {
listen 8083;
server_name MY_IP;
location /third_project {
root /home/ubuntu/third_project;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn_third.sock;
}
}
上面的方法不起作用,所以我用http://unix:/run/gunicorn.sock
-〉替换了每一个中的proxy_pass,如果我这样做了,只有最后一个应用程序(8083)在工作,当我从postman (http://MY_IP:8083/some_endpoint)
发送请求到端点时。
有人能帮助我如何确保所有3个应用程序都在运行吗
(http://MY_IP:8081/some1_endpoint)
(http://MY_IP:8082/some2_endpoint)
(http://MY_IP:8083/some3_endpoint)
如果你能指出1-6中哪些部分可以编辑,那就太好了,提前谢谢。
1条答案
按热度按时间hc8w905p1#
你提到gunicorn.sock可以工作(对于其中一个站点)。在进行最初的更改后,套接字和服务配置是否重新启动?所有的服务是否都在运行?
是否可以直接访问这些服务(例如,当不使用nginx作为代理时)?请考虑修改gunicorn exec并查看错误日志。
一旦服务被确认为可访问,检查nginx配置是否有错误,确保proxy_params在预期的位置,或者如果有问题,删除此行并直接输入任何所需的代理配置。
验证后,重新启动nginx以重新建立与Gunicorn的套接字连接,并验证是否没有其他问题。