Flask应用创建系统服务时如何解决(code=exited,status=203/Exec)
How to resolve (code=exited,status=203/Exec) while creating a system service for Flask app
我正在尝试使用系统服务使用 uWSGI
和 nginx
部署一个烧瓶应用程序。我看了很多教程,除了 .service
文件中的更改外,所有教程都有相同的过程。
这是我的服务文件:
[Unit]
Description=Flask web server
[Install]
WantedBy=multi-user.target
[Service]
User=schirag
PermissionsStartOnly=true
ExecStart=/home/schirag/server.py
TimeoutSec=600
Restart=on-failure
RuntimeDirectoryMode=755
我得到服务文件的状态如下:
flask.service - Flask web server
Loaded: loaded (/etc/systemd/system/flask.service; disabled; vendor preset: disable>
Active: failed (Result: exit-code) since Wed 2021-08-11 11:20:25 IST; 6s ago
Process: 13131 ExecStart=/home/schirag/server.py (code=exited, status=203/EXEC)
Main PID: 13131 (code=exited, status=203/EXEC)
Aug 11 11:20:24 localhost.localdomain systemd[1]: flask.service: Main process exited, code=exited, status=203/EXEC
Aug 11 11:20:24 localhost.localdomain systemd[1]: flask.service: Failed with result 'exit-code'.
Aug 11 11:20:25 localhost.localdomain systemd[1]: flask.service: Service RestartSec=100ms expired, scheduling restart.
Aug 11 11:20:25 localhost.localdomain systemd[1]: flask.service: Scheduled restart job, restart counter is at 5.
Aug 11 11:20:25 localhost.localdomain systemd[1]: Stopped Flask web server.
Aug 11 11:20:25 localhost.localdomain systemd[1]: flask.service: Start request repeated too quickly.
Aug 11 11:20:25 localhost.localdomain systemd[1]: flask.service: Failed with result 'exit-code'.
Aug 11 11:20:25 localhost.localdomain systemd[1]: Failed to start Flask web server.
我试过从其他来源更改服务文件,也尝试过更改目录权限,仍然出现同样的错误,无法使用该服务启动应用程序。虽然我可以 运行 使用 uwsgi 使用以下命令手动应用程序 - uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi
您的 ExecStart
需要更新。您必须提供文件的位置和解释器。由于您使用的是 python,您的代码应该是这样的:
[Unit]
Description=Flask web server
[Service]
User=schirag
PermissionsStartOnly=true
ExecStart=/usr/bin/python3 /home/schirag/server.py
TimeoutSec=600
Restart=on-failure
RuntimeDirectoryMode=755
[Install]
WantedBy=multi-user.target
使用命令 type python3
获取 python 的位置。
我正在尝试使用系统服务使用 uWSGI
和 nginx
部署一个烧瓶应用程序。我看了很多教程,除了 .service
文件中的更改外,所有教程都有相同的过程。
这是我的服务文件:
[Unit]
Description=Flask web server
[Install]
WantedBy=multi-user.target
[Service]
User=schirag
PermissionsStartOnly=true
ExecStart=/home/schirag/server.py
TimeoutSec=600
Restart=on-failure
RuntimeDirectoryMode=755
我得到服务文件的状态如下:
flask.service - Flask web server
Loaded: loaded (/etc/systemd/system/flask.service; disabled; vendor preset: disable>
Active: failed (Result: exit-code) since Wed 2021-08-11 11:20:25 IST; 6s ago
Process: 13131 ExecStart=/home/schirag/server.py (code=exited, status=203/EXEC)
Main PID: 13131 (code=exited, status=203/EXEC)
Aug 11 11:20:24 localhost.localdomain systemd[1]: flask.service: Main process exited, code=exited, status=203/EXEC
Aug 11 11:20:24 localhost.localdomain systemd[1]: flask.service: Failed with result 'exit-code'.
Aug 11 11:20:25 localhost.localdomain systemd[1]: flask.service: Service RestartSec=100ms expired, scheduling restart.
Aug 11 11:20:25 localhost.localdomain systemd[1]: flask.service: Scheduled restart job, restart counter is at 5.
Aug 11 11:20:25 localhost.localdomain systemd[1]: Stopped Flask web server.
Aug 11 11:20:25 localhost.localdomain systemd[1]: flask.service: Start request repeated too quickly.
Aug 11 11:20:25 localhost.localdomain systemd[1]: flask.service: Failed with result 'exit-code'.
Aug 11 11:20:25 localhost.localdomain systemd[1]: Failed to start Flask web server.
我试过从其他来源更改服务文件,也尝试过更改目录权限,仍然出现同样的错误,无法使用该服务启动应用程序。虽然我可以 运行 使用 uwsgi 使用以下命令手动应用程序 - uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi
您的 ExecStart
需要更新。您必须提供文件的位置和解释器。由于您使用的是 python,您的代码应该是这样的:
[Unit]
Description=Flask web server
[Service]
User=schirag
PermissionsStartOnly=true
ExecStart=/usr/bin/python3 /home/schirag/server.py
TimeoutSec=600
Restart=on-failure
RuntimeDirectoryMode=755
[Install]
WantedBy=multi-user.target
使用命令 type python3
获取 python 的位置。