【发布时间】:2021-09-11 02:11:20
【问题描述】:
可能和很多人一样,我正在尝试按照 Digitalocean 上的教程来设置 Flask 应用程序、uWSGI 实例,并最终使用 nGinx 提供服务。我正在尝试在运行 Ubuntu 20.04.3 LTS 的 Azure 环境中的 VM 上进行设置。
我被困在第 5 步。我无法弄清楚为什么由于 203 权限错误,我无法成功地将我的 uWSGI 实例作为系统服务启动。我能够让 uWSGI 实例和 Flask 应用程序在虚拟环境中协同工作,并在 http://127.0.0.1:5000/ 访问测试页面。
我首先尝试构建服务并指向我在 /home/user 文件夹中的 ini 文件。我随后读到如果将二进制文件放在 /home/ 文件夹中,SELinux 可能会阻止它,所以我将此操作的所有内容移动到我的 /usr/local/bin 文件夹中,但我仍然无法启动该服务。我已经对相关文件夹中的所有文件进行了 chmod,以便我的用户拥有完整的 777 权限。
我的服务文件 (radioland.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
我的 radioland.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 , /usr/local , /usr/local/bin ..?