CentOS7.5下开发systemctl管理的自定义Nginx启动服务程序
一、systemctl知识简介
从CentOS7 Linux开始,系统里的网络服务启动已经从传统的service改成了systemctl(一个systemd工具,主要负责控制systemd系统和服务管理器。),管理开机自启动的命令也从chkconfig改为了systemctl,由systemctl一个命令代替了CentOS7以前系统中的service和chkconfig两个命令。
系统服务的脚本也从传统的路径的/etc/init.d(/etc/rc.d/init.d/),改到了/usr/lib/systemd(除此之外还有/etc/systemd/system),需要自启动运行的程序,一般存在这个系统服务目录下,即:/usr/lib/systemd/system目录,每一个服务以“服务名.service”结尾,该文件的内容一般分为3部分:即[Unit]、[Service]和[Install]。
二、systemctl管理的sshd服务配置介绍
下面是系统中sshd服务配置及解释说明。
cat /usr/lib/systemd/system/sshd.service [Unit] #<==对该系统服务描述及说明模块。
Description=OpenSSH server daemon #<==描述性说明。
Documentation=man:sshd() man:sshd_config() #<==文档列表说明。
After=network.target sshd-keygen.service #<==服务依赖类别说明。
Wants=sshd-keygen.service #<==可选的依赖服务。 [Service] #<==系统服务的运行参数设置模块
Type=notify #<==服务类型,可选有forking、notify、simple等。
EnvironmentFile=/etc/sysconfig/sshd #<==环境变量等的配置文件。
ExecStart=/usr/sbin/sshd -D $OPTIONS #<==服务的启动程序。
ExecReload=/bin/kill -HUP $MAINPID #<==重启程序。
KillMode=process
Restart=on-failure
RestartSec=42s [Install] #<==服务安装的相关设置。
WantedBy=multi-user.target #<==这里为设置多用户级别。可为空格分隔的列表, 表示在使用 systemctl enable 启用此单元时, 将会在对应的目录设置对应文件的软连接。
更多说明,可参考systemd.unit、system.service文档,此不细述,都掌握了意义也不大,可以写出启动脚本即可。
三、根据上面的服务配置创建nginx启动脚本
vim /usr/lib/systemd/system/nginx.service [Unit]
Description=The nginx HTTP and reverse proxy server #描述说明;
After=network.target remote-fs.target nss-lookup.target #服务依赖类别说明; [Service]
Type=forking #服务类型,可选有forking、notify、simple等;
ExecStartPre=/application/nginx/sbin/nginx -t #启动前检查配置文件是否正确;
ExecStart=/application/nginx/sbin/nginx #启动nginx
ExecReload=/bin/kill -s HUP $MAINPID #重载reload
ExecStop=/bin/kill -s QUIT $MAINPID #停止服务
PrivateTmp=true #为服务分配独立的空间; [Install]
WantedBy=multi-user.target #多用户级别 说明第一次启动会提示以下报错:
[root@server nginx-1.8.]# systemctl restart nginx.service
Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details. 执行下面的命令重新载入 systemd,扫描新的或有变动的单元即可:
systemctl daemon-reload #重新载入 systemd,扫描新的或有变动的单元
启动nginx:
[root@lb01 ~]# systemctl daemon-reload
[root@lb01 ~]# systemctl stop nginx
[root@lb01 ~]# systemctl start nginx
[root@lb01 ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since 五 -- :: CST; 7s ago
Process: ExecStart=/application/nginx/sbin/nginx (code=exited, status=/SUCCESS)
Process: ExecStartPre=/application/nginx/sbin/nginx -t (code=exited, status=/SUCCESS)
Main PID: (nginx)
CGroup: /system.slice/nginx.service
├─ nginx: master process /application/nginx/sbin/nginx
└─ nginx: worker process 9月 :: lb01 systemd[]: Starting The nginx HTTP and reverse proxy server...
9月 :: lb01 nginx[]: nginx: the configuration file /application/nginx-1.8./conf/nginx.conf syntax is ok
9月 :: lb01 nginx[]: nginx: configuration file /application/nginx-1.8./conf/nginx.conf test is successful
9月 :: lb01 systemd[]: Started The nginx HTTP and reverse proxy server.
[root@lb01 ~]# systemctl restart nginx
[root@lb01 ~]# systemctl reload nginx
[root@lb01 ~]# systemctl stop nginx
[root@lb01 ~]# systemctl restart nginx
[root@lb01 ~]# systemctl enable nginx
[root@lb01 ~]# systemctl list-unit-files|grep nginx
nginx.service enabled
CentOS7.5下开发systemctl管理的自定义Nginx启动服务程序的更多相关文章
- centos7.0下的 systemctl 用法
参考链接: http://man.linuxde.net/systemctl
- 手动编译安装Libvirt之后利用systemctl管理libvirtd服务
因为要给特殊的虚拟机关联文件指定selinux标签,而默认的Libvirt没有这个功能,所以需要修改LIbvirt源代码,重新编译安装Libvirt,而手动编译安装的LIbvirt,没有办法使用sys ...
- Centos7 环境下开机 自启动服务(service) 设置的改变 (命令systemctl 和 chkconfig用法区别比较)
参考文章: <Linux 设置程序开机自启动 (命令systemctl 和 chkconfig用法区别比较)> http://blog.csdn.net/kenhins/article/ ...
- [转帖]备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改
备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改 https://blog.csdn.net/toontong/article/details/50440272 ...
- Centos7下创建和管理用户
centos服务管理主要命令是systemctl,centos7的服务不再放在/etc/init.d/下;而放在/usr/lib/systemd/system下,centos7系统中systemctl ...
- 在VS下使用 GitFlow管理项目开发
在VS下使用 GitFlow管理项目开发 1.右键将你的解决方案添加到源代码管理,如果你的VS没有安装git,会提示安装,安装完成之后,在团队资源管理可以看到如下界面 (图一) 2.安装gitflow ...
- Centos7下的systemctl命令与service和chkconfig
博主使用的操作系统是最新的CentOS 7,所以可能和网上一些老的博文有一定出入,那是因为版本更新的原因. 这里写图片描述1 service service命令用于对系统服务进行管理,比如启动(sta ...
- CentOS7 安装tomcat为系统服务器 Systemctl管理Tomcat,并设置开机启动
本文转载:http://blog.chinaunix.net/uid-24648266-id-5729891.html CentOS7开始,从/etc/init.d脚本改为了systemctl管理服务 ...
- centos7把编译安装的服务通过systemctl管理
nginx编译安装的目录是/usr/local/nginx nginx配置文件是/usr/local/nginx/conf/nginx.conf systemctl管理的服务文件在/usr/lib/s ...
随机推荐
- bzoj4563 HAOI2016放旗子
bzoj传送门 已知了"任意两个障碍不在同一行,任意两个障碍不在同一列",如果我们按每列只能放一个来考虑,那么这\(n\)个障碍一定是一个排列,那么也就是"每一列只能放一 ...
- 解读ping -n 4 127.1 >nul 2>nul
命令解读 ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用"ping"命令可以检查网络是否连通,可以很好 ...
- [題解](最短路)luogu_P1119災後重建
一道好題,然而看題解做的...... floyed的實質:只經過前k個點i到j的最短路,原狀態轉移方程為 f [ k ] [ i ] [ j ]=min( f[ k-1 ] [ i ] [ j ],f ...
- HDU-1263(STL+排序)
水果 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- CD4051的切换时间
CD4051:1 2 4 5 12 13 14 15 8个选择IO输入/输出端:3:I/O6:片选低电平有效,搞定平所有通道不通9 10 11:地址选择:功能:通过地址选择译码8个中的某个通道与3脚 ...
- C51存储的优化
我们知道51单片机只有128BYTE的RAM, 有的增强型有XRAM,此时编程时就要注意,否则就有可能超出空间 1 对于各模块的全局变量.静态变量.全局枚举型常量,静态枚举型常量.个别操作存储(如外部 ...
- jquery select 列表 ajax 动态获取数据 模糊查询 分页
最近需要一个这样的select 在网上找的多是数据一次性获取到再通过前端模糊查询匹配的 这样在数据量比较大的情况下不适合 ,所以参考http://www.jq22.com/jquery-info145 ...
- [在读]HTML5数据推送应用开发
最近买的,讲SSE的,才看完前2章.
- httpd.exe占用100%CPU
客户VPShttpd.exe进程占用100%CPU百度搜了下,很多文章: 在网上也没有能够直接找到比较好的解决方法,后来在一个帖子上看到说,有可能是apache与其他的软件冲突了(参考http://t ...
- pay-spring-boot 开箱即用的Java支付模块,整合支付宝支付、微信支付
关于 使用本模块,可轻松实现支付宝支付.微信支付对接,从而专注于业务,无需关心第三方逻辑. 模块完全独立,无支付宝.微信SDK依赖. 基于Spring Boot. 依赖Redis. 我能做什么 支付宝 ...