首頁 > 軟體

使用systemd管理編譯安裝的Nginx

2020-06-16 16:41:27

1. systemd新特性
並行處理(同時啟動)所有服務。
基於依賴關係定義的服務控制邏輯
系統狀態快照
按需啟用進程,只有第一次被存取時才會真正啟動;

2. systemd的常見unit型別
Service unit:副檔名為.service,主要用於定義系統服務;
Target unit:副檔名為.target,主要用於模擬實現執行級別;
Device unit:副檔名為.device,主要用於定義核心識別的裝置;
Mounu unit:副檔名為.mount,主要用於定義檔案系統掛載點;
Socket unit:副檔名為.sockett,主要用於標識進程間通訊用到的socket檔案;
snapshot unit:副檔名為.snapshot,主要用於管理系統快照;
Swap unit:副檔名為.swap,主要用於標識swap裝置;
Automount unit:副檔名為.automount,主要用於檔案系統自動掛載點設定;
Path unit:副檔名為.path,主要用於定義檔案系統中的檔案或目錄;

3. Systemd關鍵特性
基於socket的啟用機制:socket與程式分離;
基於bus的啟用機制:
基於裝置device的啟用機制:能監控核心輸出的硬體資訊,當裝置插入時一旦發現就建立裝置檔案,再自動掛載至某掛載點,如果掛載點不存在還能自動建立;
基於path的啟用機制:系統可監控某目錄或檔案是否存在,如果檔案存在,就立即啟用一個服務或進程;
    例如:某服務執行中突然崩潰,崩潰時能建立一個log或lock檔案;一旦發現這個lock檔案立即啟用一個程式,如傳送報告;
系統快照:能儲存各unit的當前狀態資訊於持久儲存裝置中;因為systemd的所有管理都是通過unit實現的,回滾時使用;
向後相容sysv init指令碼:所以放在/etc/init.d/服務指令碼也一樣能靠systemd來啟動;

4. 編譯安裝nginx,並使用systemd管理nginx
[Allen@CentOS7 ~]$ tar xf nginx-1.8.1.tar.gz
[Allen@centos7 ~]$ cd nginx-1.8.1/
[Allen@centos7 nginx-1.8.1]$ sudo ./configure --prefix=/usr/local/nginx1.8.1 --with-http_ssl_module
[Allen@centos7 nginx-1.8.1]$ make && make install


[root@centos7 ~]# cat /etc/systemd/system/nginx.service
[Unit]
Description=nginx server daemon
Documentation=man:nginx(8)
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx1.8.1/sbin/nginx
ExecReload=/usr/local/nginx1.8.1/sbin/nginx -s reload
ExecStop=/usr/local/nginx1.8.1/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl enable nginx.service
[root@centos7 ~]# systemctl start nginx.service
[root@centos7 ~]# systemctl status nginx.service
● nginx.service - nginx server daemon
  Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
  Active: active (running) since Fri 2018-11-02 09:59:09 CST; 4min 15s ago
    Docs: man:nginx(8)
 Main PID: 7893 (nginx)
  CGroup: /system.slice/nginx.service
          ├─7893 nginx: master process /usr/local/nginx1.8.1/sbin/nginx
          ├─7904 nginx: worker process
          ├─7905 nginx: worker process
          ├─7906 nginx: worker process
          ├─7907 nginx: worker process
          └─7908 nginx: worker process

Nov 02 09:59:09 centos7.4 systemd[1]: Starting nginx server daemon...
Nov 02 09:59:09 centos7.4 systemd[1]: Started nginx server daemon.
Nov 02 09:59:43 centos7.4 systemd[1]: Reloaded nginx server daemon.


IT145.com E-mail:sddin#qq.com