我正在运行Ubuntu 16.04,尝试进行Nginx + uWsgi + Django设置。我在本教程中遵循了这封信:https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-16-04。
uWsgi ini文件:
[uwsgi]
project = san_project
uid = ubuntu
base = /home/%(uid)
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = /run/uwsgi/%(project).sock
chown‐socket = %(uid):www‐data
chmod‐socket = 660
vacuum = true
Nginx服务器块文件
server {
listen 80;
server_name 115.159.216.67;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/san_project;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/san_project.sock;
}
}
和systemd服务文件
[Unit]
Description=uWSGI Emperor service
[Service]
ExecStartPre=/bin/bash ‐c 'sudo mkdir ‐p /run/uwsgi; sudo chown ubuntu:www‐data /run/uwsgi'
ExecStart=/usr/local/bin/uwsgi ‐‐emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi‐user.target
一切顺利,直到我尝试启动uWsgi,我猜这个问题出在.service文件中。
当我执行sudo systemctl start uwsgi
时,错误是: uwsgi.service的作业失败,因为控制进程退出并显示错误代码。所以我做了systemctl status uwsgi.service
,我发现问题发生在ExecStartPre
行,我在命令行中运行该行,看起来他们没有权限创建目录或更改其所有者所以我在这些前面添加了sudo
。
现在当我尝试启动uwsgi服务器时,我在命令行中得到了与之前相同的错误,但真正奇怪的是我甚至看不到有关错误的任何细节是因为当我尝试做的时候systemctl status uwsgi.service
或者说:无法获取属性:邮件收件人与邮件总线断开连接而没有回复,或者说:无法获取属性:连接超时。
重新启动服务器不起作用,将其关闭并重新启动它不起作用。
我是在中国公司的云腾讯云上运行的。不确定这是否有所作为,因为我真的不知道它们有什么特别之处。
任何帮助都会非常感激,把我的头发拉出来好几个小时。
答案 0 :(得分:1)
原来是由于一个极端的n00b错误造成的。
在遵循指南的同时,我从网站上复制了设置文件(或者我从网站打印出来的PDF,不记得了)。我甚至将代码复制到记事本中(是的,我在Windows上),以确保没有任何奇怪的复制过来,但显然所有的连字符都被一些看起来像Sublime Text中的连字符的奇怪字符所取代。
当然,当我上传所有这些文件,尤其是uwsgi.service
文件时,它会给我一个127错误代码(找不到文件),但是当我在命令行中执行所有命令时,它们都能正常工作。 ..
当我使用VI查看我的文件时,我才发现问题,并且看到它被填充了连字符应该是的这些奇怪的符号。
经验教训......但网站/ PDF副本如何将连字符变成某个奇怪的字符非常有趣。