可能像很多人一样,我正在尝试按照Digitalocean上的教程设置一个Flask应用程序,一个uWSGI实例,并最终与nGinx一起服务。我正在尝试在运行Ubuntu 20.04.3 LTS的Azure环境中的VM上设置此设置。
https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04
我卡在第5步了。我不能为我的生活弄清楚为什么我不能成功启动我的uWSGI实例作为系统服务由于203权限错误。我能够让uWSGI实例和Flask应用程序在虚拟环境中一起工作,并在http://127.0.0.1:5000/上访问测试页面。
我首先尝试构建服务并指向我在/home/user文件夹中的ini文件。随后我了解到SELinux可能会阻塞二进制文件,如果它被放置在/home/文件夹中,所以我将此操作的所有内容移动到我的/usr/local/bin文件夹中,但我仍然无法启动服务。我已经chmod了问题文件夹中的所有文件,以便我的用户具有完整的777权限。
我的服务文件(radiolland .service):
[Unit]
Description=uWSGI instance to serve myproject
After=network.target
[Service]
User=azureuser
Group=www-data
WorkingDirectory=/usr/local/bin/radioland/radioland/
Environment="PATH=/usr/local/bin/radioland/radioland/bin"
ExecStart=/usr/local/bin/radioland/radioland --ini radioland.ini
[Install]
WantedBy=multi-user.target
我的radiolland .ini文件:
[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = myproject.sock
chmod-socket = 660
vacuum = true
die-on-term = true
logto = /usr/local/bin/radioland/radioland/myproject.log
权限(我只是在'azureuser'用户名下运行这个):
total 52
drwxr-xr-x 7 azureuser azureuser 4096 Sep 10 23:28 .
drwxrwxrwx 7 azureuser www-data 4096 Sep 9 20:00 ..
-rw-r--r-- 1 azureuser azureuser 12288 Sep 9 19:18 .radioland.ini.swp
drwxrwxr-x 2 azureuser azureuser 4096 Sep 8 16:24 __pycache__
drwxrwxr-x 3 azureuser azureuser 4096 Sep 8 06:35 flaskr
drwxrwxr-x 2 azureuser azureuser 4096 Sep 8 06:35 instance
drwxrwxr-x 6 azureuser azureuser 4096 Sep 10 06:47 myprojectenv
-rw-rw-r-- 1 azureuser azureuser 546 Sep 8 16:24 myscript.py
-rwxr-xr-x 1 azureuser azureuser 191 Sep 10 23:20 radioland.ini
drwxrwxr-x 6 azureuser azureuser 4096 Sep 8 06:35 venv
-rw-rw-r-- 1 azureuser azureuser 79 Sep 8 16:04 wsgi.py
最后,我总是收到的错误(包括当将用户名更改为root时):
radioland.service - uWSGI instance to serve myproject
Loaded: loaded (/etc/systemd/system/radioland.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2021-09-10 23:40:17 UTC; 2h 30min ago
Process: 127087 ExecStart=/usr/local/bin/radioland/radioland --ini radioland.ini (code=exited, status=203/EXEC)
Main PID: 127087 (code=exited, status=203/EXEC)
Sep 10 23:40:17 RadioLandVM systemd[1]: Started uWSGI instance to serve myproject.
Sep 10 23:40:17 RadioLandVM systemd[127087]: radioland.service: Failed to execute command: Permission denied
Sep 10 23:40:17 RadioLandVM systemd[127087]: radioland.service: Failed at step EXEC spawning /usr/local/bin/radioland/radioland: Permission denied
Sep 10 23:40:17 RadioLandVM systemd[1]: radioland.service: Main process exited, code=exited, status=203/EXEC
Sep 10 23:40:17 RadioLandVM systemd[1]: radioland.service: Failed with result 'exit-code'.
我完全迷路了。我不能指出服务器上任何其他会阻止服务启动的东西。
根据您的日志,我认为文件/usr/local/bin/radioland/radioland
没有可执行标志。这也会导致Permission Denied在Linux上。
你可以试着:
sudo chmod +x /usr/local/bin/radioland/radioland