linu第九部分:Linux基础服务

第九部分Linux基础服务

  • 是什么?
  • 有什么功能?
  • 怎么搭建?
    • 安装yum/apt/源码/二进制/容器化部署
    • 配置:多查文档,多试
    • 重启:成功
      • 失败 -> 排错 -> 查日志 -> 改配置文件
  • 如何使用?

FTP/SFTP

FTP( File Transfer Protocol,文件传输服务 )

基于 C/S 模式,默认服务端口号是 20、21

20 端口 用于数据传输

21 端口 用于接收客户端的 FTP 命令与参数。

SFTP 安全的FTP服务 使用 22 端口 依赖SSH服务;

作用:实现文件的上传和下载

  • 客户端:ftp/Xftp/WinSCP/FileZilla 【Cline】
  • 服务端: vsftp/openssh-server(sftp) 【Server】
#服务端

#准备工作
#1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#2.关SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
重启系统生效
#3.配置yum源(跳过)
#4.安装vsftpd(服务端安装)
yum -y install vsftpd
#5.配置vsftpd
cat /etc/vsftpd/vsftpd.conf

cd /etc/vsftpd/
#备份一份
cp vsftpd.conf vsftpd.conf.bak
#删除注释和空白行
grep -Ev "^$|^#" vsftpd.conf.bak > vsftpd.conf
#进行内容编辑
vim /etc/vsftpd/vsftpd.conf
---------------------------------
anonymous_enable=YES #允许匿名用户登录
local_enable=YES #允许本地系统用户登录
write_enable=YES #允许 “写操作”
local_umask=022 #本地用户创建文件 / 目录时的 权限掩码
dirmessage_enable=YES #当用户进入某目录时,若目录下有 .message 文件,会显示该文件内容(通常用于目录说明)。
xferlog_enable=YES #启用文件传输日志
connect_from_port_20=YES #数据传输时使用 20 端口 发起连接
xferlog_std_format=YES #日志使用 标准格式
listen=YES #独立进程模式运行(直接监听 21 端口)
#listen_ipv6=YES # IPv6 端口(仅监听 IPv4),若需支持 IPv6,取消注释即可。
pam_service_name=vsftpd #指定 PAM 认证模块(对应 /etc/pam.d/vsftpd 配置文件),控制用户登录验证规则。
userlist_enable=YES #启用 用户列表控制(默认列表文件为 /etc/vsftpd/user_list):
默认规则:列表中的用户 禁止登录(需配合 userlist_deny=YES,默认开启)。
tcp_wrappers=YES #启用 TCP 包装器(通过 /etc/hosts.allow 和 /etc/hosts.deny 限制 IP 访问),增强安全性。
-----------------------------------
#6.重启服务,检测服务状态
systemctl restart vsftpd #重启服务
systemctl status vsftpd #检查状态
systemctl enable vsfipd #开机自启
---------------------------------------------------------
#客户端
#1.安装ftp
yum install ftp -y
#2.直接ftp IP地址
ftp 192.168.25.21(服务端ip)
#Name (192.168.25.21:root): root(选择一个服务端存在的用户)
#530 Permission denied.
#Login failed.(禁止root登录,换一个用户)exit退出
------------------------------------
#成功登录
root@cline20 ~# ftp 192.168.25.21
Connected to 192.168.25.21 (192.168.25.21).
220 (vsFTPd 3.0.2)
Name (192.168.25.21:root): lwy
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
---------------------------------------
ls 查看状态
pwd 当前路径

#上传 【客户端的当前目录下的文件上传给服务端】
put ./1.txt

#下载  【将服务端的文件下在到客户端的当前目录】
get 1.txt 
服务端操作(FTP 服务器端)
关防火墙:systemctl stop firewalld; systemctl disable firewalld(关闭并禁用开机启动)
关 SELinux:sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config(需重启生效)
装 vsftpd:yum -y install vsftpd(安装 FTP 服务)
配置 vsftpd:
备份配置:cd /etc/vsftpd/; cp vsftpd.conf vsftpd.conf.bak
清理配置:grep -Ev "^$|^#" vsftpd.conf.bak > vsftpd.conf(去注释空行)
编辑核心配置(vim /etc/vsftpd/vsftpd.conf):允许匿名 / 本地用户登录、写操作,启用日志和标准端口
服务管理:systemctl restart vsftpd(重启);systemctl status vsftpd(查状态);systemctl enable vsftpd(开机自启)
客户端操作(连接 FTP 的机器)
装客户端:yum install ftp -y(安装 ftp 工具)
连接服务端:ftp 192.168.25.21(输入服务端 IP)
登录:输入服务端存在的普通用户(如 lwy)及密码(root 默认禁止登录)
常用操作:
ls:查看服务端文件
pwd:查看服务端当前路径
put ./1.txt:上传本地 1.txt 到服务端
get 1.txt:下载服务端 1.txt 到本地

