python 通过systemd服务启动 flask

czq61nw1  于 2023-01-19  发布在  Python
关注(0)|答案(3)|浏览(153)

有一个systemd服务文件“/etc/systemd/system/flak-app.service:

[Unit]
Description="flask-app"
After=network.target

[Service]
User=root
WorkingDirectory=/root/FlaskApp/
Environment=/root/FlaskApp/flask-app/bin
ExecStart=/root/FlaskApp/flask-app/bin/flask run --host=0.0.0.0
Restart=on-failure

[Install]
WantedBy=multi-user.target

sudo service flask-app start之后没有任何React,并且systemctl status不提供任何具体信息。但是,当我通过控制台运行 ExecStart 命令(/root/FlaskApp/flask-app/bin/flask run --host=0.0.0.0)时,服务启动。
另外,我已导出变量 FLASK_APP= flak-app.py
另外我在威尼斯制作的酒瓶应用程序。

qlfbtfca

qlfbtfca1#

对于我的Pi3,我使用了以下命令:

  • sudo systemctl启动myscript.service(可以在没有.service情况下启动)
  • sudo systemctl状态myscript.service(检查正在进行的操作)
  • sudo systemctl启用myscript.service(如果一切正常,则允许自动启动)

下面是https://www.raspberrypi.org/documentation/linux/usage/systemd.md的更多细节。

nkoocmlb

nkoocmlb2#

好了,这里是我的webflask.service,你需要声明env变量之前,你运行或重新启动你的服务.下面的例子

[Unit]
Description=Flask Web instance
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/opt/www
Environment="PATH=/opt/www/env/bin"
Environment="FLASK_SECRET_KEY=1234567"
Environment="FLASK_MYSQL_HOST=localhost"
Environment="FLASK_MYSQL_USER=base"
Environment="FLASK_MYSQL_PASSWORD=password"
Environment="FLASK_MYSQL_DB=base"
Environment="FLASK_APP=app.py"
Environment="FLASK_DEBUG=1"
Environment="TEMPLATES_AUTO_RELOAD=1"
ExecStart=/opt/www/env/bin/flask run --host 0.0.0.0 --port 8000

[Install]
WantedBy=multi-user.target

和一个flask服务器的例子,它是告诉你如何获得env变量:

from flask import Flask
import os 
flask_app = os.environ['FLASK_APP'] 

app = Flask(__name__)

@app.route('/')
def main():
    return f"{flask_app}"
13z8s7eq

13z8s7eq3#

创建文件后,执行

sudo systemctl deamon-reload

你服役档案里的一些修正。
1.如果不打算为ExecStart=属性使用相对路径,则无需WorkingDirectory=/root/FlaskApp/。

  1. Environment属性的用法与您正在执行的操作不同。Check

相关问题