一.目錄存放
1./usr/lib/syste,md/system/:每個服務最主要的啟動腳本設定
2.?/run/systemd/system/:系統執行過程中所產生的服務腳本,這些腳本的優先序要比? ? ? ? ? ? ?/usr/lib/systemd/system/ ?高!
3./etc/systemd/system/:管理員依據主機系統需求建立的執行腳本,/run/systemd/system/ ?高喔!
4.rhel7的服務systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和用戶(user)之分,需要開機不登陸就能運行的程序,存在系統服務里,即:/usr/lib/systemd/system目錄下
5.每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install]
二.腳本參數詳解
1.Type字段定義啟動類型
2.1.1.Type=simple(默認值):systemd認為該服務將立即啟動。服務進程不會fork(子進程)。如果該服務要啟動其他服務,不要使用此類型啟動,除非該服務是socket激活型。
2.1.2.Type=forking:systemd認為當該服務進程fork,且父進程退出后服務啟動成功。對于常規的守護進程(daemon),除非你確定此啟動方式無法滿足需求,使用此類型啟動即可。
2.1.3.Type=notify:與 Type=simple相同,但約定服務會在就緒后向systemd發送一個信號
?2..Server結尾,三部分服務配置
[Unit]:服務的說明
Description:描述服務
?After:依賴,當依賴的服務啟動之后再啟動自定義的服務
?? ??? ?表示如果network.target或sshd-keygen.service需要啟動,那么nginx.service應該在它們之后啟動。[Service]服務運行參數的設置
Type=forking是后臺運行的形式
?? ??? ?PIDFile
?? ??? ?: pid文件路徑
?? ??? ?ExecStartPre :啟動服務之前執行的命令(啟動前要做什么,上文中是測試配置文件 -t)
?? ??? ?ExecStart為服務的具體運行命令
?? ??? ?ExecReload為重啟命令
?? ??? ?ExecStop為停止命令
?? ??? ?PrivateTmp=True表示給服務分配獨立的臨時空間
?? ??? ?注意:啟動、重啟、停止命令全部要求使用絕對路徑[Install]服務安裝的相關設置,可設置為多用戶
三.源碼安裝nginx
3.1.下載nginx
[root@node1 ~]# wget -c https://nginx.org/download/nginx-1.24.0.tar.gz
--2024-02-29 18:41:16-- https://nginx.org/download/nginx-1.24.0.tar.gz
正在解析主機 nginx.org (nginx.org)... 52.58.199.22, 3.125.197.172, 2a05:d014:5c0:2600::6, ...
正在連接 nginx.org (nginx.org)|52.58.199.22|:443... 已連接。
已發出 HTTP 請求,正在等待回應... 200 OK
長度:1112471 (1.1M) [application/octet-stream]
正在保存至: “nginx-1.24.0.tar.gz”nginx-1.24.0.tar.gz 100%[================>] 1.06M 51.5KB/s 用時 20s 2024-02-29 18:41:36 (55.0 KB/s) - 已保存 “nginx-1.24.0.tar.gz” [1112471/1112471])
?
易錯點:
法一:
[root@node ~]# yum install -y ca-certificates法二:
[root@node ~]# wget --no-check-certificate https://nginx.org/download/nginx-0.1.24.tar.gz
--2024-01-24 20:52:45-- https://nginx.org/download/nginx-0.1.24.tar.gz
正在解析主機 nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:5c0:2601::6, ...
正在連接 nginx.org (nginx.org)|3.125.197.172|:443... 已連接。
警告: “nginx.org” 的證書不可信。
警告: “nginx.org” 的證書還未生效。
證書還未激活
已發出 HTTP 請求,正在等待回應... 200 OK
長度:287825 (281K) [application/octet-stream]
正在保存至: “nginx-0.1.24.tar.gz”nginx-0.1.24.tar. 100%[==========>] 281.08K 39.0KB/s 用時 7.2s 2024-01-24 20:52:53 (39.0 KB/s) - 已保存 “nginx-0.1.24.tar.gz” [287825/287825])
3.2.解壓
[root@node1 ~]# tar xf nginx-1.24.0.tar.gz -C /usr/local/src/
3.3.安裝依賴
[root@node1 ~]# yum install gcc gcc-c++ make pcre-devel openssl-devel -y
3.4.? ./configure
[root@node1 src]# cd /usr/local/src/nginx-1.24.0
[root@node1 nginx-1.24.0]# ll
總用量 836K
drwxr-xr-x 6 1001 1001 4.0K 2月 29 18:48 auto
-rw-r--r-- 1 1001 1001 316K 4月 11 2023 CHANGES
-rw-r--r-- 1 1001 1001 483K 4月 11 2023 CHANGES.ru
drwxr-xr-x 2 1001 1001 4.0K 2月 29 18:48 conf
-rwxr-xr-x 1 1001 1001 2.6K 4月 11 2023 configure
drwxr-xr-x 4 1001 1001 4.0K 2月 29 18:48 contrib
drwxr-xr-x 2 1001 1001 4.0K 2月 29 18:48 html
-rw-r--r-- 1 1001 1001 1.4K 4月 11 2023 LICENSE
drwxr-xr-x 2 1001 1001 4.0K 2月 29 18:48 man
-rw-r--r-- 1 1001 1001 49 4月 11 2023 README
drwxr-xr-x 9 1001 1001 4.0K 4月 11 2023 src
[root@node1 nginx-1.24.0]# mkdir -pv /var/log/nginx/
[root@node1 nginx-1.24.0]# ./configure --prefix=/usr/local/nginx \
> --sbin-path=/usr/sbin/nginx \
> --error-log-path=/var/log/nginx/error.log \
> --http-log-path=/var/log/nginx/access.log \
> --pid-path=/run/nginx.pid
3.5.編譯
[root@node1 nginx-1.24.0]# make
3.6.安裝
[root@node1 nginx-1.24.0]# make install
3.4.編輯/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
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true[Install]
WantedBy=multi-user.target
3.5.加載?
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl start nginx
四.測試
?
?