Linux服务器设置flask项目服务基于虚拟环境自启动教程

摘要

服务器中的flask应用似乎在关闭远程控制台之后,会自动关闭,无法访问,只有在设置服务自启动后,才不用自己每次自行启动。

操作

1. 在服务自启目录下新建文件

sudo nano /etc/systemd/system/app.service

添加以下内容

[Unit]
Description=My Python Script Service
After=mysql.service cpolar.service
 
[Service]
Type=simple
Environment="PATH=/home/ubuntu/miniconda3/envs/myenv/bin:$PATH"  # 设置环境变量,确保conda命令可用
ExecStart=/bin/bash -c 'source /home/ubuntu/miniconda3/bin/activate myenv && /home/ubuntu/miniconda3/envs/myenv/bin/python3.8 opt/project_root/app/app.py'

[Install]
WantedBy=multi-user.target

其中envs的路径需要更换为自己的,我的miniconda3是安装在/home/ubuntu目录下,因此虚拟环境在miniconda3的envs文件夹,当然你也可以先激活环境后再使用服务,但是这样还是会有手动的环境,达不到自启动的效果。

在[Unit]下的After参数表示服务在启动前,需要启动的服务,这里我加了内网穿透和mysql的服务,如果你不需要任何服务,可以填写

After=network.target

After=network.target是systemd服务单元文件中的一项设置,用于定义服务启动的顺序。在这个设置中,network.target代表网络服务。这样写表示在网络连接可用的情况下,相关服务才能够正确地运行和访问网络资源。

以下的路径是flask项目的启动路径,替换为自己的app.py路径

opt/project_root/app/app.py

2. 配置cpolar内网穿透服务

如果你并不需要这项服务,在删除了After后面那一项的cpolar服务后,可以跳过这一项内容,cpolar具体安装教程参考我其他博客https://blog.csdn.net/ADONGS_CODER/article/details/134886126

查看cpolar.service内容

cat /etc/systemd/system/cpolar.service

cpolar的服务内容如下

[Unit]
Description=Cpolar Service
Documentation=https://www.cpolar.com/docs
After=network.target nss-lookup.target

[Service]
User=nobody
NoNewPrivileges=true
ExecStart=/usr/local/bin/cpolar start-all -dashboard=on -daemon=on -config=/usr/local/etc/cpolar/cpolar.yml -log=/var/log/cpolar/access.log
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

可以看到配置文件是cpolar.yml,由于本地app应用在5000端口启动,我们需要将5000端口映射到8080端口

编辑yml文件

sudo nano /usr/local/etc/cpolar/cpolar.yml

修改内容如下

tunnels:
  website:
    proto: http
    addr: "5000"
    region: cn_vip

将http服务地址改为5000,记得加双引号,不然会报错

3. 服务重新加载

sudo systemctl daemon-reload

4. 启用服务

sudo systemctl enable app.service
sudo systemctl enable cpolar.service
sudo systemctl enable mysql.service

5. 启动app.service服务

sudo systemctl start app.service

查看运行状态

sudo systemctl status app.service

在这里插入图片描述
显示正在运行,运行在5000端口
查看cpolar控制台,发现端口映射成功
在这里插入图片描述

6. 关于系统管理systemctl的指令集

systemctl start 服务名:启动服务。
systemctl stop 服务名:关闭服务。
systemctl restart 服务名:重启服务。
systemctl reload 服务名:重新加载配置文件。
systemctl status 服务名:查看服务状态。
systemctl enable 服务名:设置开机自启。
systemctl disable 服务名:取消开机自启。
systemctl daemon-reload:后台程序重新加载。
systemctl reboot:重启系统。
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值