zoukankan      html  css  js  c++  java
  • 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服务配置及解释说明。

     1 cat /usr/lib/systemd/system/sshd.service
     2 
     3 [Unit]   #<==对该系统服务描述及说明模块。
     4 Description=OpenSSH server daemon            #<==描述性说明。
     5 Documentation=man:sshd(8) man:sshd_config(5) #<==文档列表说明。
     6 After=network.target sshd-keygen.service     #<==服务依赖类别说明。
     7 Wants=sshd-keygen.service     #<==可选的依赖服务。
     8  
     9 [Service]   #<==系统服务的运行参数设置模块
    10 Type=notify #<==服务类型,可选有forking、notify、simple等。
    11 EnvironmentFile=/etc/sysconfig/sshd  #<==环境变量等的配置文件。
    12 ExecStart=/usr/sbin/sshd -D $OPTIONS #<==服务的启动程序。
    13 ExecReload=/bin/kill -HUP $MAINPID   #<==重启程序。
    14 KillMode=process
    15 Restart=on-failure
    16 RestartSec=42s
    17  
    18 [Install] #<==服务安装的相关设置。
    19 WantedBy=multi-user.target   #<==这里为设置多用户级别。可为空格分隔的列表, 表示在使用 systemctl enable 启用此单元时, 将会在对应的目录设置对应文件的软连接。
    20 更多说明,可参考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.1]# 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:

     1 [root@lb01 ~]# systemctl daemon-reload
     2 [root@lb01 ~]# systemctl stop nginx
     3 [root@lb01 ~]# systemctl start nginx
     4 [root@lb01 ~]# systemctl status nginx
     5 ● nginx.service - The nginx HTTP and reverse proxy server
     6    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
     7    Active: active (running) since 五 2018-09-14 00:42:22 CST; 7s ago
     8   Process: 1564 ExecStart=/application/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
     9   Process: 1563 ExecStartPre=/application/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)
    10  Main PID: 1566 (nginx)
    11    CGroup: /system.slice/nginx.service
    12            ├─1566 nginx: master process /application/nginx/sbin/nginx
    13            └─1567 nginx: worker process
    14 
    15 9月 14 00:42:22 lb01 systemd[1]: Starting The nginx HTTP and reverse proxy server...
    16 9月 14 00:42:22 lb01 nginx[1563]: nginx: the configuration file /application/nginx-1.8.1/conf/nginx.conf syntax is ok
    17 9月 14 00:42:22 lb01 nginx[1563]: nginx: configuration file /application/nginx-1.8.1/conf/nginx.conf test is successful
    18 9月 14 00:42:22 lb01 systemd[1]: Started The nginx HTTP and reverse proxy server.
    19 [root@lb01 ~]# systemctl restart nginx
    20 [root@lb01 ~]# systemctl reload nginx
    21 [root@lb01 ~]# systemctl stop nginx
    22 [root@lb01 ~]# systemctl restart nginx
    23 [root@lb01 ~]# systemctl enable nginx
    24 [root@lb01 ~]# systemctl list-unit-files|grep nginx
    25 nginx.service                                 enabled 
  • 相关阅读:
    codeforces 724G
    P4151 [WC2011]最大XOR和路径 线性基
    2018-2019 ACM-ICPC, Asia Seoul Regional Contest K TV Show Game 2-sat
    codeforces 1198E Rectangle Painting 2 最小点覆盖
    codeforces847J Students Initiation 网络流
    codeforces863F Almost Permutation 费用流
    codeforces1213F Unstable String Sort 思维
    codeforces1156D 0-1-Tree 并查集
    codeforces1156D 0-1-Tree 换根dp
    错误集合
  • 原文地址:https://www.cnblogs.com/Mr-Ding/p/9502972.html
Copyright © 2011-2022 走看看