引导过程和服务控制

目录

一、Linux操作系统引导过程

1引导过程

1.1 开机自检

1.2 MBR引导

1.3GRUB菜单

grub功能和组成

        bootloader: 引导加载器,引导硬件去找到 内核(操作系统的核心)

        Linux的bootloader

GRUB 启动阶段

1.4加载Linux内核

1.5init进程初始化

二、服务

运行级别所对应的Systemd目标

systemd单元类型

systemctl 命令

service unit文件格式

unit格式说明:

service unit file文件通常由三部分组成:

Unit段的常用选项:

Service段的常用选项:

Install段的常用选项:


一、Linux操作系统引导过程

1引导过程

1.1 开机自检

        服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit, 中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移 交系统控制权,大多时候会移交给本机硬盘。 网络启动 加载  网络批量pxe 

        硬件启动POST:加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测

        主板的ROM:BIOS保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等

1.2 MBR引导

        运行放在MBR扇区里的启动 GRUB引导程序

1.3GRUB菜单

        系统类型双西雅图 内核文件    默认值

        GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置

grub功能和组成
        bootloader: 引导加载器,引导硬件去找到 内核(操作系统的核心)

                1.Windows: ntloader,仅是启动OS

                2.Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选                    定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核

        Linux的bootloader

                1.LILO:LInux LOader,早期的bootloader,功能单一

                2.GRUB: GRand Unified Bootloader, CentOS 5,6 GRUB 0.97: GRUB Legacy,                    CentOS 7 以后使用GRUB 2.02

        GRUB 启动阶段

                1.primary boot loader :
                   1st stage:MBR的前446个字节 引导 硬件去找 内核
                   1.5 stage:MBR 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统

                2.secondary boot loader :2nd stage,分区文件/boot/grub2/grub.cfg

1.4加载Linux内核

操作系统 调度硬件

把内核和镜像文件系统加载到内存中 可以使用

1.5init进程初始化

启动程序:

centos7 启动的第一个程序  systemd

centos6 启动的第一个程序  init

为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内 存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录
总结:加载硬件驱动程序,内核把init进程加载到内存中运行

二、 解决系统启动时故障

2.1修复mbr扇区故障

故障原因:

  • 病毒、木马的等造成的破坏;
  • 不正确的分区操作、磁盘读写误操作等。

故障现象:

  • 找不到引导程序,启动中断;
  • 无法加载操作系统,开机后黑屏。

解决思路:

  • 提前添加一块新硬盘;
  • 提前做好备份文件(将MBR扇区备份到另一块硬盘上);
  • 以安装光盘引导进入急救模式;
  • 从备份文件中恢复。

修复mbr分区

1.备份mbr引导扇区到其他磁盘

2.模拟破坏mbr引导扇区

3.引导镜像急救模式进行mbr扇区恢复

备份mbr扇区命令
[root@localhost ~]# mount /dev/sdb1 /mnt
[root@localhost data]# dd if=/dev/sda  of=/mnt/MBR.bak count=1 bs=512     //备份sda系统盘
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.00025007 秒,2.0 MB/秒

dd 命令可以对硬盘空间进行备份
dd 命令格式:dd  if=[输入文件] of=[输出文件] [选项]


##############################################################################

恢复mbr扇区命令
[root@localhost bak]# dd if=/mnt/MBR.bak  of=/dev/sda  count=512  bs=1
记录了512+0 的读入
记录了512+0 的写出
512字节(512 B)已复制,0.000579916 秒,883 kB/秒
实验
多块磁盘处理MBR分区故障

新建一块硬盘   将mbr 备份

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0 38.3G  0 lvm  /
  ├─centos-swap 253:1    0    2G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.7G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   20G  0 disk 
sdd               8:48   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  
[root@localhost ~]# fdisk /dev/sdb                                   //在sdb磁盘中做新分区
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xa0a65f07 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   59G  0 part 
  ├─centos-root 253:0    0 38.3G  0 lvm  /
  ├─centos-swap 253:1    0    2G  0 lvm  [SWAP]
  └─centos-home 253:2    0 18.7G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   10G  0 part                              //完成创建主分区sdb1
