2018.11.19-2018.11.25

1,簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝如nginx\apache實現通過Systemd來管理

systemd概述

  1)systemd是一種新的linux系統服務管理器,用於替換init系統,能夠管理系統啓動過程和系統服務,一旦啓動起來,就將監管整個系統。在centos7系統中,PID1被systemd所佔用;
  2)systemd可以並行地啓動系統服務進程,並且最初僅啓動確實被依賴的服務,極大減少了系統的引導時間,這也就是爲什麼centos7系統啓動速度比centos6快許多的原因;
  3)systemctl 是 systemd 的主命令,用於管理系統及服務。    systemd的新特性:
            系統引導時實現服務並行啓動;
            按需激活進程;
            系統狀態快照;
            基於依賴關係定義服務控制邏輯    systemd的關鍵特性:
            基於socket的激活機制:socket與程序分離;
            基於bus的激活機制;
            基於device的激活機制;
            基於Path的激活機制;
            系統快照:保存各unit的當前狀態信息於持久存儲設備中;
            向後兼容sysv init腳本,放在/etc/init.d/
    注意:systemctl的命令是固定不變的;非由systemd啓動的服務,systemctl無法與之通信

systemd核心概念:unit

    unit由其相關配置文件進行標識、識別和配置;文件中主要包含了系統服務、監聽的socket、保存的快照以及其它與init相關的信息; 這些配置文件主要保存在:            /usr/lib/systemd/system            /run/systemd/system            /etc/systemd/system    
    unit的常見類型:
            Service unit:文件擴展名爲.service,用於定義系統服務;
            Target unit:文件擴展名爲.target,用於模擬實現“運行級別”;
            Device unit:文件擴展名爲.device,用於定義內核識別的設備;
            Mount unit:文件擴展名爲.mount,定義文件系統掛載點;
            Socket unit:文件擴展名爲.socket,用於標識進程間通信用到的socket文件;
            Snapshot unit:文件擴展名爲.snapshot, 管理系統快照;
            Swap unit:文件擴展名爲.swap, 用於標識swap設備;
            Automount unit:文件擴展名爲.automount,文件系統自動點設備;
            Path unit:文件擴展名爲.path, 用於定義文件系統中的一文件或目錄

systemd的service unit file詳解

1)service unit file 通常由三部分組成:
   [Unit]:定義與Unit類型無關的通用選項;用於提供unit的描述信息、unit行爲及依賴關係等;
   [Service]:與特定類型相關的專用選項;此處爲Service類型;
   [Install]:定義由“systemctl enable”以及"systemctl disable“命令在實現服務啓用或禁用時用到的一些選項
2)各部分釋義:
   [Unit] 段的常用選項:
     Description:描述信息; 意義性描述;
     After:定義unit的啓動次序,表示當前unit應該晚於哪些unit啓動;其功能與Before相反;
     Requies:依賴到的其它units;強依賴,被依賴的units無法激活時,當前unit即無法激活;
     Wants:依賴到的其它units;弱依賴;
     Conflicts:定義units間的衝突關係
   [Service] 段的常用選項:
     Type:用於定義影響ExecStart及相關參數的功能的unit進程啓動類型,其類型有:
        simple:默認值,執行ExecStart指定的命令,啓動主進程
        forking:以 fork 方式從父進程創建子進程,創建後父進程會立即退出        oneshot:一次性進程,Systemd 會等當前服務退出,再繼續往下執行        dbus:當前服務通過D-Bus啓動
        notify:當前服務啓動完畢,會通知systemd再繼續往下執行        idle:若有其他任務執行完畢,當前服務纔會運行     EnvironmentFile:環境配置文件;
     ExecStart:指明啓動unit要運行命令或腳本; 
     ExecStartPre:在ExecStart之前運行;
        ExecStartPost:在ExecStart之後運行;
     ExecStop:指明停止unit要運行的命令或腳本;
     Restart:當設定Restart=1時,則當次daemon服務意外終止後,會再次自動啓動。
   [Install] 段的常用選項:
     Alias:別名,可使用systemctl command Alias.service;
     RequiredBy:被哪些units所依賴;
     WantedBy:被哪些units所依賴注意:對於新創建的unit文件或修改了的unit文件,要通知systemd重載此配置文件,通過命令 systemctl daemon-reload.

實例:編譯安裝httpd,並實現通過systemd進行管理

1)通過 rpm -q httpd 命令檢查系統是否已安裝apache,如有先進行卸載;

2)下載Apache(httpd)源碼:https://httpd.apache.org/

3)自定義安裝依賴APR,需要先下載APR庫和PCRE環境:http://apr.apache.org/download.cgi    http://×××w.pcre.org

4)通過 yum group install "Development Tools" 安裝開發工具包

5)解壓所有已下載的文件

1171137-20180522174702575-1515512630.png

6)安裝PCRE

[root@happiness pcre-8.42]# ./configure --prefix=/usr/local/pcre
[root@happiness pcre-8.42]# make
[root@happiness pcre-8.42]# make install此處如果安裝的是pcre2的版本,後期編譯Apache時會出現錯誤提示:configure: error: Did not find pcre-config script at /usr/local/pcre。
    此時我們需要卸載已安裝的pcre2:rm -rf /usr/loca/pcre,直接刪除編譯安裝的目錄即可刪除pcre。

7)安裝APR

[root@happiness apr-1.6.3]# ./configure --prefix=/usr/local/apr
[root@happiness apr-1.6.3]# make
[root@happiness apr-1.6.3]# make install

8)安裝APR-util

[root@happiness apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@happiness apr-util-1.6.1]# make
[root@happiness apr-util-1.6.1]# make install

9)安裝Apache(httpd)

[root@happiness httpd-2.4.33]# ./configure --prefix=/usr/apache24 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
[root@happiness httpd-2.4.33]# make
[root@happiness httpd-2.4.33]# make install

10)運行httpd服務

[root@happiness httpd-2.4.33]# /usr/apache24/bin/apachectl start


注意:啓動httpd服務時有可能提示:servername未設置:

    AH00557: httpd: apr_sockaddr_info_get() failed for happiness
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

  此時我們可通過修改配置文件解決問題:

[root@happiness httpd-2.4.33]# vim /usr/apache24/conf/httpd.conf


1171137-20180522180430497-1744485056.png

11)添加服務腳本,使得可以通過systemd來管理httpd服務:

CentOS7服務的systemctl腳本存放在/usr/lib/systemd目錄下,有系統(/usr/lib/systemd/system)和用戶(/usr/lib/systemd/user)之分。此處我們在/usr/lib/systemd/system目錄下新建httpd.service的腳本文件,內容如下:

[Unit]
Description=The Apache HTTP Server 2.4.33
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
EnvironmentFile=/usr/apache24/conf/httpd.conf
ExecStart=/usr/apache24/bin/httpd -k start -DFOREGROUND
ExecReload=/usr/apache24/bin/httpd -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}[Install]
WantedBy=multi-user.target

2、描述awk命令用法及示例(至少3例)

image.png

image.png

image.png

image.png

image.png

image.png

3、描述awk函數示例(至少3例)

image.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章