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(信息)、
- 事件
浙公网安备 33010602011771号