FTP
ftp是提供一个文件服务的软件,是一个服务器软件。是TCP/IP应用层协议组中的协议之一。
FTP的作用是提供文件共享服务
,互联网上绝大部分媒体资源和软件资源都都是通过FTP服务器传递的。
一台服务器装上vsFTP就可以变成一台FTP服务器
专门用于提供共享文件资源。其他普通服务器就可以在该服务器上下载文件。
将主机封装为ftp服务器
软件包:vsftpd
-
安装ftp
安装命令:yum -y install vsftpd
-
配置分发文件:
touch /var/ftp/abc.txt
/var/ftp
是FTP服务器的主目录
,是FTP程序分享内容的本机目录。需要通过ftp分享的文件都存放在该目录下。 -
启动ftpd
systemctl start vsftpd 或者 systemctl enable vsftpd —— 设置开机启动
-
关闭防火墙
systemctl stop firewalld systemctl disable firewalld setenforce 0 (临时关闭安全策略) vim /etc/selinux/config --修改内容为SELINUX=disabled(永久关闭安全策略)
-
验证:
-
图形界面:客户机浏览器下载
打开另一台虚拟机作为客户机,打开浏览器,输入ftp://服务器IP地址
可以下载该服务器上的ftp文件。
-
字符界面访问:lftp
客户机安装;ftp
yum install -y lftp
访问ftp服务器的ftp文件
lftp ftp服务器主机地址 输入命令之后就进入到ftp服务器的ftp的文件目录 get 文件名字 -- 下载文件 mirror 目录名 --下载目录
文件的下载在客户机的位置是执行
lftp
命令的文件夹[root@localhost ~]# lftp 192.168.152.141 lftp 192.168.152.141:~> ls -rw-r--r-- 1 0 0 14 Mar 23 14:04 abc.txt drwxr-xr-x 2 0 0 6 Oct 13 2020 pub lftp 192.168.152.141:~> get abc.txt lftp 192.168.152.141:~> mirror pub
-
字符界面访问:wget
因为wget不仅可以下载ftp服务的内容还可以下载http的内容,所以下载地址前需要指明ftp
语法:wget ftp://ftp服务器地址/需要下载的目标文件 wget -m ftp://ftp服务器地址/目标文件夹 wget ftp://ftp服务器地址/需要下载的目标文件 -O 下载文件的目标地址/新修改的文件名 wget http:http服务器地址/文件
文件下载在客户机的地址是执行wget命令的地址。
wget ftp://192.168.152.141/abc.txt wget -m ftp://192.168.152.141/pub wget ftp://192.168.152.141/pub/333.txt wget ftp://192.168.152.141/abc.txt -O /tmp/a.sh wget http://nginx.org/download/nginx-1.10.2.tar.gz
-
ftp服务器开启上传功能
有的时候 我们需要将客户机的文件上传带ftp服务器此时,需要开启ftp服务器的上传功能。
-
配置ftp服务器的文件
/etc/vsftpd/vsftpd.conf
,该文件用于设定FTP服务器功能开启或关闭的文件。vim /etc/vsftpd/vsftpd.conf
配置文件内容:
- anonymous_enable=YES :是否可以使用匿名访问,设置为YES之后从该ftp服务器下载文件之后无需登录即可下载。默认开启.
登录内容需要是ftp服务器
上的用户名和密码 - anon_upload_enable = YES 启动上传文件的能力
- anon_mkdir_write_enable = YES 启动创建目录的能力
配置完成之后需要重启ftp服务
systemctl restart vsftpd
- anonymous_enable=YES :是否可以使用匿名访问,设置为YES之后从该ftp服务器下载文件之后无需登录即可下载。默认开启.
-
在ftp服务器创建客户机可以上传的文件目录
mkdir /var/ftp/upload chmod 777 /var/ftp/upload //为文件的UGO都有分配所有权限
-
客户机上传命令:
需要上传到ftp服务器的上传目录才可以[root@localhost abc]# lftp 192.168.152.141 lftp 192.168.152.141:/> cd upload lftp 192.168.152.141:/> put 需要上传的文件
ftp端口
ftp的基础端口号:
- 控制端口: command 21/tcp
- 数据端口:data 20/tcp
NFS
NFS也是一台文件服务器,和FTP很相似。NFS全称Network File System 网络文件系统,是Linux/Unix系统
之间共享文件的一种协议。NFS的客户端主要是Linux。
和FTP的区别是支持多点挂载
,以及并发写入。
多点挂载:
如果用户量过大同时访问一个网站就会出现网站崩溃的问题,所以我们可以多设置几个服务器,部署相同的网站内容,达到分流的效果。但是问题是,内容更新不方便,如果网站内容更新,需要同时更新几个网站的内容。所以有了多点挂载的概念:多个服务器同时挂载在一个服务器上,如果该服务器的内容更新,那么,所有挂载在它身上的服务器内容也会同时更新。
NFS支持多点挂载,集中文件服务器就是NFS服务器,web网站是NFS客户机
NFS配置
- 为准备配置NFS的服务器关闭防火墙, NFS客户机也关闭防火墙
sysytem stop firewalld
sysytem disable firewalld
setenforce 0
vim /etc/selinux/config --修改内容为SELINUX=disabled
- 配置服务器IP
假设NFS服务器的IP地址是192.168.152.141
假设NFS客户机1的IP地址是192.168.152.142
假设NFS客户机2的IP地址是192.168.152.143
假设NFS客户机3的IP地址是192.168.152.144
NFS服务器配置
-
安装NFS服务器
yum -y install nfs-utils
配置存储网站代码的文件夹
webdata
mkdir /webdata
放置测试页面
echo "nfs test...">/webdata/index.html
-
配置NFS服务器
NFS的配置文件是/etc/export
vim /etc/export
在改配置文件中设置webdata文件夹可以被访问的网段
/webdata 192.168.152.0/24(rw)
/webdata指的是发布资源的目录
192.168.122.0/24允许访问NFS的客户机
(rw)可读可写,同时ro表示只可读。 -
启动NFS服务器
systemctl start nfs-server systemctl enable nfs-server --开机自启
检查NFS服务器是否配置完成
exportfs -v
检查输出目录,看看export文件夹中是不是我们配置的内容。
NFS客户机配置
-
安装NFS客户端
yum -y install nfs-utils httpd
启动
systemctl start httpd systemctl enable httpd
-
查看存储端共享
# showmount -e 192.168.152.141 -- 查询NFS服务器可用的目录
输出如下内容:
Export list for192.168.152.141 /webdata 192.168.152.0/24
-
手动挂载
需要手动将nfs客户机挂载到nfs服务器mount -t nfs 192.168.152.141:/webdata /var/www/html
- 192.168.152.141:/webdata 是nfs服务器资源目录
- /var/www/html 是nfs客户机下载文件的目录
卸载命令是:
umount /var/www/html
-
查看挂载
#df
如果输出如下内容表示挂载成功
192.168.152.141:/webdata 7923136 692416 6821568 10%/var/www/html
另一种方法是:挂载完成之后会将资源文件下载到 客户机下载文件的目录,进行查看即可:
ls /var/www/html
输出
index.html
表示挂载成功
-
查看nfs客户机的web页面
在任何一台其他的机器上查看已经挂载的好的nfs客户机:
比如说在192.168.152.143客户机上查看已经挂载好nfs的192.168.152.142客户机- 终端查看
显示如下elinks http://192.168.152.142
nfs test...
- 浏览器查看
直接在浏览器出入目标主机的地址就可以访问对应的页面
也可以使用终端打开浏览器firefox http:/ /192.168.152.142
- 终端查看
httpd(Apache)
httpd是一个web服务,常见的web服务还有nginx
、tomcat
等等。
web服务是基于B/S(Browser/Server)架构的网页服务。
- 服务端提供网页
- 浏览器下载并显示网页
httpd是一个软件,他是实现web服务的一种方式,并且遵循http协议,http协议是一种超文本阐述协议,默认端口是80。
httpd的起源
httpd是由Apache
基金会创建的。(Apache其实只是一个基金会的名字,但是由于他们最火的软件就是httpd,所以我们经常将httpd称之为Apache)
运行httpd
-
安装httpd软件
[ root@server0 ~]# yum -y install httpd
-
编写html文件
在/var/www/html
文件夹下编写index.html
文件。echo '<h1>你好</h1>' /var/www/html/index.html
-
启动httpd
systemctl restart httpd systemctl enable httpd
-
查看网站
httpd的默认端口号是80firefox 主机地址
httpd的运行身份
httpd的运行身份是apache,他不是一个系统用户,比较安全
httpd配置
httpd的主配置文件是/etc/httpd/conf/httpd.conf
,修改该配置文件的内容就可以修改httpd的内容。
常修改的配置是:
- Listen:监听地址:端口(80)
- serverName:本站点注册的DNS名称(空缺)
- DocumentRoot:设置网页文件
根目录
(/var/www/html) - DirectoryIndex:起始页/首页文件名(index.html)
修改完成之后需要重启httpd
服务
systemctl restart httpd
除了主配置文件外,还可以使用调用配置文件
进行配置,调用配置文件是一个单独的配置文件,位于/etc/httpd/conf.d/*.conf
中,文件名任意,并且可以有多个调用配置文件
。
浏览器访问web服务的流程
客户端访问浏览器http://172.25.0.11:80 ⇒ 服务端接收 ⇒ 80端口 ⇒ httpd程序 ⇒ DocumentRoot /var/www/myweb ⇒ index.html
配置虚拟web主机
虚拟 web主机的目的是 使用同一台服务器
提供多个不同的Web站点服务。
不同的虚拟主机的区分方式有:
- 基于域名的虚拟主机
- 基于端口的虚拟主机
- 基于IP地址的虚拟主机
优先级是:端口>域名>IP地址
先核对端口是否匹配,端口匹配之后再核对域名是否匹配,如果域名也匹配就查看IP是否匹配。
使用域名配置虚拟主机
-
编写配置文件
/etc/httpd/conf.d/*.conf
vim /etc/httpd/conf.d/nsd01.conf
-
配置格式
<VirtualHost ip地址:端口号> serverName 目标域名 DocumentRoot 可访问的文件地址 </VirtualHost>
eg:使用如下配置
<VirtualHost *:80> serverName server0.example.com DocumentRoot /var/www/qq </VirtualHost> <VirtualHost *:80> serverName server1.example.com DocumentRoot /var/www/baidu </VirtualHost>
表示任意ip的80端口号使用server0.example.com域名访问的是qq的页面
任意ip的80端口号使用server1.example.com域名访问的是baidu的页面
一旦使用虚拟web主机功能,所有的页面都必须利用虚拟web主机呈现
如果不使用域名访问,默认使用第一个配置的虚拟web主机的页面地址。
站点访问控制
使用httpd的默认访问的文件路径是/var/www
,其实这个文件位置也是可以控制的。
-
只需要在httpd的
配置文件
中做如下配置就可以控制页面是否可以被访问。<Directory "目标文件夹"> Require all granted #允许所有人 Require all denied #拒绝所有人 Require ip 172.25.0.10 #仅允许172.25.0.10进行访问 </Directory>
并且子文件夹的权限访问默认继承父文件夹的权限控制。
由于默认配置是:<Directory "/"> Require all denied </Directory> <Directory "/var/www"> Require all granted </Directory>
所以默认只有
/var/www
文件夹可以访问。
注意:由于SELinux的权限控制,如果配置的文件夹不在/var/www
,他会进行限制避免不安全的访问,所以如果不是/var/www
目录下的,我们需要关闭SELinux
:
setenforce 1
动态网站
动态网站和静态网站
-
静态网站:
服务端的原始网页=浏览器访问到的网页
由Web服务处理所有请求,一般是文本(txt/html)、图片(pg/Png)等静态资源。静态网站不需要向服务端发送请求获取数据
-
动态网站:
服务端的原始网页!=浏览器访问到的网页
由Web服务处理请求,对于部分请求需要向服务端发送请求获取数据,动态填充页面。
重定向
当用户在url输入地址的时候可以根据这个地址重定向到指定的页面,只需要在httpd的配置文件中进行配置即可。
<VirtualHost ip地址:端口号>
serverName 目标域名
DocumentRoot 可访问的文件地址
用户 页面路由地址 目标文件地址
</VirtualHost>
可以使用重定向部署动态网站,访问域名的时候默认打开的是静态的index.html
页面,使用重定向可以将页面打开的内容设置为动态网页。
eg:
<VirtualHost *:80>
serverName server0.example.com
DocumentRoot /var/www
Alias / /var/www/abc/test.wssgi
</VirtualHost>
表示Alias用户访问https://server0.example.com
时实际访问的是/var/www/abc/test.wssgi
,如果不特殊指明默认访问的是/var/www/index.html
开放端口
-
默认情况下Linux不是所有的端口都是开放的,对某些程序只有指定的几个端口是开放的,查看对httpd开放的端口号:
semanage port -l | grep http
-
为httpd开放指定端口8909
semanage port -a -t http_port_t -p tcp 8909
- -a:添加
- -t:类型
- -p:协议
安全的web(https)
https是比http更安全的数据传输协议,建立https
需要如下内容:
- 公钥:主要用来加密数据
- 私钥:主要用来解密数据(与相应的公钥匹配)
- 数字证书:证明拥有者的合法性/权威性(单位名称、有效期、公钥、颁发机构及签名、……)
- certificate Authority :数字证书授权中心:负责证书的申请/审核/颁发/鉴定/撤销等管理工作
当用户使用https访问一个网站的时候会首先查看他是否有数字证书,如果有的话从certificate Authority查证数字证书是否真实,如果真实的话再和网站进行通信,使用公钥加密信息,私钥解密信息,达到安全传输的目的。
部署安全的web
在/etc/pki/tls
目录下存储的是和https相关的证书和秘钥信息:
-
首先需要网站部署证书
cd /etc/pki/tls/certs/ wget 下载证书的地址(.crt结尾)
-
其次需要部署根证书certificate Authority
cd /etc/pki/tls/certs/ wget 下载根证书的地址
-
下载私钥
cd /etc/pki/tls/private/ wget 下载私钥的地址(.key结尾)
-
安装mod_ssl软件支持加密通信
yum -y install mod_ssl
会在httpd的配置文件夹下生成一个
ssl.conf
配置文件。
配置该配置文件:[ root@server0 /]# vim etc/httpd/conf.d/ssl.conf # 补充:set nu#开启行号 # 指定网站访问的根目录 59 DocumentRoot "/var/www/html" # 指定域名 60 ServerName www0.example.com:443 # 指定网站证书 100 ssLcertificateFile /etc/pki/tls/certsserver0.crt # 指定私钥文件 107 ssLcertificateKeyFile /etc/pki/tls/private/server0.key # 指定根证书 122 ssLCAcertificateFile /etc/pki/tls/certs/example-ca.crt
重启httpd
systemctl restart httpd
Samba服务
Samba是一个提供windows与Linux跨平台的共享服务。
Samba服务端安装(提供共享文件的):
-
Linux安装samba软件
yum -y install samaba rpm -q smaba
-
创建共享用户
用于Samba服务验证的用户称之为:samba共享账户,samba共享账户用户名和系统普通的用户名没有什么区别useradd harry
但是Samba有专门用于Samba服务验证的用户密码,samba独立的密码与系统密码不同。
pdbedit -a harry new password:
-
创建共享目录
创建共享目录需要在samba文件夹下进行配置即可,共享的文件夹的名字一般和实际的文件夹的名字不同,但是也可以设置为相同的。vim /etc/samaba/smb.conf
插入如下内容
[dc] #共享文件名 path = /nsd1905 #实际共享路径
表示将
/nsd1905
文件夹下的内容作为dc
目录进行共享。 -
重启服务
systemctl restart smb systemctl enable smb
-
需要关闭SELinux
setenforce 0
或者
getsebool -a l grep samba setsebool samba_export_all_ro=on
Samba客户端安装(使用共享文件的):
-
安装cifs-utils软件,支持cifs文件系统(windows系统默认支持)
yum -y install cifs-utils
-
挂载访问
客户端需要挂载服务端的samba共享文件夹
格式:mount -o user=用户名,pass=密码 //目标主机/共享名 挂载点
eg:
mount -o user=harry,pass=123 //172.25.0.11/dc /mnt
-
自动挂载
vim /etc/fstab //172.25.0.11/dc /mnt cifs defaults,_netdev,user=harry,pass=123 0 0
SSH
ssh(安全套壳协议)是远程管理工具,可以在远程控制和管理服务器。
-
查询ssh是否安装
rpm -qa | grep ssh
如果没安装可以进行安装
yum install openssh-server
启动服务:(默认启动)
systemctl start ssh systemctl enable ssh -- 开机启动
查看端口, SSH默认占用的端口号是22
netstat -antp|grep sshd
关闭防火墙
systemctl stop firewalld getenforce 0
-
使用SSH远程管理服务
ssh 用户名@IP地址
ssh root@192.168.142.132
192.168.142.132:是要连接的目标主机
root:是用户身份
输入命令之后会让你输入用户对应的密码,验证通过之后方可控制目标主机。
使用ip a
可以查看是否连接成功,如果是目标主机的ip代表连接成功。ssh的默认端口号是22,但是如果修改了默认端口号,连接主机的时候需要使用-p参数知名端口号。
ssh 用户名@IP地址 -p 端口号
-
使用SSH免密登录
实现免密登录需要生成公钥和私钥。
如果A机器想要免密登录的B机器,只需要A机器生成公钥,B机器生成私钥,然后A机器将生成的公钥拷贝给B机器即可。ssh-keygen // 生成公钥和私钥(一路回车) ssh-copy-id -i 主机B的IP // 拷贝公钥给机器B
此时使用
ssh 主机B的IP
就可以访问主机B,无需输入密码。
生成的密钥对存储在.shh文件中。免密登录的原理是使用公钥和私钥配对,将公钥传递给主机B,主机A的私钥就可以和主机B的接收到的公钥配对成功,从而无需输入密码。
-
拷贝文件
两台主机之间拷贝文件可以使用scp
命令
假设现在在主机A上,和主机B通信。- 拷贝主机A的文件a.txt 到主机B的根目录下
scp /a.txt 主机B的IP地址:/
- 拷贝主机B的文件a.txt 到主机A的根目录下
scp 主机B的IP地址:/a.txt ./
- 拷贝主机A的文件a.txt 到主机B的根目录下
-
修改SSH的默认端口
修改配置文件vim /etc/ssh/sshd_config
修改Port为目标端口即可
rz和sz命令
-
rz命令:把windows系统上的文件传递给Linux,在Linux上使用rz即可吊起windows吊起文件访问窗口
-
sz命令:把Linux系统上的文件传递给windows,
sz 文件名即可
如果没有命令需要下载npm i lrzsz
常见的服务管理操作
systemctl list-units : 列出所有启动的服务
systemctl list-units-files:列出所有启动的文件
systemctl start vsftpd:开启服务
systemctl restart vsftpd:重启服务
systemctl status vsftpd:查看服务状态
systemctl stop vsftpd:终止服务
systemctl reload vsftpd:重新加载配置文件
systemctl enable vsftpd:开机自启
systemctl disable vsftpd:开机自动关闭
配置网络参数
永久配置主机名
配置文件是/etc/hostname
echo 'A.tedu.cn' > /etc/hostname
主机名就被设置为A.tedu.cn
了。
nmcli永久设置: IP地址、子网掩码、网关地址
-
查看该命令识别的网卡的名字
nmcli connection show
第一个字段就是网卡名
[root@localhost ~]# nmcli connection show NAME UUID TYPE DEVICE ens33 aac78fa2-6c59-4c85-9ad7-c92b8fd3daf3 ethernet ens33
-
配置IP地址
nmcli connection modify 'ens33' ipv4.method manual ipv4.addresses '172.25.0.120/24 172.25.0.254' connection.autoconnect yes
表示
nmcli connection modify '需要修改的网卡名' ipv4.method 配置方式(manual是手动配置) ipv4.addresses 'IP地址/子网掩码 网关地址' connection.autoconnect yes 表示每次开机启用配置
-
重启
nmcli connection up 'ens333'
-
查看网关
route
配置DNS服务器地址
在/etc/resolv.conf
文件夹下进行配置:
vim /etc/resolv.conf
nameserver DNS服务器地址
IPv6
- IPv4地址表示
32个二进制位,点分隔的十进制数。例如: 172.25.0.11、127.0.0.1 - IPv6地址表示
128个二进制位,冒号分隔的十六进制数,每段内连续的前置0可省略、连续的多个:
可简化为::
例如:2003:ac18:0000:0000:0000:0000:0000:0305
可简化为:2003:ac18:305
配置ipv6, 和IPv4的配置方式类似,不同配网关
nmcli connection modify 'ens33'
ipv6.method manual
ipv6.addresses '2003:ac18:305/64'
connection.autoconnect yes
ipv6需要使用ping6
进行访问,查看是否配通。
链路聚合
链路聚合也叫聚合链路,网卡绑定,网卡组队。
链路聚合的作用就是将多张网卡绑在一起共同应用(网卡和IP绑定), 链路聚合通过备份网卡设备,提高网卡可靠性。
链路聚合的原理
由虚拟网卡将真实网卡连接在一起:虚拟网卡将请求分配给真实网卡。
首先虚拟网卡会先使用eth0,如果eth0出问题了,就使用eth1,;如果eth1出问题了就使用eth2,如果eth2再出问题了,询问eth0是否修好,修好了,继续使用eth0。
- 网卡出问题之后,虚拟网卡就会隔一段固定的时间向网卡发送一次请求,询问它是否可用
链路聚合的作用
- 轮询式(roundrobin)的流量负载均衡
- 热备份(activebackup)连接冗余
链路聚合的实现
-
添加虚拟网卡
# 查看网卡类型 nmcli connection add type
# 创建网卡 nmcli connection add type team ifname team0 con-name team0 autoconnect yes config '{"runner":{"name":"activebackup"}}'
- nmcli connection add type team: 添加team类型的网卡 - ifname team0 网卡名称是team0 - con-name team0 网卡的配置文件是team0 - autoconnect yes 开机自动连接 - config '{"runner":{"name":"activebackup"}}' 配置聚合链路的工作方式是热备份方式
ifconfig #查看新生成的虚拟网卡
-
添加成员(真实网卡)
nmcli connection add type team-slave ifname eth1 con-name teamO-1 autoconnect yes master team0 nmcli connection add type team-slave ifname eth2 con-name teamO-1 autoconnect yes master team0
- nmcli connection add type team-slave: 添加team-slave类型的网卡 - ifname eth1 网卡名称是eth1(真实存在的网卡) - con-name team0-1 网卡的配置文件是team0-1 - autoconnect yes 开机自动连接 - master team0 主虚拟网卡是team0
-
为虚拟网卡设置IP和掩码
nmcli connection modify team0 ipv4.method manual ipv4.addresses 192.168.1.1/24 connection.autoconnect yes nmcli connection up team0 # 激活
-
查看虚拟网卡状态,可以查看其控制的网卡
teamdctl team0 state
-
关闭某个真实网卡
ifconfig eth2 down
-
删除虚拟网卡
nmcli connection delete team0
parted分区
parted分区工具,适用于GPT分区模式。
GPT分区模式:最多可以划分为128个主分区,最大空间支持18EB (1EB = 1024PB = 1024TB)
parted 磁盘名称(/dev/vdb)# 进入parted分区模式
(parted) mktable gpt # 指定分区表类型
(parted) print # 查看分区状态
(parted) mkpart # 创建新分区
... 配置分区内容
分区名称? [? haha #分区名称随意写
文件系统类型? [ext2]? xfs #文件系统随意写,不起实际作用
起始点? 0
结束点? 2G
忽略/Ignore/放弃/Cancel? Ignore #选择忽略
(parted) unit GB #使用GB作为单位
(parted) quit # 退出
邮件管理
邮件服务器发送邮件的流程
整个邮件的收发过程DNS服务器是很重要的。
邮件服务器的基本功能
- 为用户提供电子邮箱存储空间(用户名@邮件域名)
- 处理用户发出的邮件,传递给收件服务器
- 处理用户收到的邮件,投递到邮箱
搭建简单的基本功能
-
安装postfix软件包
yum -y install postfix
-
修改配置文件
vim /etc/postfix/main.cf
修改如下配置:
myorigin = server0.example.com #默认补全的域名后缀,如果发件人或发件人只写了yg,那么就会补全为yg@server0.example.com inet_interfaces = all #本机所有网卡都提供邮件功能 mydestination = server0.example.com #判定目标收件人是否是本域邮件的依据,如果收件人是xln@qq.com将qq.com和mydestination的值比较,判断是不是同域邮件
-
重启
systemctl restart postfix
-
发邮件
mail -s '邮件标题’-r 发件人 收件人
-
邮件的安全策略
垃圾邮件的处理