使用systemd部署服务的过程解析
作者:Python研究所 发布时间:2021-06-17 21:22:21
1、前言
通常,我们在开发过程中,难免需要去部署我们的服务,但是,我们应该如何去做呢?如果主机重启了,服务怎么自己启动呢?可能你的心里已经有了几种不同的答案,接下来我们就一起看看吧。
2、如何部署服务
假设,我们现在有一个python项目(名为xx),现在我们想要将其部署在Linux服务器上,我们应该如何操作呢?
xx的内容
#!/usr/bin/python
import time
i=0
while True:
print i
i+=1
time.sleep(60)
2.1、后台进程方式启动
第一种方式,我们可以直接将这个项目以后台进程的方式进行启动。
nohup python xx &
2.2、使用systemd方式启动
第二种方式,我们可以通过systemd将项目进行托管。
关于systemd:systemd是Linux平台的一款软件,其支持以守护进程方式启动任务,支持cgroup资源隔离,可以非常高效的在Linux启动过程中加载我们的服务。
2.2.1、创建service文件
xx文件所在路径:/root/
service文件所在路径:/etc/systemd/system/
xx.service内容
[Unit]
Description=myself service
[Service]
ExecStart=/root/xx
[Install]
WantedBy=multi-user.target
由于我们在xx文件中定义了解释器,所以我们可以直接给xx增加可执行权限,在启动命令中直接指定xx的路径即可。
2.2.2、启动服务
指定service文件使能xx服务的命令:
systemctl -f enable /etc/systemd/system/xx.service
启动xx服务:
systemctl start xx
查看xx服务状态:
systemctl status xx
3、如何自动启动
3.1、自动启动文件
3.1.1、rc.local
对于后台进程部署的服务,我们可以将启动命令添加到开机自启文件中。
自动启动文件路径:/etc/rc.local
。
3.1.2、rc.d
我们除了可以将启动命令直接加入到rc.local文件中,也可以直接将可执行脚本移动到/etc/rc.d/init.d/
路径下。
3.2、systemd
systemd默认会在服务器启动的时候启动我们的服务,因为我们已经enable了服务。但是我们为了防止服务在异常退出后无法恢复,我们可以向service文件中增加[Service]
配置块中增加Restart=on-failure
的配置以达到当服务异常退出的时候自动重启服务的效果。
来源:https://juejin.cn/post/7107584360815001613


猜你喜欢
- 一、什么是jieba库jieba是优秀的中文分词第三方库,由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个词组
- 一提到python,大家经常会提到爬虫,爬虫近来兴起的原因我觉得主要还是因为大数据的原因,大数据导致了我们的数据不在只存在于自己的服务器,而
- 本文实例为大家分享了JS实现九宫格抽奖的具体代码,供大家参考,具体内容如下上代码:<div class="wrapper&q
- series: [{ &nbs
- 见过很多网站,在设计的时候给了用户很大的自由度,我个人并不赞同这种做法。最简单的例子,圈网。我在研究圈网的时候注册完成后圈网给了我一个搜索框
- 常量是程序中最基础的元素,在定义之后就不能再重新赋值了。Go语言中的常量类型有布尔常量、整数常量、浮点数常量、 字符常量、字符串常量和复数常
- 1:为什么每个layout下都有个inlayout?我们将layout的宽/浮动等属性设置好之后,对于layout内的padding和mar
- 在使用pytorch框架时,难免要自己定义网络。于是,super(XXXX, self).init(),就成了自定义网络结构时必不可少的第一
- 本文实例讲述了Python正则表达式实现截取成对括号的方法。分享给大家供大家参考,具体如下:strs = '1(2(3(4(5(67
- 1、opencc-python首先介绍opencc中的Python实现库,它具有安装简单,翻译准确,使用方便等优点。对于我们日常的需求完全能
- 曾有位网友遇到这样一个问题:产品名称为“A&T Plastic”,在产品列表中需要做这样的超链接,<a href="
- 最近折腾索引引擎以及数据统计方面的工作比较多, 与 Python 字典频繁打交道, 至此整理一份此方面 API 的用法与坑法备案. 
- UUID (Universally Unique Identifier,通用唯一标识)是一个128位的用于计算机系统中以识别信息的数目,虽然
- 在python中安装非自带python模块,有三种方式:1.easy_install2.pip3.下载压缩包(.zip, .tar, .ta
- 简而言之,channel维护了一个带指针的接受和发送的队列,其中包含mutex锁保证并发安全,数据类型,元素个数,元素大小,channel状
- 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于
- 1 因为pyecharts是支持python的一种可视化,但是想要将其放入网页中,主要有两种方法(1)在网页中假如iframe,将网页嵌在i
- 看看下面:<%Set objQuery = Server.CreateObject("ixss
- 一、K.prodprodkeras.backend.prod(x, axis=None, keepdims=False)功能:在某一指定轴,
- ajax缓存和编码问题不难解决,下面是解决方法。编码问题默认使用UTF-8,如果一旦发现对象找不到的情况,可能js中输入了中文,同时js的编