帮帮派
懒得说
手动脚本命令:在 linux 自动执行 python命令
sudo -u root /usr/bin/python3 /usr/share/nginx/html/backend/app.py
既然手动运行脚本没有问题,那么我们可以集中精力在服务文件的配置上。根据你提供的输出,你的Flask应用正在开发模式下运行,并且警告说不要在生产环境中使用开发服务器。在生产环境中,你应该使用一个更适合生产的WSGI服务器,比如Gunicorn或uWSGI。
不过,首先我们需要解决服务启动的问题。以下是修改服务文件的一些步骤:
- 编辑服务文件:
打开服务文件进行编辑:
bash sudo nano /etc/systemd/system/app.service
- 修改服务文件:
确保服务文件的内容如下,特别是ExecStart
路径和用户权限:
ini [Unit] Description=My Python App After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/bin/python3 /usr/share/nginx/html/backend/app.py WorkingDirectory=/usr/share/nginx/html/backend StandardOutput=inherit StandardError=inherit Restart=always [Install] WantedBy=multi-user.target
这里我假设你的脚本不需要特定的用户组权限,因此将User
和Group
都设置为root
。如果你的脚本需要以特定用户运行,请将User
和Group
替换为相应的用户和组。 - 重新加载服务管理器配置:
修改完服务文件后,需要重新加载服务管理器的配置:
bash sudo systemctl daemon-reload
- 重启服务:
尝试重启服务以应用更改:
bash sudo systemctl restart app.service
- 检查服务状态:
检查服务是否成功启动:
bash sudo systemctl status app.service
- 查看日志:
如果服务仍然没有启动,查看详细的日志信息:
bash sudo journalctl -u app.service
如果服务成功启动,但你希望在生产环境中运行,你应该考虑使用WSGI服务器。例如,使用Gunicorn,你可以这样修改ExecStart
:
ExecStart=/usr/bin/gunicorn -w 4 -b 0.0.0.0:5000 app:app
这里假设你的Flask应用对象名为app
,并且位于app.py
文件中。-w 4
表示使用4个工作进程,-b 0.0.0.0:5000
表示绑定到所有接口的5000端口。
请根据你的实际需求和环境进行相应的调整。如果你的服务仍然无法启动,请提供更多的错误信息,以便进一步诊断问题。
评论区 (1)
请 登录 后发表评论