sdc               8:32   0   20G  0 disk 
sdd               8:48   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  
[root@localhost ~]# mkfs.xfs /dev/sdb1                                //格式化
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mount /dev/sdb1 /mnt                             //把sdb1挂载在mnt下
[root@localhost ~]# ls /mnt/
[root@localhost ~]# dd if=/dev/sda of=/mnt/mbr.bak count=1 bs=512
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000312697 秒,1.6 MB/秒
[root@localhost ~]# hexdump -C -n 512 /mnt/mbr.bak 
00000000  eb 63 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.c..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|
00000080  00 20 fb a0 64 7c 3c ff  74 02 88 c2 52 be 05 7c  |. ..d|<.t...R..||
00000090  b4 41 bb aa 55 cd 13 5a  52 72 3d 81 fb 55 aa 75  |.A..U..ZRr=..U.u|
000000a0  37 83 e1 01 74 32 31 c0  89 44 04 40 88 44 ff 89  |7...t21..D.@.D..|
000000b0  44 02 c7 04 10 00 66 8b  1e 5c 7c 66 89 5c 08 66  |D.....f..\|f.\.f|
000000c0  8b 1e 60 7c 66 89 5c 0c  c7 44 06 00 70 b4 42 cd  |..`|f.\..D..p.B.|
000000d0  13 72 05 bb 00 70 eb 76  b4 08 cd 13 73 0d 5a 84  |.r...p.v....s.Z.|
000000e0  d2 0f 83 de 00 be 85 7d  e9 82 00 66 0f b6 c6 88  |.......}...f....|
000000f0  64 ff 40 66 89 44 04 0f  b6 d1 c1 e2 02 88 e8 88  |d.@f.D..........|
00000100  f4 40 89 44 08 0f b6 c2  c0 e8 02 66 89 04 66 a1  |.@.D.......f..f.|
00000110  60 7c 66 09 c0 75 4e 66  a1 5c 7c 66 31 d2 66 f7  |`|f..uNf.\|f1.f.|
00000120  34 88 d1 31 d2 66 f7 74  04 3b 44 08 7d 37 fe c1  |4..1.f.t.;D.}7..|
00000130  88 c5 30 c0 c1 e8 02 08  c1 88 d0 5a 88 c6 bb 00  |..0........Z....|
00000140  70 8e c3 31 db b8 01 02  cd 13 72 1e 8c c3 60 1e  |p..1......r...`.|
00000150  b9 00 01 8e db 31 f6 bf  00 80 8e c6 fc f3 a5 1f  |.....1..........|
00000160  61 ff 26 5a 7c be 80 7d  eb 03 be 8f 7d e8 34 00  |a.&Z|..}....}.4.|
00000170  be 94 7d e8 2e 00 cd 18  eb fe 47 52 55 42 20 00  |..}.......GRUB .|
00000180  47 65 6f 6d 00 48 61 72  64 20 44 69 73 6b 00 52  |Geom.Hard Disk.R|
00000190  65 61 64 00 20 45 72 72  6f 72 0d 0a 00 bb 01 00  |ead. Error......|
000001a0  b4 0e cd 10 ac 3c 00 75  f4 c3 00 00 00 00 00 00  |.....<.u........|
000001b0  00 00 00 00 00 00 00 00  dd 53 0a 00 00 00 80 20  |.........S..... |
000001c0  21 00 83 aa 28 82 00 08  00 00 00 00 20 00 00 aa  |!...(....... ...|
000001d0  29 82 8e fe ff ff 00 08  20 00 00 f8 5f 07 00 00  |)....... ..._...|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

模拟破坏

急救模式 1

完成以上的步骤,就成功修复mbr分区的故障

多台设备处理MBR分区故障

1.先把设备1中的/dev/sda备份到/mnt下

[root@localhost ~]# dd if=/dev/sda of=/mnt/mbr.bak  count=1 bs=512       
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000241894 秒,2.1 MB/秒
####把sda备份到mnt下并重命名为mbr.bak
[root@localhost ~]# ls /mnt                          
mbr.bak
####查看mnt下是否成功建立mbr.bak文件
[root@localhost ~]# hexdump -C -n 512 /mnt/mbr.bak     //查看是否拷贝成功
00000000  eb 63 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.c..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|
00000080  00 20 fb a0 64 7c 3c ff  74 02 88 c2 52 be 05 7c  |. ..d|<.t...R..||
00000090  b4 41 bb aa 55 cd 13 5a  52 72 3d 81 fb 55 aa 75  |.A..U..ZRr=..U.u|
000000a0  37 83 e1 01 74 32 31 c0  89 44 04 40 88 44 ff 89  |7...t21..D.@.D..|
000000b0  44 02 c7 04 10 00 66 8b  1e 5c 7c 66 89 5c 08 66  |D.....f..\|f.\.f|
000000c0  8b 1e 60 7c 66 89 5c 0c  c7 44 06 00 70 b4 42 cd  |..`|f.\..D..p.B.|
000000d0  13 72 05 bb 00 70 eb 76  b4 08 cd 13 73 0d 5a 84  |.r...p.v....s.Z.|
000000e0  d2 0f 83 de 00 be 85 7d  e9 82 00 66 0f b6 c6 88  |.......}...f....|
000000f0  64 ff 40 66 89 44 04 0f  b6 d1 c1 e2 02 88 e8 88  |d.@f.D..........|
00000100  f4 40 89 44 08 0f b6 c2  c0 e8 02 66 89 04 66 a1  |.@.D.......f..f.|
00000110  60 7c 66 09 c0 75 4e 66  a1 5c 7c 66 31 d2 66 f7  |`|f..uNf.\|f1.f.|
00000120  34 88 d1 31 d2 66 f7 74  04 3b 44 08 7d 37 fe c1  |4..1.f.t.;D.}7..|
00000130  88 c5 30 c0 c1 e8 02 08  c1 88 d0 5a 88 c6 bb 00  |..0........Z....|
00000140  70 8e c3 31 db b8 01 02  cd 13 72 1e 8c c3 60 1e  |p..1......r...`.|
00000150  b9 00 01 8e db 31 f6 bf  00 80 8e c6 fc f3 a5 1f  |.....1..........|
00000160  61 ff 26 5a 7c be 80 7d  eb 03 be 8f 7d e8 34 00  |a.&Z|..}....}.4.|
00000170  be 94 7d e8 2e 00 cd 18  eb fe 47 52 55 42 20 00  |..}.......GRUB .|
00000180  47 65 6f 6d 00 48 61 72  64 20 44 69 73 6b 00 52  |Geom.Hard Disk.R|
00000190  65 61 64 00 20 45 72 72  6f 72 0d 0a 00 bb 01 00  |ead. Error......|
000001a0  b4 0e cd 10 ac 3c 00 75  f4 c3 00 00 00 00 00 00  |.....<.u........|
000001b0  00 00 00 00 00 00 00 00  dd 53 0a 00 00 00 80 20  |.........S..... |
000001c0  21 00 83 aa 28 82 00 08  00 00 00 00 20 00 00 aa  |!...(....... ...|
000001d0  29 82 8e fe ff ff 00 08  20 00 00 f8 5f 07 00 00  |)....... ..._...|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