Linux软件安装

  • 源码包安装:下载软件的源代码(C/C++/go/Java), 编译生成二进制程序,将程序复制到 /usr/bin 或 /usr/local/bin,依赖复制到 /lib 或 /lib64,将配置文件复制到 /etc/ 中。
  • 二进制包:已经编译好的程序;只需要将其复制到系统目录中,配置环境变量。
  • rpm:红帽软件包管理工具;rpm 需要依赖环境;
  • yum:管理 rpm 包一键安装工具;自动下载安装 rpm 以及相关的依赖环境。
  • 容器化技术:将软件、各种依赖环境、运行环境进行打包,原理类似于一个 “微型的虚拟机”;

rpm:安装卸载rpm包

下载:软件官网、开源镜像站、系统安装光盘;

安装:rpm -ivh 软件包名称

## 进入光盘的软件包目录

cd /media/cdrom/Packages

## 执行安装

rpm -ivh tree-1.6.0-10.el7.x86_64.rpm

卸载:rpm -evh 软件名

## 执行卸载
rpm -evh tree

查找:rpm -qa 查找所有已安装的软件包

-qi 查看软件包详细信息

-ql 查看软键包的安装目录

yum:一键管理rpm依赖关系

  • 安装:yum install -y 软件名
  • 卸载:yum remove -y 软件名
  • 重新加载源:yum makecache
  • 更新系统:yum update
  • 清理依赖:yum autoremove
  • 清理缓存:yum clean all
[root@8  /]#  cd etc
[root@8 etc]# cd yum
yum/                yum.repos.d/        yum.repos.d.bak/
[root@8 etc]# cd /etc/yum.repos.d
[root@8 yum.repos.d]# ls
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  epel.repo  epel-testing.repo
[root@8 yum.repos.d]# vim CentOS-Media.repo
yumj

Crontab:计划任务

  • 设置周期时间,到达时间执行命令或脚本
  • 分 时 日 月 周五
  • * 是统配符,代表所有
crontab
# -e:编辑, 调用vim编辑
# -l:查看
# -u:指定用户
# -r:删除所有计划任务

* * * * *  命令或脚本
# 每天00:00执行
0 0 * * *  systemctl restart netwo
# 每天3:00执行
0 3 * * *  mysqldump -uroot -p  > /data/mysql.sql
# 每个月1号00:00执行
0 0 1 * *  xxx
# 每个月1,10,20号00:00执行
0 0 1,10,20  *  *  xxx
# 每周日4:00执行
0 4 * * 0  xxx
# 每周日4:00执行
0  4  *  *  0   xxx
​
# 每隔5分钟执行一次
*/5 * * * *   xxx
字段	范围	特殊符号举例	含义解释
分钟	0-59	*/10	每10分钟执行一次
小时	0-23	8-10	8点、9点、10点执行
日期	1-31	1,15	每月1号和15号执行
月份	1-12	6	6月执行(也可用英文缩写jun)
星期	0-6(0=日)	1	每周一执行(1代表周一)
字段 范围 特殊符号举例 含义解释
分钟 0-59 */10 每10分钟执行一次
小时 0-23 8-10 8点、9点、10点执行
日期 1-31 1,15 每月1号和15号执行
月份 1-12 6 6月执行(也可用英文缩写jun)
星期 0-6(0=日) 1 每周一执行(1代表周一)

NFS/SMB:网络文件系统,共享目录

  • NFS:(Network File System)网络文件系统。可以像挂载本地磁盘一样挂在网络文件目录
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关SELinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 安装
yum install -y nfs-utils rpcbind
# 改配置文件
vim /etc/exports

#将目录共享给所有主机
/data *(rw,sync,no-root-squash)
将目录共享给192.168.8.0网段中的主机
/opt 192.168.8.0/24(rw,sync,no-root-squash)
#将目录共享给ip地址为192.168.8.10的主机
/tmp 192.168.8.10(rw,sync,no-root-squash)
# 重启
systemctl restart rpcbind nfs-server
systemctl enable rpcbind nfs-server

# 检测
exportfs -avr
exporting *:/data

