当前位置:   article > 正文

从零开始部署一台能开机自启动python搭建的web服务的虚拟机_miniconda3 添加开机启动 脚本

miniconda3 添加开机启动 脚本

前言:由于项目需求,要求将本地的python程序提供给合作方调用,并且需要能够开机自启动。由于合作方擅长web,故将python程序作为web服务接口,部署在虚拟机中。为了锻炼自己的能力,虚拟机选择了centos7。

第一步 下载Vmware

大家自行下载各个版本的VMware即可,不做赘述。

第二步 安装centos7系统

首先需要去下载centos7的iso,然后在VMware上按照要求一步步安装系统,相关配置过程网上教程也很多,按照教程一步步来即可。

第三步 配置python运行环境

anaconda3是python的强有力工具,在虚拟机上,我们不需要太过完备的库,所以可以安装微型版miniconda3,前往官网下载适合的版本,官方提供了命令行一件安装配置的方法,系统变量也添加好了。至此基本python环境也有了,需要的相关库直接pip install就行。

第四步 将python文件做成web服务,并且能在外部(主机内网)访问

将python搭建web服务,选择了flask库,如果想要让主机访问,还需要用上pywsgi,具体用法例


```python
from flask import Flask,jsonify,request
from gevent import pywsgi
#创建对象
app=Flask(__name__)
#定义接口路径,调用方法,调用时运行的函数
@app.route('/process',methods=['POST']) 
def app_process():
   具体函数
#启动
if __name__=="__main__":
    server =pywsgi.WSGIServer(('0.0.0.0',2023),app) #0.0.0.0表示使用本机ip,2023为端口号
    server.serve_forever()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

似乎到这里服务就配置好了。但是,在主机上调用接口并找不到服务器,需要将虚拟机的防火墙关闭,需要永久关闭,不然重启之后会再次开启。进入root权限,使用

systemctl disable firewalld
而不是 systemctl stop firewalld
查看状态 systemctl status firewalld
  • 1
  • 2
  • 3

到这里不出意外已经配置好了能在主机调用的web接口了

第五步 将其配置成开机自启动

开机自启动有两个点需要解决。第一个点,每次开机的时候,需要选择一个用户登录,不然不会自动选择用户开机。我们希望只需要点击虚拟机开机,后面所有的事情都自动完成。所以,需要设定开机无需选择用户,无需输入密码,直接默认用户登入。步骤如下:

  1. 打开终端,并以root或具有sudo权限的用户身份编辑/etc/gdm3/custom.conf文件,如果使用的是LightDM,则需要编辑/etc/lightdm/lightdm.conf文件。
  2. 在该文件中找到名为[daemon]的部分,在其中添加以下两行配置(如果已存在则直接修改即可):
AutomaticLoginEnable=True
AutomaticLogin=<your_username>
  • 1
  • 2

其中<your_username>为你希望系统开机后自动登录的用户名。

第二个点,开机自动运行python文件。

首先建立一个脚本文件start.sh

#!/bin/sh
/home/user/miniconda3/bin/python3  yourpath/api.py
  • 1
  • 2

这指定了使用miniconda3的python3作为解释器运行你的路径下的python文件

还需要给start.sh可执行权限

chmod +x start.sh
  • 1

然后建立一个自启动服务,在启动时执行start.sh脚本,即运行python,在/etc/systemd/system目录下,创建startup.service,service下填入start.sh的完整路径

[Unit]
Description=My Startup Service
After=network.target

[Service]
ExecStart=/home/username/start.sh

[Install]
WantedBy=default.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

同样地,给予可执行权限

chmod +x startup.service
  • 1

最后,reboot重启,验证是否成功。使用下列命令可查看日志

$ sudo journalctl -u startup.service
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/76179
推荐阅读
相关标签
  

闽ICP备14008679号