无法在 Ubuntu 上启动 uwsgi

Cannot start uwsgi on Ubuntu

我是 运行 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 服务器时,我在命令行中遇到了与之前相同的错误,但真正 st运行ge 的事情是我什至看不到关于错误是因为当我尝试执行 systemctl status uwsgi.service 时,它要么说:无法获取属性:消息收件人与消息总线断开连接而没有回复,要么它说:无法获取属性:连接超时

重启服务器无效,关机重启无效。

我是运行这家中国公司的云,腾讯云。不确定这是否有所作为,因为我真的不知道它们有什么特别之处。

非常感谢任何帮助,把我的头发拉到这里好几个小时。

原来是一个极其n00b的错误导致的。

按照指南,我从网站上复制了设置文件(或者我从网站上打印出来的 PDF,不记得了)。我什至将代码复制到记事本中(是的,我在 Windows 上)以确保没有奇怪的东西被复制过来,但显然所有的连字符都被一些看起来完全像 Sublime Text 中的连字符的奇怪字符所取代。

当然,当我上传所有这些文件时,尤其是 uwsgi.service 文件,它会给我一个 127 错误代码(找不到文件),但是当我在命令行中执行所有命令时,它们都有效很好...

我是在使用 VI 查看我的文件时才发现这个问题的,我发现它在应该是连字符的地方充满了这些奇怪的符号。

吸取了惨痛的教训...但是非常有趣的是网站/PDF 副本如何将连字符变成一些奇怪的字符。