2.使用scp命令把备份好的文件发送到设备2

3.破坏设备1中/dev/sda文件来模拟MBR分区故障

4.重启设备1选择进入急救模式

5.将IP地址临时修改成与设备2的IP地址为同一个网段

6.将设备2的/mnt/mbr.bak文件重新拷贝回设备1中

7.将之前被破坏的/dev/sda文件用备份文件恢复

8.重启设备1即可

2.2修复grub分区

故障原因

  • MBR中的GRUB引导程序遭到破坏
  • grub.cfg文件丢失、引导配置有误

故障现象

  • 系统引导停滞,显示“grub>”提示符

解决思路

  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向 MBR 扇区中重建grub程序

实验GRUB引导故障

1.将/boot/grub2文件下grub.cfg转移到data文件夹下,来模拟grub.cfg文件丢失的GRUB引导故障2.重新启动,在读条界面按 Esc 键(只有0.5秒时间,且只能按一次)进入启动菜单,改用光驱启动

3重新配置grub.cfg文件

4.reboot重启设备

2.3遗忘root用户密码

故障原因

        遗忘root用户的密码

故障现象

        无法进行需要root权限的管理操作

        若没有其他可用帐号,将无法登录系统

解决思路

        进入急救模式,重设密码

实验

情况一:有光驱的情况下,借助光驱里面的操作系统来修改密码,使用光驱启动,进入急救模式。