# 客户端
# 关闭防火墙、SElinux

#安装NFS 客户端工具包
yum install nfs-utils 

# 挂载本地目录上。
mount -t nfs <服务端IP>:/共享目录 /本地挂载点 [选项]
mount -t nfs 192.168.8.81:/data  /mnt 


autofs

自动按需挂载 nfs、光盘、磁盘。

在客户端安装

yum install autofs -y
#安装插件

mkdir /mnt/nfs
# 创建nfs文件,全部完成后cd进来以后可以自动挂载光盘

#修改autofs主配置文件
vim /etc/auto.master
#将所有的nfs目录都挂载到/mnt子目录中,详细设置在/etc/auto.nfs 超过60秒未访问,自动卸载
/mnt    /etc/auto.nfs --timeout=60
#目录     所有nfs存放点    自动结束时间60秒,不改默认300秒五分钟

# 创建/etc/auto.nfs子配置文件,专门管理所有nfs的挂载
vim /etc/auto.nfs
# 挂载点名称 挂载类型 服务端IP:共享目录
nfs   -fstype=nfs   192.168.8.81:/data

#重启autofs
systemctl restart autofs

# 默认没有挂载共享目录,需要进入挂载点后,才会自动挂载。
cd /mnt/nfs

#超过超时间未使用,则自动卸载

Samba:实现了 SMB 协议的开源软件;

SMB:Windows 上共享目录与共享打印机的一种协议;

# 安装samba
yum install -y samba samba-client

# 修改配置文件,设置共享目录的路径与权限

在用户需要使用该文件系统时才去动态挂载,从而节约了网络l's资源和服务器的硬件资源

nfs 客户端安装配置。

主配置文件 /etc/auto.master

子配置文件 /etc/auto.nfs

(autofs 默认自动卸载时间为 300s 即 5 分钟)

NTP/Chrony:时间同步服务

NTP (Network Time Protocol, 网络时间协议):实现时间同步,让设备时间与国际标准时间保持一致;

  • 设备日志,服务十日志需要记录时间;
  • 分布式系统(分布式数据库、分布式缓存、分布式存储、消息队列)时间戳
  • 金融系统、订单系统、地图导航等服务都需要高精度的时间。

补充命令-date:显示或修改系统时间

date
date+"时间格式"
%Y 年例如:2025
%M 月例如:7
%d 天例如:24
%H 24小时制的小时:12
7 %M 分钟: 40
%S 秒: 10
 %F : 年-月-日
 %T : 时:分:秒


# 在复制文件后加备份时间
 cp init.sh init.sh.$(date +"%Y%m%d%H%M%S")   (over)


 # 修改时间
 date -s"2020-1-1 0:0:0"
 
 # 同步时间,需要ntp客户端
 yum install -y ntpdate

 # 通过公网的ntp服务进行时间同步
 ntpdate  ntp.aliyun.com   (over)

 # 在局域网中搭建ntp服务
 yum install ntp ntpdate -y
vim /etc/ntp.conf

#允许同步的网段:
 restrict 192.168.8.0 mask 255.255.255.0 nomodify notrap
#服务端同步时间的服务器


 # 定时时间同步
*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com &>/dev/null

这是一套从环境准备 → 服务配置 → 启停管理 → 客户端同步的完整 NTP 时间服务器搭建方案,让局域网内机器统一对齐标准时间(依赖阿里云公共源)。

rpm -qa | grep ntp
#查询是否安装,如果输出包含ntp和ntpdate,则说明已经安装NTP服务。如果只有一个包被安装,建议卸载后重新安装。使用命令rpm -e xxx卸载。
yum install ntp ntpdate -y
#YUM安装

#修改NTP配置文件
[root@8 ~]# vim /etc/chrony.conf(常用)
[root@8 ~]# vim /etc/ntp.conf
进入后编辑
# 使用 ntp.aliyun.com 作为 NTP 服务器
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp.aliyun.com
allow 192.168.8.0/24

完成后执行下面的保存并自启动

1.systemctl start chronyd
启动 chronyd 服务,让系统开始运行 chrony 时间同步功能,用于和时间服务器同步系统时间。
2.systemctl restart chronyd
重启 chronyd 服务,会先停止服务再重新启动,一般在修改 chrony 配置(如 /etc/chrony.conf )后执行,让新配置生效。
3.systemctl enable chronyd
设置 chronyd 服务开机自启,这样系统每次开机时,chronyd 服务会自动启动,持续提供时间同步功能。

#完成后检测
chronyc sources -v

