Linux服务与软件

发布于 2023-11-29  511 次阅读


1、Systemdctl服务管理

2、yum管理

课程前置内容导入

1、思考Linux开机的过程是怎么样的?!

1

一、Systemd简介

1、查看Systemd语法:man systemd

2、以树状图显示进程PID:pstree -p

3、systemd 进程简介

  • 由 linux 内核加载运行/usr/lib/systemd/systemd 程序

  • 是系统中的第一个进程,所有进程的父进程

  • PID(进程标记)号永远为 1

总结:systemd是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序。

二、Systemd与Unit的关系

1、Systemd 可以管理所有系统资源,将每个系统资源称为一个 Unit(元)。Unit 是 Systemd 管理系统资源的基本单位。根据不同的Unit类型,Systemd可以管理系统中不同的资源和服务。systemd提供的Unit类型有下面的这12种。

单元类型 文件后缀 描述
Service .service 定义了系统服务,包括启动,重启,关闭服务的相关指令
Target .target 定义了一组单元的集合,通常作为单元启动的同步点,某个target启动成功就意味着一组相关的service启动成功
Automount .automount 定义了系统引导时会进行自动挂载的挂载点
Device .device 定义了由systemd管理的硬件设备
Mount .mount 定义了由systemd管理的文件系统挂载点
Path .path 定义了一条用于基于路径激活服务的文件路径。例如,可以基于某一条文件路径的状态(是否存在等)来启动某个服务。
Scope .scope 定义了来自systemd总线接口的信息,通常用来管理额外的系统进程
Slice .slice 定义了资源限额,基于Linux cgroup nodes实现。
Snapshot .snapshot 定义了一次当前的systemd状态,通常在对systemd做修改后回滚使用
Socket .socket 定义了进程间通信使用的socket,往往socket会与service相关联
Swap .swap 定义了系统中的交换空间
Timer .timer 定义了一个定时激活另一个单元的定时器

2、Unit的命名:是由一个与配置文件同名的名字和类型组成的。例如httpd.service就是一个Unit。

3、Unit的配置文件:每一个 Unit 都有一个配置文件,作用是告诉 Systemd 怎么启动这个 Unit 。

Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,真正的配置文件存放在/usr**/lib/systemd/system/目录下**,如果是运行过程中产生的配置文件放在/run/systemd/system/。

2

三、Unit的组成-以ssh服务的Unit为例

1、文件的路径:/usr/lib/systemd/system/sshd.service

2、文件的组成:Unit(用于记录Unit文件的通用信息)、Service(用于记录Service信息)、Install(用于记录安装信息)

3、文件的内容:

3

补充:

Before、After表示以这个服务为准的启动顺序,如果在服务中定义了Before=aaa.service,After=bbb.service,则启动顺序为aaa服务>本服务>bbb服务

WantedBy表示服务何种运行级别下启动。例如WantedBy=multi-user.target多用户环境。

四、Systemd管理服务-Systemctl

systemd 的体系架构

1.最底层:systemd 内核层面依赖 cgroup、autofs、kdbus

2.第二层:systemd libraries 是 systemd 依赖库

3.第三层:systemd Core 是 systemd 自己的库

4.第四层:systemd daemons 以及 targets 是自带的一些基本 unit、target,类似于 sysvinit 中自带的脚本

5.最顶层:就是和 systemd 交互的一些工具,例如:systemctl、journal、loginctl等。

4

systemctl工具语法:systemctl [选项] 命令 [名称]

1、Unit列表查看

查看正在运行的Unit:systemctl list-units

查看所有的Unit:systemctl list-units -all

2、显示当前Unit状态

查看sshd服务的状态(运行):systemctl status sshd.service

查看服务的状态(未启动):systemctl status systemd-readahead-done.timer

5

6

3、Unit生命周期管理

停止指定的服务sshd:systemctl stop sshd.service

启动指定的服务sshd:systemctl start sshd.service

重启指定的服务sshd:systemctl restart sshd.service

4、设置Unit开机自启动

设置sshd服务开机不自启动:systemctl disable sshd.service

设置sshd服务开机自启动:systemctl enable sshd.service

5、屏蔽启动Unit

屏蔽ntpdate服务:systemctl mask ntpdate.service

取消屏蔽ntpdate服务:systemctl unmask ntpdate.service

6、其他指令

关闭系统:systemctl poweroff

重启系统:systemctl reboot

系统进入休眠:systemctl hibernate

五、Systemd其他管理命令

1、journald 是 systemd 的系统日志。journalctl是一个日志分析工具

查看指定服务sshd的日志:journalctl -u sshd.service

查看指定时间段的日志:journalctl --since yesterday

2、loginctl是systemd 的登录管理器,用来管理系统已登录用户和session的信息。

显示当前登录的用户列表:loginctl

3、hostnamectl用于查看和修改系统的主机名和主机信息。

显示当前主机名称和版本信息:hostnamectl status

修改主机的名字:hostnamectl set-hostname ah1 --> bash


六、课堂实操练习创建创建服务

可以通过命令:man 5 systemd.service获得unit格式

1、创建名为学号-safe.service

2、将***学号-safe**.service移动至/usr/lib/systemd/system,方便systemd启动这个unit*

*3**、**创建学号.sh脚本*

*4、设置****学号-safe.service**开机自启动***

**5、查看**/**tmp**/date的内容******

七、Linux软件管理(rpm包安装、yum安装、源码安装)

1、rpm包管理(RPM是Red-Hat Package Manager的缩写,即RPM软件包管理器)

