一、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启动服务程序的更多相关文章

  1. centos7.0下的 systemctl 用法

    参考链接: http://man.linuxde.net/systemctl

  2. 手动编译安装Libvirt之后利用systemctl管理libvirtd服务

    因为要给特殊的虚拟机关联文件指定selinux标签,而默认的Libvirt没有这个功能,所以需要修改LIbvirt源代码,重新编译安装Libvirt,而手动编译安装的LIbvirt,没有办法使用sys ...

  3. Centos7 环境下开机 自启动服务(service) 设置的改变 (命令systemctl 和 chkconfig用法区别比较)

    参考文章:  <Linux 设置程序开机自启动 (命令systemctl 和 chkconfig用法区别比较)> http://blog.csdn.net/kenhins/article/ ...

  4. [转帖]备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改

    备忘:CentOS-7 使用systemctl 管理的服务,文件打开数上限1024要改 https://blog.csdn.net/toontong/article/details/50440272 ...

  5. Centos7下创建和管理用户

    centos服务管理主要命令是systemctl,centos7的服务不再放在/etc/init.d/下;而放在/usr/lib/systemd/system下,centos7系统中systemctl ...

  6. 在VS下使用 GitFlow管理项目开发

    在VS下使用 GitFlow管理项目开发 1.右键将你的解决方案添加到源代码管理,如果你的VS没有安装git,会提示安装,安装完成之后,在团队资源管理可以看到如下界面 (图一) 2.安装gitflow ...

  7. Centos7下的systemctl命令与service和chkconfig

    博主使用的操作系统是最新的CentOS 7,所以可能和网上一些老的博文有一定出入,那是因为版本更新的原因. 这里写图片描述1 service service命令用于对系统服务进行管理,比如启动(sta ...

  8. CentOS7 安装tomcat为系统服务器 Systemctl管理Tomcat,并设置开机启动

    本文转载:http://blog.chinaunix.net/uid-24648266-id-5729891.html CentOS7开始,从/etc/init.d脚本改为了systemctl管理服务 ...

  9. centos7把编译安装的服务通过systemctl管理

    nginx编译安装的目录是/usr/local/nginx nginx配置文件是/usr/local/nginx/conf/nginx.conf systemctl管理的服务文件在/usr/lib/s ...

随机推荐

  1. django-返回客户端外网ip服务

    在服务器应用初始化的时候,比如salt-minion,需要在配置文件里说明自己的id,一般用ip. 如果都在一个内网里,从ip命令里获取就行了. 但现在的企业后台环境更加复杂,很多都是跨机房.有物理机 ...

  2. VMware的linux虚拟机实现和windows的文件共享

    使用的centos7和windows10,在虚拟机centos7中是root身份.由于是第一次用没有界面的linux,可谓是困难重重…… 一 打开VMware,然后选中你的虚拟机,我的是centos7 ...

  3. [已读]JavaScript高级程序设计(第2版)

    经典红皮书~~

  4. 牛客网Java刷题知识点之方法覆盖(方法重写)和方法重载的区别

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=6 ...

  5. 图像分类丨浅析轻量级网络「SqueezeNet、MobileNet、ShuffleNet」

    前言 深度卷积网络除了准确度,计算复杂度也是考虑的重要指标.本文列出了近年主流的轻量级网络,简单地阐述了它们的思想.由于本人水平有限,对这部分的理解还不够深入,还需要继续学习和完善. 最后我参考部分列 ...

  6. Ubuntu 解决E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)

    今天想在ubuntu上配置nodejs的环境.结果用apt install安装软件时出现报错. $ sudo apt-get update 会得到下面错误提示: E: 无法获得锁 /var/lib/a ...

  7. android开发学习 ------- 上传本地项目到gitlab

    写了一个demo,上传到gitlab 参考  https://blog.csdn.net/litianxiang_kaola/article/details/74075151 1:新建项目,填写相应的 ...

  8. 前端之CSS布局模型

    一.css布局模型: 流动模型(Flow) 浮动模型(Float) 层模型(Layer) 1.流动模型: 页面在没有设置任何css样式,元素按照本身的特性在浏览器中显示,这样的布局模型称为流动模型: ...

  9. 浅谈C++ 内存泄漏及其检测工具

    浅谈C++ 内存泄漏及其检测工具 http://wenku.baidu.com/link?url=1DGkOOvd_ITZyB8IHAwfhCOx2tfO6id8UfuyQkAMHZU6sasaAXz ...

  10. 当ThreadLocal碰上线程池

    ThreadLocal使用 ThreadLocal可以让线程拥有本地变量,在web环境中,为了方便代码解耦,我们通常用它来保存上下文信息,然后用一个util类提供访问入口,从controller层到s ...