2.进入自己的系统之后的命令

passwd
#修改密码

情况二:没有光盘的情况下

启动时任意键暂停启动
按e键进入编辑模式
将光标移动linux 开始的行,添加内核参数 rd.break
按ctrl-x启动
mount –o remount,rw /sysroot
chroot /sysroot
passwd root
#如果SELinux是启用的,才需要执行下面操作,如没有启动,不需要执行
touch /.autorelabel
exit
reboot


#############################################################


启动时任意键暂停启动
按e键进入编辑模式
将光标移动linux 开始的行,改为 rw init=/sysroot/bin/sh
按ctrl-x启动
chroot /sysroot
passwd root
#如果SELinux是启用的,才需要执行下面操作,如查没有启动,不需要执行
touch /.autorelabel
exit
reboot

1.启动时按任意键暂停启动,之后按e键进入编辑模式。

2.将光标移动linux 开始的行,添加内核参数 rd.break,按“ctrl+x”启动

3.重新挂载并修改权限

4.切换根目录,修改密码,exit退出系统根目录

三、服务

服务程序

1.本地服务程序,管理本机

systemd:管理式

叫醒服务init

2.网络服务程序,接待网络上的客户

        1.系统必要的程序

        2.yum rpm 安装的程序

        3.编译安装的程序,需要 手写 配置文件后才可以

3.1运行级别所对应的Systemd目标

运行级别        

systemd的目标        

说明

init 0        

target        

关机

init 1        

rescue.target        

单用户模式,不需要密码,多用于系统维护

init 2        

Multi-user.target        

用户定义/域特定运行级别,默认等同于3

init 3        

Multi-user.target        

字符界面的完整多用户模式,大多服务器主机运行在此级别

init 4        

Multi-user.target        

用户定义/域特定运行级别,默认等同于3

init 5        

Graphical.target        

图形界面的多用户模式

init 6        

Reboot.target        

重新启动

3.2systemd单元类型

systemctl 命令用于管理各种类型的systemd单元,可以使用“systemctl -t help”命令来查询systemd支持的单元类型。

单元类型

护展名

说明

Service

.service

护展名,描述一个服务系统

Socket

.socket

描述一个进程间通信的套接字

Device

.device

描述一个内核识别的设备文件

Mount

.mount

描述一个文件系统的挂载点

Automoun

.automount

描述一个文件系统的自动挂载点

Swap

.swap

描述一个内存交换设备或目录

Timer

.timer

描述一个定时器(用于实现类似cron的调度任务)

Path

.path

描述一个文件系统中文件或目录(path 路径)

Snapshot

.snapshot

用于保存一个systemd的状态(snapshot 快照)

Scope

.scope

使用systemd的总线接口以编程的方式创建外部进程

Slice

.slice

描述居于Cgroup的一组通过层次组织的管理系统进程

Target

.target

描述一组systemd的单元(target 目标)

3.3systemctl 命令

systemd 进行管理的时候的命令

systemctl start 服务名

开启服务

systemctl stop 服务名

关闭服务

systemctl status 服务名

查看服务

systemctl restart 服务

重启服务

systemctl reload 服务