(1)rpm包管理

(2)RPM软件包查询

命令 功能
rpm -**qa** 查询**Linux**系统中的所有软件包
rpm -**q 包名称** 查询指定名称的软件包是否安装
rpm -qi 包名称 查询指定名称软件包的详细信息
rpm -ql 包名称 查询指定名称软件包中所包括的文件列表
rpm -qf 文件名称 查询指定文件所属的软件包
rpm -**qpi 包文件名** 查询指定**RPM包文件的详细信息**
rpm -**qpl 包文件名** 查询指定**RPM包文件中包含的文件列表**
  • rpm -qa :查看所有安装的rpm包

  • rpm -q setup:查看setup软件包是否安装

  • rpm -qa |grep "^gcc" :查看以gcc来头的软件是否安装

  • rpm -qi gcc :查看gcc软件包的详细信息

  • rpm -ql gcc :查看gcc所包含的文件列表

  • rpm -qf /bin/ls :查看ls所有属的软件包(举反例:rpm -qf test)

  • rpm -qpi net-tools-2.0-0.25.20131004git.el7.x86_64.rpm : 查看net-tool工具包的详细信息

附注:net-tools-2.0-0.25.20131004git.el7.x86_64.rpm快速下载地址:

http://mirror.centos.org/centos/7/os/x86_64/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm

(3)光盘挂载

  • 确保虚拟机【已使用】ISO镜像且设备状态处理【已连接】的状态;

img

  • mount /dev/cdrom /media/ :将光盘进行挂载

  • umount /dev/sr0 :将光盘进行卸载

(4)RPM软件包安装

  • rpm -qa | grep ftp :查询是否安装有ftp

  • rpm -ivh /media/Packages/ftp-0.17-67.el7.x86_64.rpm : 使用rpm命令安装ftp软件包

7

  • rpm -qa | grep bind-chroot:查看是否安装bind-chroot(在域名服务器中使用)

  • rpm -ivh /media/Packages/bind-chroot-9.11.4-26.P2.el7.x86_64.rpm:使用rpm命令安装bind-chroot

8

(5)RPM软件包卸载

  • rpm -qa | grep ftp:先查询ftp安装情况

  • rpm -e ftp : 卸载ftp

  • rpm -qa | grep ftp:查看ftp卸载的情况

9

2、yum管理

什么是yum?

img

(1)yum源配置

(2)yum管理

  • yum –y install zip(-y可以自动回答yes):安装zip

  • yum remove zip :卸载zip软件包

  • yum list installed | grep "vim":在已安装的软件包中查找vim相关软件包

  • yum info zip :查看zip软件包的信息

3、源码安装-实操安装Nginx

实验要求一、安装环境,准备wget命令获取Nginx最新版本的安装包。

1、Nginx下载网址:https://nginx.org/en/download.html

2、获取Linux版本下载链接:https://nginx.org/download/nginx-1.24.0.tar.gz

在这里插入图片描述

3、在RHEL中下载Nginx:wget https://nginx.org/download/nginx-1.24.0.tar.gz

img

4、安装编译工具和函数库文件:yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel

实验二、源码包安装部署Nginx。

1、解压源码压缩包:tar -zxvf nginx-1.24.0.tar.gz

tar:解压
z:表示tar包是被gzip压缩过的,所以解压时需要用gunzip解压(以压缩的方式进行操作)
x:从tar包中把文件提取出来(代表解开压缩包)
v:显示详细信息(展现解压的过程)
f:xxx.tar.gz,指定被处理的文件时xxx.tar.gz(指定文件进行操作)

img

2、配置与检测:./configure --prefix=/usr/local/nginx-1.24.0 --with-http_ssl_module --with-http_stub_status_module

#配置configure --prefix 代表安装的路径,--with-http_ssl_module 安装ssl,--with-http_stub_status_module查看nginx的客户端状态

#配置成功后出现如下的结果以及目录中多出现一个Makefile文件

img

img

如果安装的过程遇到报错:./configure: error: C compiler cc is not found

需要执行命令解决:yum -y install gcc gcc-c++ autoconf automake make


3、编译安装nginx:make & make install

img

4、进入安装目录:cd /usr/local/nginx-1.24.0/sbin/

img

5、配置防火墙策略

开放80端口:firewall-cmd --permanent --add-port=80/tcp

防火墙重新加载:firewall-cmd --reload

查询端口是否开放:firewall-cmd --query-port=80/tcp

img

6、启动Nginx:./nginx

img

如启动的端口被占用,可以通过命令:ps -A | grep nginx查看被占用的端口,再将对应的端口杀死kill -9 pid1

7、查看IP地址并使用浏览器访问

10

img

实验三、将Nginx服务添加到Systemd中,使该服务可以被Systemctl管理。

1、在/lib/systemd/system目录下创建名为nginx.service的Unit文件:vim /lib/systemd/system/nginx.service;

[Unit]

Description=nginx

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/nginx-1.24.0/sbin/nginx

ExecReload=/usr/local/nginx-1.24.0/sbin/nginx -s reload

ExecStop=/usr/local/nginx-1.24.0/sbin/nginx -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

2、测试nginx服务是否可以正常启动

先杀死nginx进程:pkill nginx

再加载新的unit 配置文件:systemctl daemon-reload

最后启动nginx:systemctl start nginx

img

3、使用Systemd命令对Nginx服务进行管理

查看Nginx服务的状态:systemctl status nginx

设置Nginx服务开机自启动:systemctl enable nginx

img

下次见面会是什么时候呢?
最后更新于 2023-11-29