四个颜色的圈圈 發表於 2025-8-28 00:00:00

Centos下配置服务开机自启动的三种方式

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>前言</li><li>一、Centos上配置开机自启动的几种方式</li><li>二、实践演示<ul class="second_class_ul"><li>1. 在/etc/rc.d/rc.local中添加服务启动命令</li><li>2. 通过chkconfig配置</li><li>3 Centos7通过systemctl enble配置服务自启动</li></ul></li><li>总结<ul class="second_class_ul"></ul></li><li>拓展:美国 VPS 轻松搭建个人网站指南小白必看<ul class="second_class_ul"><li>为什么选择美国 VPS?</li><li>步骤一:购买美国 VPS</li><li>步骤二:配置 VPS</li><li>步骤三:安装网站建设工具</li><li>步骤四:域名注册与解析</li><li>步骤五:网站内容创建</li><li>步骤六:备份与安全设置</li><li>步骤七:网站上线与推广</li></ul></li></ul></div><p class="maodian"></p><h2>前言</h2>
<p>在服务器上安装的各种中间件,一般都需要配置成开机自启动。但是有些中间件的安装过程中并没有提供相关配置开机自启动的说明文档。</p>
<p>今天总结一下Centos下配置服务开机自启动的3种方式。</p>
<p class="maodian"></p><h2>一、Centos上配置开机自启动的几种方式</h2>
<ul><li>方式一:直接在/etc/rc.d/rc.local中添加服务启动命令</li><li>方式二:通过chkconfig配置服务自启动</li><li>方式三:Centos7通过systemctl enble配置服务自启动</li></ul>
<p class="maodian"></p><h2>二、实践演示</h2>
<p class="maodian"></p><h3>1. 在/etc/rc.d/rc.local中添加服务启动命令</h3>
<p>/etc/rc.d/rc.local脚本会在Centos系统启动时被自动执行,所以可以把需要开机后执行的命令直接放在这里。</p>
<p>示例:配置开机启动apollo</p>
<div class="dxycode"><pre class="brush:bash;">vi /etc/rc.d/rc.local</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ1262V53.png" /></p>
<p>想简单点可以像上面这样直接将服务的启动命令添加到/etc/rc.d/rc.local中。</p>
<p>也可以自己编写服务启动的脚本。由于重启时是以root用户重启,需要保证root用户有脚本执行权限。</p>
<p><strong>1)、编写服务启动的脚本</strong></p>
<p>vi /opt/script/autostart.sh</p>
<div class="dxycode"><pre class="brush:bash;">#!/bin/bash
/root/Downloads/docker-quick-start/docker-compose up -d</pre></div>
<p><strong>2)、赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)</strong></p>
<div class="dxycode"><pre class="brush:bash;">chmod +x /opt/script/autostart.sh</pre></div>
<p><strong>3)、打开/etc/rc.d/rc.local文件,在末尾增加如下内容</strong></p>
<div class="dxycode"><pre>/opt/script/autostart.sh</pre></div>
<p><strong>4)、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限</strong></p>
<div class="dxycode"><pre class="brush:bash;">chmod +x /etc/rc.d/rc.local</pre></div>
<p class="maodian"></p><h3>2. 通过chkconfig配置</h3>
<p>在CentOS7之前,可以通过chkconfig来配置开机自启动服务。</p>
<p>chkconfig相关命令:</p>
<div class="dxycode"><pre class="brush:bash;">chkconfig –-add xxx //把服务添加到chkconfig列表
chkconfig --del xxx //把服务从chkconfig列表中删除
chkconfig xxx on //开启开机自动启动
chkconfig xxx off //关闭开机自动启动
chkconfig --list //查看所有chklist中服务
chkconfig --list xxx 查看指定服务</pre></div>
<p><strong>chkconfig运行级别level和启动顺序的概念:</strong></p>
<p>chkconfig --list</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ1262W04.png" /></p>
<p>这里的0到6其实指的就是服务的level。</p>
<p>&ndash;level&lt;等级代号&gt;  指定系统服务要在哪一个执行等级中开启或关毕。<br />等级0表示:表示关机<br />等级1表示:单用户模式<br />等级2表示:无网络连接的多用户命令行模式<br />等级3表示:有网络连接的多用户命令行模式<br />等级4表示:不可用<br />等级5表示:带图形界面的多用户模式<br />等级6表示:重新启动</p>
<p>比如如下命令:</p>
<div class="dxycode"><pre class="brush:bash;">//设定mysqld在等级3和5为开机运行服务
chkconfig --level 35 mysqld on
//设置network服务开机自启动,会把2~5的等级都设置为on
chkconfig network on</pre></div>
<p>表示开机启动配置成功。</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ1262W27.png" /></p>
<p>服务的启动顺序又指的什么呢?<br />服务的启动顺序是指在服务器启动后服务启动脚本执行的顺序。<br />以系统默认服务network说明:</p>
<div class="dxycode"><pre class="brush:bash;">cat/etc/init.d/network</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ1262Q25.png" /></p>
<p>其中 # chkconfig: 2345 10 90用来指定服务在各个level下的启动顺序。<br />该配置的含义是network服务在2、3、4、5的level下的启动顺序是10,在1和6的level等级下的启动顺序是90。</p>
<p>chkconfig配置的服务启动顺序最后都会在/etc/rc.d/目录下体现出来:</p>
<div class="dxycode"><pre class="brush:bash;">cd /etc/rc.d/</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ1262Q93.png" /></p>
<p>文件中脚本命名规则,首字母K表示关闭脚本,首字母S表示启用脚本,数字表示启动的顺序.</p>
<p><strong>chkconfig配置实例</strong></p>
<p>通常kibana的官方配置是没有介绍如何配置开机自启动的。这里我配置kibana开机自启动来说明。</p>
<p>1、在/etc/init.d目录下,新建脚本kibana</p>
<div class="dxycode"><pre class="brush:bash;">cd /etc/init.d
vi kibana</pre></div>
<p>脚本内容如下:</p>
<div class="dxycode"><pre class="brush:bash;">#!/bin/bash
# chkconfig: 2345 98 02# description:
kibana
KIBANA_HOME=/usr/local/kibana-6.2.4-linux-x86_64
case $1 in
start)
$KIBANA_HOME/bin/kibana &amp;
echo"kibana start"
;;
stop)
kibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'`
kibana_pid=`echo ${kibana_pid_str%%/*}`
kill-9 $kibana_pid
echo"kibana stopped"
;;
restart)
kibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'`
kibana_pid=${kibana_pid_str%%/*}
kibana_pid=`echo ${kibana_pid_str%%/*}`
kill-9 $kibana_pid
echo"kibana stopped"
$KIBANA_HOME/bin/kibana &amp;
echo"kibana start"
;;
status)
kibana_pid_str=`netstat -tlnp |grep 5601 | awk '{print $7}'`
if test -z $kibana_pid_str; then
echo"kibana is stopped"
else
pid=`echo ${kibana_pid_str%%/*}`
echo"kibana is started,pid:"${pid}
fi
;;*)
echo"start|stop|restart|status"
;;
esac</pre></div>
<p><strong>注意⚠️:</strong></p>
<p>每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。<br />第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。<br />第二行对服务进行描述,可以用\ 跨行注释。</p>
<div class="dxycode"><pre class="brush:bash;">#!/bin/bash
#chkconfig:2345 98 02
#description:kibana</pre></div>
<p><strong>解释说明:</strong></p>
<p>配置kibana服务在2、3、4、5的level等级下脚本执行顺序是98,</p>
<p>6的level等级下脚本执行顺序是01。</p>
<p>增加脚本的可执行权限</p>
<div class="dxycode"><pre class="brush:bash;">chmod +x kibana</pre></div>
<p>3.查看chkconfig list</p>
<div class="dxycode"><pre class="brush:bash;">chkconfig --list</pre></div>
<p>4.把服务添加到chkconfig列表</p>
<div class="dxycode"><pre class="brush:bash;">chkconfig --add kibana</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ12629648.png" /></p>
<p>设置kibana服务自启动</p>
<div class="dxycode"><pre class="brush:bash;">chkconfig kibana on //开启开机自动启动</pre></div>
<p>查看kibana服务自启动状态</p>
<div class="dxycode"><pre class="brush:bash;">chkconfig --list kibana</pre></div>
<p>如果2~5都是on,就表明会自动启动了</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ126292J.png" /></p>
<p>服务的启动、停止、重启和状态查看</p>
<div class="dxycode"><pre class="brush:bash;">//查看服务状态
service kibana status
//服务启动
service kibana start//服务停止
service kibana stop
//服务重启
service kibana restart</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ1262aC.png" /></p>
<p class="maodian"></p><h3>3 Centos7通过systemctl enble配置服务自启动</h3>
<p>在Centos7后,更推荐通过systemctl来控制服务。</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ126293T.png" /></p>
<p>systemctl服务的目录介绍</p>
<p>知道服务的管理是通过 systemd,而 systemd 的配置文件大部分放置于 /usr/lib/systemd/目录内。但是 Red Hat 官方文件指出, 该目录的文件主要是原本软件所提供的设置,建议不要修改!而要修改的位置应该放置于 /etc/systemd/system/目录内。</p>
<p>详情查看:17.3 systemctl 针对 service 类型的配置文件 | 鸟哥的 Linux 私房菜:基础学习篇 第四版</p>
<p>Centos 系统服务脚本目录:</p>
<div class="dxycode"><pre class="brush:bash;">/usr/lib/systemd/</pre></div>
<p>有系统(system)和用户(user)之分,如需要开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:</p>
<div class="dxycode"><pre class="brush:bash;">/usr/lib/systemd/system/</pre></div>
<p>反之,用户登录后才能运行的程序,存在用户(user)里,服务以.service结尾。</p>
<div class="dxycode"><pre class="brush:bash;">/usr/lib/systemd/user/</pre></div>
<p>建立kibana开机服务</p>
<p>1)、建立kibana服务文件</p>
<div class="dxycode"><pre class="brush:bash;">cd /etc/systemd/system/
vim kibana.service</pre></div>
<p>脚本内容:</p>
<div class="dxycode"><pre class="brush:plain;">
Description=kibana
After=network.target

Type=forking
User=root
Group=root
ExecStart=/etc/init.d/kibana start
ExecReload=/etc/init.d/kibana restart
ExecStop=/etc/init.d/kibana
stop
PrivateTmp=true

WantedBy=multi-user.target</pre></div>
<p><strong>注意⚠️:</strong></p>
<p>这里ExecStart、ExecReload、ExecStop的命令还是借助了上文在/etc/init.d目录下配置kibana脚本来实现。<br />的启动、重启、停止命令全部要求使用绝对路径<br />服务安装的相关设置,可设置为多用户</p>
<p><strong>参数说明:</strong></p>
<p>Description:描述服务</p>
<p>After:描述服务类别</p>
<p>服务运行参数的设置<br />Type=forking是后台运行的形式<br />User 服务启动用户<br />Group 服务启动用户组<br />ExecStart 为服务的具体运行命令<br />ExecReload 为重启命令<br />ExecStop 为停止命令<br />PrivateTmp=True表示给服务分配独立的临时空间</p>
<p><strong>2)、赋予执行权限</strong></p>
<div class="dxycode"><pre class="brush:bash;">chmod 754 kibana.service</pre></div>
<p>依照上面的表格,权限组合就是对应权限值求和,如下:<br />7 = 4 + 2 + 1 读写运行权限<br />5 = 4 + 1 读和运行权限<br />4 = 4 只读权限.<br />这句命令的意思是将filename文件的读写运行权限赋予文件所有者,把读和运行的权限赋予群组用户,把读的权限赋予其他用户。</p>
<p><strong>3)、服务的启动、停止、开机启动</strong></p>
<p>查看服务状态</p>
<div class="dxycode"><pre class="brush:bash;">//重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要是新服务的服务程序配置文件生效,需重新加载
systemctl daemon-reload
//查看服务状态
systemctl status kibana.service</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ1262c14.png" /></p>
<p>启动服务</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ1262a13.png" /></p>
<p>其中,disabled说明服务还没有开启开机自启动。</p>
<p>开启服务开机启动</p>
<div class="dxycode"><pre class="brush:bash;">systemctl enable kibana.service</pre></div>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ12630516.png" /></p>
<p>服务状态说明:<br />systemctl status 服务名称</p>
<p style="text-align:center"><img style="max-width:100%!important;height:auto!important;"alt="" src="https://zhuji.jb51.net/uploads/allimg/20250828/2-250RQ126303F.png" /></p>
<p>常用服务文件</p>
<p>nginx.service</p>
<div class="dxycode"><pre class="brush:plain;">
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

WantedBy=multi-user.target</pre></div>
<p>mysql.service</p>
<div class="dxycode"><pre class="brush:plain;">
Description=mysql
After=network.target remote-fs.target nss-lookup.target
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start#ExecReload=/usr/local/mysql/support-files/mysql.server restart#ExecStop=/usr/local/mysql/support-files/mysql.server stop#PrivateTmp=true

WantedBy=multi-user.target</pre></div>
<p>redis.service</p>
<div class="dxycode"><pre class="brush:plain;">
Description=Redis
After=network.target remote-fs.target nss-lookup.target
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=kill-INT `cat/tmp/redis.pid`
User=www
Group=www

WantedBy=multi-user.target</pre></div>
<p>supervisord.service</p>
<div class="dxycode"><pre class="brush:plain;">
Description=Process Monitoring and Control Daemon
After=rc-local.service
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
SysVStartPriority=99

WantedBy=multi-user.target</pre></div>
<p class="maodian"></p><h2>总结</h2>
<p>本文主要总结了Centos上配置开机自启动的3种方式</p>
<ul><li>方式一:直接在/etc/rc.d/rc.local中添加服务启动命令</li><li>方式二:通过chkconfig配置服务自启动</li><li>方式三:Centos7通过systemctl enble配置服务开机自启动</li></ul>
<p class="maodian"></p><h2>拓展:美国 VPS 轻松搭建个人网站指南小白必看</h2>
<p>美国&nbsp;VPS是一种虚拟化技术,将一台物理服务器切分成多个虚拟服务器,每个虚拟服务器拥有独立的资源和操作系统。VPS 综合了共享主机和独立服务器的优势,价格相对较低,但性能却更稳定可靠。</p>
<p class="maodian"></p><h3>为什么选择美国 VPS?</h3>
<p>美国作为全球互联网的核心地带之一,拥有优质的网络基础设施和丰富的资源。选择美国 VPS 可以获得更快的访问速度,更稳定的服务器连接,以及全球用户的更好覆盖。</p>
<p class="maodian"></p><h3>步骤一:购买美国 VPS</h3>
<p>确定需求:根据个人网站的规模和需求,选择适合的 VPS 配置。</p>
<p>挑选供应商:比较不同 VPS 服务商的价格、性能和客户评价,选择可靠的供应商购买 VPS。</p>
<p class="maodian"></p><h3>步骤二:配置 VPS</h3>
<p>获取登录信息:购买 VPS 后,供应商会提供登录信息,包括 IP 地址、用户名和密码。</p>
<p>登录 VPS:使用 SSH 客户端登录 VPS,进入服务器控制台。</p>
<p>系统更新:更新操作系统和软件包,确保服务器处于最新状态。</p>
<p class="maodian"></p><h3>步骤三:安装网站建设工具</h3>
<p>选择建站工具:根据个人技能和需求,选择适合的网站建设工具,如 WordPress、Joomla 等。</p>
<p>安装建站工具:通过命令行或控制面板,安装选定的建站工具。</p>
<p class="maodian"></p><h3>步骤四:域名注册与解析</h3>
<p>域名注册:选择合适的域名,并在注册商处进行域名注册。</p>
<p>DNS 解析:在域名注册商处设置 DNS 解析,将域名指向 VPS 的 IP 地址。</p>
<p class="maodian"></p><h3>步骤五:网站内容创建</h3>
<p>网站结构规划:设计网站的导航结构和页面布局,确保用户友好性。</p>
<p>内容发布:根据网站结构,发布相应的内容,包括文章、图片和多媒体文件。</p>
<p class="maodian"></p><h3>步骤六:备份与安全设置</h3>
<p>定期备份:设置自动备份机制,保障网站数据的安全性。</p>
<p>安全设置:加强服务器安全性,限制非必要的端口访问,安装防火墙等安全工具。</p>
<p class="maodian"></p><h3>步骤七:网站上线与推广</h3>
<p>网站上线:确认网站的各项功能正常运行后,将网站正式上线。</p>
<p>SEO 优化:通过优化关键词、内容和网站结构,提高网站在搜索引擎中的排名。</p>
<p>社交媒体推广:利用社交平台宣传网站,吸引更多访问量和用户。</p>
<p>在尝试搭建个人网站之前,理解 VPS 的基本概念和步骤是非常重要的。通过本指南,你可以轻松入门,选择美国 VPS 并成功搭建自己的个人网站。记得按照每个步骤逐步操作,不要忽略安全设置和备份,以确保网站的稳定性和安全性。</p>
<p>以上就是Centos开机自启动的详细内容,更多相关资料请阅读琼殿技术社区其它文章!</p>
頁: [1]
查看完整版本: Centos下配置服务开机自启动的三种方式