#同步(上述在服务端操作完成后,此命令在客户端执行,同步服务器时间)

ntpdate 192.168.8.81

DNS

vim /var/named/test.com.zone
编辑
named-checkzone test.com /var/named/test.com.zone
校验是否完整,完整则输出ok

操作步骤

# CentOS7需要安装bind-utils
yum install bind-utils               (over)

# dig 命令查看 dns设置
dig   输入域名返回ip地址               (over)

# 关防火墙关SELinux
systemctl stop firewalld      临时
systemctl disable firewalld   永久
setenforce 0                  临时
sed  -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config           永久
                                        (over)
## CentOS7安装启动
yum -y install bind*
systemctl restart named
systemctl enable named   
若报错未安装则yum install -y bind bind-utils (over)

# 查看named的主配置文件
vim /etc/named.conf

listen-on port 53 { any; };  # 绑定的地址需要修改
allow-query     { any; };    # 允许查询的服务地址
# 保存后重启 named 服务
systemctl restart named  
(只修改any表示 “所有”,作用是允许任意客户端发起 DNS 查询 )

vim /etc/named.rfc1912.zones # 辅助域配置文件
# 定义正向解析域
zone "test.com" IN {
    type master;
    file "test.com.zone";
    allow-update { none; };  
# 定义反向解析域
zone "8.168.192.in-addr.arpa" IN {
        type master;
        file "8.168.192.zone"; 
        allow-update { none; };           (over)


# 到/var/named 下创建并修改zone文件
cd /var/named/
touch test.com.zone  8.168.192.zone
创建 上述两个文件
vim test.com.zone
编辑上述第一个文件

$TTL 1D
@       IN SOA  test.com. root.test.com. (
            1    ; serial  
            1D      ; refresh :
            1H      ; retry  
            1W      ; expire  
            3H )     ; minimum 

        IN NS   dns.test.com.
        IN MX   10 mail.test.com.
www      IN  A   192.168.8.22
mail     IN  A   192.168.8.33
dns      IN  A   192.168.8.133
ftp      IN  A   192.168.8.122
new      IN  A   192.168.8.101
后续的ip作用是当你在浏览器输入 www.test.com ,DNS 服务器会返回 192.168.8.22 
(实际内容中没有上述任何汉字)

vim 8.168.192.zone
编辑上述第二个文件
:r ./named.loopback(把上述文章复制过来,实际内容不需要,他不完全,直接把下文全篇复制即可)

$TTL 1D
@       IN SOA  test.com. root.test.com. (
           1       ; serial
           1D      ; refresh
           1H      ; retry
           1W      ; expire
           3H )    ; minimum
        NS      dns.test.com.
22      PTR     www.test.com.
33      PTR     mail.test.com.
133     PTR     dns.test.com.
122     PTR     ftp.test.com.
101     PTR     new.test.com.


# 重启服务,检查dns是否生效
systemctl restart named

# 修改网卡的dns设置为dns服务器:192.168.8.2(按个人实际内容来,本机是8.2网卡)
vim /etc/sysconfig/network-scripts/ifcfg-ens33

# 重启网卡
systemctl restart network


nslookup

> www.test.com
(输入上述内容在输入www。test。com后出现下文则正常)
Server:        192.168.8.133
Address:    192.168.8.133#53

Name:    www.test.com
Address: 192.168.8.22
扩展,实际无用
   1    ; serial  作用:标记区域文件的 “版本”,用于主从 DNS 服务器同步。
            1D      ; refresh :从服务器 “多久检查一次主服务器的 serial 是否更新”。
            1H      ; retry   从服务器 “请求同步失败后,多久再次尝试
            1W      ; expire  作用:从服务器 “多久没同步到主服务器,就放弃使用本地缓存数据”
            3H )     ; minimum 作用:客户端(如电脑、手机 )“缓存 DNS 解析结果的最长时间”。
            1. 临时修复 DNS(确保能解析域名 )
bash
# 临时设置公共 DNS(如阿里云 DNS )
echo "nameserver 223.5.5.5" > /etc/resolv.conf  

2. 替换为阿里云 CentOS 7 仓库(国内源,稳定可用 )
bash
# 备份原仓库配置
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak  

# 下载阿里云 CentOS 7 仓库配置
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo  

# 清除缓存并生成新缓存
yum clean all && yum makecache  



3. 重新安装 bind
bash
yum -y install bind*  
yum -y install bind*
 yum install bind
systemctl restart named
systemctl enable named 

# 查看named的主配置文件
vim /etc/named.conf
listen-on port 53 { any; };  # 绑定的地址需要修改
allow-query     { any; };  # 允许查询的服务地址


vim /etc/named.rfc1912.zones
zone  "test.com" IN {
        type slave;                      #服务类型为从服务器
        masterfile-format text;          #主服务器同步过来的数据配置文件的格式为文本,不然会乱码
        masters { 192.168.8.81; };      #主服务器的IP地址是192.168.8.81
        file "slaves/test.com.zone";     #同步过来的数据配置文件放在/var/named/slaves文件夹下,并调用
};        # 别忘记加 ;


# 定义反向解析域
zone "8.168.192.in-addr.arpa" IN {
        type slave;
        masterfile-format text;           #主服务器同步过来的数据配置文件的格式为文本,不然会乱码
        masters { 192.168.8.133; };       #主服务器的IP地址是192.168.8.133
        file "slaves/8.168.192.zone";     #同步过来的数据配置文件放在/var/named/slaves文件夹下,并调用
};
##################################################################

# 主服务器需要更改的地方
vim /etc/named.rfc1912.zones

# 定义正向解析域
zone "test.com" IN {
    type master;
    file "test.com.zone";
    allow-update { 192.168.8.140; };    # 允许的同步的从服务IP
    also-notify { 192.168.8.140; };     # 动态通知从DNS更新
    notify yes;                         # 有更新会告知从服务器
};

# 定义反向解析域
zone "8.168.192.in-addr.arpa" IN {
        type master;
        file "8.168.192.zone";             # 设定好ip的网络段,通过ip找域名
        allow-update { 192.168.8.140; };   # 允许的同步的从服务IP
        also-notify { 192.168.8.140; };    # 动态通知从DNS更新
        notify yes;                        # 有更新会告知从服务器
};

# 分别重启主从的DNS服务器
systemctl restart named

# 同步成功时从服务器的/var/named/slaves/目录下会同步生成zone文件。
cd /var/named/slaves/
ls

# 修改网卡的dns设置为dns服务器:192.168.8.80
vim /etc/sysconfig/network-scripts/ifcfg-ens33

DNS1=192.168.8.140

# 重启网卡
systemctl restart network

# 从服务器测试,然后停掉主服务器再测试。
nslookup

> www.test.com
Server:        192.168.8.140
Address:    192.168.8.140#53

Name:    www.test.com
Address: 192.168.8.22

DHCP:自动分配 IP 地址

动态主机配置协议 ( DHCP )服务器为网络上的每个设备动态分配 IP 地址和其他网络配置参数。

  • 一般路由器上自带 DHCP 服务。
  • 使用服务器搭建 DHCP
1. 安装
# CentOS
yum install dhcp
#Ubuntu
apt install isc-dhcp-server -y
2. 修改配置文件 (服务端)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet # 网络类型以太网
BOOTPROTO=static # 启动模式: none|static|dhcp
NAME=ens33 # 网卡名称
DEVICE=ens33 # 设备名称
ONBOOT=yes # 是否开机启动网卡,设置为 yes
IPADDR=192.168.8.20 # ip 地址
PREFIX=24 # 子网掩码,8/16/24/32
GATEWAY=192.168.8.2 # 网关
DNS1=8.8.8.8 # DNS 设置

vim /etc/dhcp/dhcpd.conf
subnet 192.168.8.0 netmask 255.255.255.0 {
range 192.168.8.81 192.168.8.100;
option domain-name-servers 8.8.8.8;
option routers 192.168.8.2; 
# 网关
option broadcast-address 192.168.8.255;
default-lease-time 60000;
max-lease-time 720000;
}

systemctl restart dhcpd
systemctl enable dhcpd
修改客户端网卡设置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=ens33
DEVICE=ens33
ONBOOT=yes

systemctl restart network

HTTP/https

  • HTTP(超文本传输协议,HyperText Transfer Protocol):用于客户端与服务器之间传输超文本数据(如 HTML、图像、视频等)的协议。
  • HTTPS(安全超文本传输协议):在 HTTP 协议基础上加入 SSL/TLS 加密协议,保障数据传输安全。

日志管理

日志(log):将服务各种操作,执行结果、报错等信息记录到.log文件中。

  • 时间
  • 级别:日志级别 log 输出级别分为五种:DRBUG(调试)、INFO(信息)、
  • 事件
posted @ 2025-07-23 14:44  秀妍泽  阅读(15)  评论(0)    收藏  举报