【发布时间】:2017-01-19 08:43:20
【问题描述】:
我正在学习教程: http://www.obeythetestinggoat.com/book/chapter_09.html
所以,我在 DigitalOcean 中有两个站点,分别是 nginx 和 gunicorn,一个用于舞台,一个用于普通... stage.nossalista.tk 和 nossalista.tk,首先我设法成功部署并运行第一阶段,但是在上传正常并为我的正常服务添加另一个 systemd 服务后,一切都停止工作了.. 我要把所有我的配置,希望你们给我一些提示可能是问题....
我从 nossalista.tk 收到错误 400,我的 stage.nossalista.tk 收到错误 502
[更新]:我只能在 stage.nossalista.tk:9000 中访问该网站 .... 希望这对那些想帮助我的人有所帮助
首先我做的是配置
/etc/nginx/sites-available/stage.nossalista.tk:
server {
listen 80;
server_name nossalista.tk;
location /static {
alias /home/tyago/sites/nossalista.tk/static;
}
location / {
proxy_set_header Host $host;
proxy_pass http://unix:/tmp/nossalista.tk.socket;
}
}
其次我在
中为这个阶段站点配置服务/etc/systemd/system/gunicorn.service:
[Unit]
Description=Gunicorn server for stage.nossalista.tk
After=network.target
[Service]
User=tyago
Group=www-data
WorkingDirectory=/home/tyago/sites/stage.nossalista.tk/source
ExecStart=/home/tyago/sites/stage.nossalista.tk/virtualenv/bin/gunicorn --workers 3 --bind unix:/tmp/stage.nossalista.tk.socket superlists.wsgi:application
Restart=always
[Install]
WantedBy=multi-user.target
然后在
中配置我的socket服务/etc/systemd/system/gunicorn.socket:
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn/socket
ListenStream=0.0.0.0:9000
ListenStream=[::]:8000
[Install]
WantedBy=sockets.target
然后是 gunicorn.conf 文件 (tyago 是我的用户)
/usr/lib/tmpfiles.d/gunicorn.conf
d /run/gunicorn 0755 tyago tyago -
在我启用两者之后:
systemctl enable gunicorn.service
systemctl enable gunicorn.socket
systemctl start gunicorn.service
systemctl start gunicorn.socket
重新启动服务器后,我能够访问 stage.nossalista.tk。伟大的! 但问题是当把正常的网站上 我在 systemd 中创建了另一个服务,这次叫做
gunicorn-nossalista.tk.service:
[Unit]
Description=Gunicorn server for www.nossalista.tk
After=network.target
[Service]
User=tyago
Group=www-data
WorkingDirectory=/home/tyago/sites/nossalista.tk/source
ExecStart=/home/tyago/sites/nossalista.tk/virtualenv/bin/gunicorn --workers 3 --bind unix:/tmp/nossalista.tk.socket superlists.wsgi:application
Restart=always
[Install]
WantedBy=multi-user.target
并在
中配置/etc/nginx/sites-available/nossalista.tk 为:
[Unit]
Description=Gunicorn server for www.nossalista.tk
After=network.target
[Service]
User=tyago
Group=www-data
WorkingDirectory=/home/tyago/sites/nossalista.tk/source
ExecStart=/home/tyago/sites/nossalista.tk/virtualenv/bin/gunicorn --workers 3 --bind unix:/tmp/nossalista.tk.socket superlists.wsgi:application
Restart=always
[Install]
WantedBy=multi-user.target
我的 gunicorn.service 、 gunicorn.socket 和 gunicorn-nossalista.tk.serice 的 systemctl 状态都是 Active
检查我的 nginx 错误日志,我发现只有我的阶段文件在那里记录以下错误:
Nginx 错误日志
2016/09/11 21:16:17 [crit] 3173#3173: *39 connect() to unix:/tmp/stage.nossalista.tk.socket failed (2: No such file or directory) while connecting to upstream, client: 189.34.5.XXX, server: stage.nossalista.tk, request: "GET / HTTP/1.1", upstream: "http://unix:/tmp/stage.nossalista.tk.socket:/", host: "stage.nossalista.tk"
好的,我更改了套接字以与正常站点一起使用,所以我的错误可能是我没有用于 stage.nossalista 的套接字...但是 为什么我没有从我的正常站点看到任何日志错误消息 如果我配置正确 /etc/nginx/sites-enabled/nossalista.tk 在 error.log 中?在访问日志中,当我通过普通站点(nossalista.tk)访问时,我得到了这个
访问 Nginx 日志:
189.34.5.XXX - - [11/Sep/2016:21:53:30 +0000] "GET / HTTP/1.1" 400 37 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"
我知道那里有些东西真的很奇怪,但是如果我在 sites-enabled/nossalista.tk 中有它,我找不到为什么我得到错误 400 所有配置都正确指向正确的套接字等等......
如果你们帮助我,我会非常满意,我会帮助任何有类似错误的人......我只需要一些帮助来让它工作!
我的 sudo nginx -t:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
我真的不知道要检查什么……如果你们有一些提示,那就太好了!
我认为我的问题出在插座上……可能我需要 2 个插座,但不知道该怎么做!
对于这个大问题,我很抱歉......
【问题讨论】:
-
你的问题是为什么看不到错误日志?
-
将您的
/etc/systemd/system/gunicorn.socket文件复制到stage.nossalista.tk.socket和nossalista.tk.socket并将它们放在某个地方。然后更改端口号。然后配置您的服务以使用这些套接字。然后将 nginx 配置为proxy_pass到这些套接字 -
欢迎您的评论,我现在就开始您的解决方案!
-
所以,我按照你说的做了……现在我有 2 个服务(stage 和 normal)和 2 个套接字,但现在我只能通过 nossalista.tk:8000 和 stage.nossalista 访问。 tk:8001,完美,但我如何消除指定端口的需要?感谢您的帮助 !我觉得这是在 nginx 配置中