重新加载服务,不影响客户使用

systemctl ehable 服务

开机自启

systemctl disable 服务

关闭开机启动

systemctl enable --now 服务

 开机自启,并立即启动

systemctl disable --now服务

 关闭开机自启,并立即关闭

systemctl damon reload

3.4service unit文件格式

unit格式说明:

作用:主要用来描述此软件的功能,man帮助,依赖关系等等

  • 以 “#” 开头的行后面的内容会被认为是注释
  • 相关布尔值,1、yes、on、true 都是开启,0、no、off、false 都是关闭
  • 时间单位默认是秒,所以要用毫秒(ms)分钟(m)等须显式说明

service unit file文件通常由三部分组成:

  • [Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等
  • [Service]:与特定类型相关的专用选项;此处为Service类型
  • [Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项

Unit段的常用选项:

Description:描述信息

After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反

Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活

Wants:依赖到的其它units,弱依赖

Conflicts:定义units间的冲突关系

Service段的常用选项:

Type:定义影响ExecStart及相关参数的功能的unit进程启动类型

1. ​     simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中

2. ​     forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务。原生父程序在启动结束后就会终止

3. ​     oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中

4. ​      dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作.因此通常也要同时设定BusNname= 才行

5. ​       notify:在启动完成后会发送一个通知消息。还需要配合 NotifyAccess 来让 Systemd 接收消息

6. ​       idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务

  • EnvironmentFile:环境配置文件
  • ExecStart:指明启动unit要运行命令或脚本的绝对路径
  • ExecStartPre: ExecStart前运行
  • ExecStartPost: ExecStart后运行
  • ExecStop:指明停止unit要运行的命令或脚本
  • Restart:当设定Restart=1 时,则当次daemon服务意外终止后,会再次自动启动此服务
  • RestartSec: 设置在重启服务( Restart= )前暂停多长时间。 默认值是100毫秒(100ms)。 如果未指定时间单位,那么将视为以秒为单位。 例如设为"20"等价于设为"20s"。
  • PrivateTmp:设定为yes时,会在生成/tmp/systemd-private-UUID-NAME.service-XXXXX/tmp/目录

用systemd管理 写service文件

yum -y install pcre-devel zlib-devel gcc gcc-c++ make   #安装依赖关系
[root@localhost ~]# cd /opt                             #切换到opt
[root@localhost opt]# wget http://nginx.org/download/nginx-1.18.0.tar.gz    #官网下载源码包
--2024-04-17 15:51:33--  http://nginx.org/download/nginx-1.18.0.tar.gz
正在解析主机 nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:5c0:2600::6, ...
正在连接 nginx.org (nginx.org)|3.125.197.172|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1039530 (1015K) [application/octet-stream]
正在保存至: “nginx-1.18.0.tar.gz”

100%[====================================================>] 1,039,530    780KB/s 用时 1.3s   

2024-04-17 15:51:35 (780 KB/s) - 已保存 “nginx-1.18.0.tar.gz” [1039530/1039530])

[root@localhost opt]# tar xf nginx-1.18.0.tar.gz                    #解压安装包
[root@localhost opt]# ls
a  b  fstab  nginx-1.18.0  nginx-1.18.0.tar.gz  passwd  rh  shadow
[root@localhost opt]# cd nginx-1.18.0/                              #切换到nginx中
[root@localhost nginx-1.18.0]# ./configure  --prefix=/apps/nginx    #检测环境,指定安装目录为/apps/nginx
[root@localhost nginx-1.18.0]# make -j2         #编译 -j2 2个核心编译
[root@localhost nginx-1.18.0]# make install     #将软件安装进指定的路径
[root@localhost nginx-1.18.0]# ln -s /apps/nginx/sbin/nginx  /usr/local/bin/  #建立软连接
[root@localhost nginx-1.18.0]# vim /lib/systemd/system/nginx.service    #手写.service文件

[Unit]
Description=The nginx HTTP and reverse proxy server

[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid                #pid文件位置
ExecStart=/apps/nginx/sbin/nginx                  #指明启动unit要运行命令的绝对路径
ExecReload=/apps/nginx/sbin/nginx -s reload       
ExecStop=/usr/bin/kill  -s TERM  ${MAINPID}      #指明关闭unit要运行命令的绝对路径

[Install]
WantedBy=multi-user.target                       #被字符界面所依赖

[root@localhost nginx-1.18.0]# systemctl daemon-reload        #重新加载配置
[root@localhost nginx-1.18.0]# systemctl start nginx          #开启服务
[root@localhost nginx-1.18.0]# systemctl status nginx         #查看服务状态
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since 三 2024-04-17 16:05:55 CST; 14s ago
  Process: 4938 ExecStart=/apps/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
 Main PID: 4940 (nginx)
   CGroup: /system.slice/nginx.service
           ├─4940 nginx: master process /apps/nginx/sbin/nginx
           └─4941 nginx: worker process

4月 17 16:05:55 localhost.localdomain systemd[1]: Starting The nginx HTTP and reverse pr.....
4月 17 16:05:55 localhost.localdomain systemd[1]: Started The nginx HTTP and reverse pro...r.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost nginx-1.18.0]# systemctl stop nginx          #关闭服务
[root@localhost nginx-1.18.0]# systemctl status nginx        #查看服务状态
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

4月 17 16:05:55 localhost.localdomain systemd[1]: Starting The nginx HTTP and reverse pr.....
4月 17 16:05:55 localhost.localdomain systemd[1]: Started The nginx HTTP and reverse pro...r.
4月 17 16:06:29 localhost.localdomain systemd[1]: Stopping The nginx HTTP and reverse pr.....
4月 17 16:06:29 localhost.localdomain systemd[1]: Stopped The nginx HTTP and reverse pro...r.
Hint: Some lines were ellipsized, use -l to show in full.

Install段的常用选项:

Alias:别名,可使用systemctl command Alias.service

RequiredBy:被哪些units所依赖,强依赖

WantedBy:被哪些units所依赖,弱依赖

Also:安装本服务的时候还要安装别的相关服务

3.5chkconfig工具:管理服务工具

格式: chkconfig --list [服务名称]
chkconfig --add 服务名称
chkconfig --level 级别列表服务名on/off
chkconfig --add httpd
chkconfig --level 35 httpd on
加到服务中?
yum -y install pcre-devel zlib-devel gcc gcc-c++ make 
#依赖包,编译软件
cd /opt
tar zxvf nginx-1.120.tar.gz -C /opt
cd nginx-1.120  
./configure \
--prefix=/usr/local/nginx \
#安装路径
--user=nginx \
#指定用户名  指定谁来管理他
--group=nginx \
#指定用户组
--with-http_stub_status_module
#启用此模块支持状态统计

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

useradd -M  -s /sbin/nologin nginx
#创建管理用户

make && make install
#编译安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#这步可以不做,做软链接,让系统可以直接使用

cat /usr/local/nginx/logs/nginx.pid
#查看nginx进程号,便于停止
停止
kill  -3 进程号

vim /etc/init.d/nginx     #写一个脚本

#!/bin/bash 
#chkconfig: - 99 20 
#description:Nginx Service Control Script 
PROG="/usr/local/nginx/sbin/nginx" 
PIDF="/usr/local/nginx/logs/nginx.pid" 

case "$1" in
start) $PROG 
;; 
stop) 
kill -s QUIT $(cat $PIDF) 
;; 
restart) 
$0 stop $0 start
;; 
reload) 
kill -s HUP $(cat $PIDF) 
;;
*) echo "Usage: $0 {start|stop|restart|reload}" 
exit 1 
esac 
exit 0

chmod +x /etc/init.d/nginx 
#给脚本加上权限
ss -ntap |grep nginx
#查看服务有没有启动

chkconfig --add nginx
#将服务加入


chkconfig --list  nginx
#查看服务
chkconfig --level 35 nginx on
#开启3和5自动开启


  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值