2016-10-08 147 views
1

爲了切換到Nginx,我遇到了配置問題,並得到了502網關錯誤。下面是錯誤日誌上的連接:使用FlaskApp配置uWSGI

此命令將一切工作正常,如果運行:

tail -f error.log 
2016/10/08 16:09:31 [crit] 21682#21682: *29 connect() to unix:/var/www/FlaskApp/FlaskApp/runserver.sock failed (13: Permission denied) while connecting to upstream, client: 73.188.249.47, server: ceejcalvert.com, request: "GET/HTTP/1.1", upstream: "uwsgi://unix:/var/www/FlaskApp/FlaskApp/runserver.sock:", host: "website.com" 

如果我在服務器上的終端是我可以通過手動指揮插座獲取網站上去:

uwsgi -s /var/www/FlaskApp/FlaskApp/runserver.sock -w runserver:app --chmod-socket=666 

問題是我不能讓它在守護進程模式下工作。我的配置如下:

$ cat /etc/systemd/system/runserver.service 

[Unit] 
Description=uWSGI instance to serve runserver 
After=network.target 

[Service] 
User=username 
Group=www-data 
WorkingDirectory=/var/www/FlaskApp/FlaskApp 
Environment="PATH=/var/www/FlaskApp/FlaskApp/venv/bin" 
ExecStart=/var/www/FlaskApp/FlaskApp/venv/bin/runserver.sock --ini runserver.ini 

[Install] 
WantedBy=multi-user.target 

...

cat /var/www/FlaskApp/FlaskApp/runserver.ini 

[uwsgi] 
module = wsgi:app 

master = true 
processes = 5 

logto = /home/jmc856/error.log 

socket = runserver.sock 
chmod-socket = 666 
vacuum = true 

die-on-term = true 

假設站點提供鏈接到網站啓用,

cat /etc/nginx/sites-available/runserver 

server { 
    listen 80; 
    server_name website.com; 

location/{ 
    include uwsgi_params; 
    uwsgi_pass unix:/var/www/FlaskApp/FlaskApp/runserver.sock; 
    } 
} 

任何明顯我失蹤?

當我運行下面,我得到退出代碼3.

sudo systemctl status runserver 

runserver.service - uWSGI instance to serve runserver 
Loaded: loaded (/etc/systemd/system/runserver.service; enabled; vendor preset: enabled) 
Active: failed (Result: exit-code) since Sat 2016-10-08 16:08:45 EDT; 20min ago 
Main PID: 22365 (code=exited, status=203/EXEC) 

Oct 08 16:08:45 FirstNameLastName.com systemd[1]: Stopped uWSGI instance to serve runserver. 
Oct 08 16:08:45 FirstNameLastName.com systemd[1]: Started uWSGI instance to serve runserver. 
Oct 08 16:08:45 FirstNameLastName.com systemd[1]: runserver.service: Main process exited, code=exited, status=203/EXEC 
Oct 08 16:08:45 FirstNameLastName.com systemd[1]: runserver.service: Unit entered failed state. 
Oct 08 16:08:45 FirstNameLastName.com systemd[1]: runserver.service: Failed with result 'exit-code'. 
+0

您是否試過在systemd下運行uWSGI服務的[Emperor](https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html)方法? –

回答

1

解決了我的問題,這個碼頭工人的形象。大部分我的配置都很好。這是一個清單,以確保您收到502網關錯誤。

1)我首先添加了所有絕對路徑到配置文件。例如我改變systemd配置於:

$ cat /etc/systemd/system/runserver.service 

[Unit] 
Description=uWSGI instance to serve runserver 
After=network.target 

[Service] 
User=username 
Group=www-data 
WorkingDirectory=/var/www/FlaskApp/FlaskApp 
Environment="PATH=/var/www/FlaskApp/FlaskApp/venv/bin" 
ExecStart=/var/www/FlaskApp/FlaskApp/venv/bin/runserver.sock --ini /var/www/FlaskApp/FlaskApp/runserver.ini 

[安裝] WantedBy = multi-user.target

2)更改.ini文件直接調用uWSGI應用程式:

cat /var/www/FlaskApp/FlaskApp/runserver.ini 

[uwsgi] 
chdir=/var/Webpage/ 
wsgi-file = wsgi.py 
callable = app 

master = true 
processes = 5 

logto = /home/error.log 

socket = runserver.sock 
chmod-socket = 666 
vacuum = true 

die-on-term = true 

3)確保FlaskApp主機爲0.0.0.0:

if __name__ == "__main__": 
app.run(host='0.0.0.0') 

4)使用這些命令嘗試查找走出失敗的地方。

確保CONFIGS有正確的語法

$ sudo nginx -t 

確保nginx的守護進程運行正常

$ systemctl status nginx.service 

確保uWSGI實例來滿足{}的應用程序正在運行。

$ systemctl 

如果一切是好的,仍然發現錯誤,搜索失敗

$ sudo journalctl 

而且

$ sudo tail -f /var/log/nginx/error.log 

如果一切運行正常,請務必執行以下操作:

$ sudo systemctl restart {app} 
$ sudo start {app} 
$ sudo enable {app} 

那個la st命令是我忘記的,並且阻止我實現我的配置很長一段時間。在我的情況{app}是'runserver'