一.目录存放
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
四.测试