一.备份服务
1.介绍
01. 数据备份的服务器
02. 进行日志统一保存
2.什么是rsync服务
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具
3. rsync守护进程部署方式
3.1 服务端配置
linux系统安装部署服务流程:
a 下载安装软件 yum
b 编写配置文件
c 搭建服务环境 备份的目录/目录权限
d 启动服务程序 开机自动启动
e 测试服务功能
rsync守护进程服务端配置:
第一个历程: 下载安装软件
rpm -qa|grep rsync
yum install -y rsync
第二个历程: 编写配置文件(脚本在下面)
man rsyncd.conf
vim /etc/rsyncd.conf
##created by HQ at 2017
###rsyncd.conf start##
uid = rsync --- 指定管理备份目录的用户
gid = rsync --- 指定管理备份目录的用户组
port = 873 --- 定义rsync备份服务的网络端口号
fake super = yes --- 将rsync虚拟用户伪装成为一个超级管理员用户
use chroot = no --- 和安全相关的配置
max connections = 200 --- 最大连接数 同时只能有200个客户端连接到备份服务器
timeout = 300 --- 超时时间(单位秒)
pid file = /var/run/rsyncd.pid --- 记录进程号码信息 1.让程序快速停止进程 2. 判断一个服务是否正在运行(kill `/var/run/rsyncd.pid`)
lock file = /var/run/rsync.lock --- 锁文件
log file = /var/log/rsyncd.log --- rsync服务的日志文件 用于排错分析问题
ignore errors --- 忽略传输中的简单错误
read only = false --- 指定备份目录是可读可写
list = false --- 使客户端可以查看服务端的模块信息
hosts allow = 172.16.1.0/24 --- 允许传输备份数据的主机(白名单)
hosts deny = 0.0.0.0/32 --- 禁止传输备份数据的主机(黑名单)
auth users = rsync_backup --- 指定认证用户 (只有通过认证用户才能传输数据)
secrets file = /etc/rsync.password --- 指定认证用户密码文件 用户名称:密码信息
[backup] --- 模块信息
comment = "backup dir by lbz"
path = /backup --- 模块中配置参数 指定备份目录
第三个历程: 创建rsync服务的虚拟用户
useradd rsync -M -s /sbin/nologin
第四个历程: 创建备份服务认证密码文件
echo "rsync_backup:lbz123" >/etc/rsync.password
chmod 600 /etc/rsync.password
第五个历程: 创建备份目录并修改属主属组信息
mkdir /backup
chown rsync.rsync /backup/
第六个历程: 启动备份服务
systemctl start rsyncd
systemctl enable rsyncd
systemctl status rsyncd
3.2 客户端配置
rsync守护进程客户端配置:
第一个历程: 创建一个秘密文件
echo "lbz123" >/etc/rsync.password
chmod 600 /etc/rsync.password
第二个历程: 进行免交互传输数据测试
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#语法:rsync -avz 备份的文件 认证用户@服务端ip地址::认证模块 --password-file=密码文件(
-a, --archive 命令的归档参数
-v, --verbose 显示详细的传输信息
-z压缩数据)
二.NFS存储服务
1.概念介绍
NFS是Network File System的缩写,中文意思是网络文件共享系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
存储服务的种类
用于中小型企业: 实现数据共享存储
FTP(文件传输协议)
中小型电商公司(游戏点卡 游戏币 道具 Q币 充值话费) --- 财务对账信息(数据库) --- 对账文件 --- FTP服务器
ftp设置时有权限问题:(用户认证的权限 存储目录的权限(用户))
获取数据的方式
1.SSH远程服务 sFTP
2.samba windows--linux之间数据传输 Linux部署samba
3.NFS linux--linux之间数据传输
用于门户网站:
一个用户 -- 存储服务器
上万个用户 -- 存储服务器
4.利用分布式存储
Moosefs(mfs) 比较落伍,初学学习比较简单
GlusterFS
FastDFS 企业应用较多
2.NFS存储服务作用及原理
2.1 作用
1) 实现数据的共享存储
2) 编写数据操作管理
3) 节省购买服务器磁盘开销 用电开销
2.2 工作原理
NFS存储服务工作原理
a 部署好一台存储服务器,设置好存储目录
b 客户端利用网络挂载的方式进行挂载存储目录
c 将数据存储在客户端本地挂载点目录==存储到存储服务器中
3.NFS存储服务配置
3.1 服务端配置
服务端部署
第一步:安装存储服务软件 nfs-utils rpcbind
第二步:编写配置文件
第三步:创建存储目录,并修改属主权限
第四步:启动服务/开机自动
服务端部署:
第一个历程: 下载安装软件
rpm -qa|grep -E "nfs|rpc"
yum install -y nfs-utils rpcbind
第二个历程: 编写nfs服务配置文件
vim /etc/exports (man exports)
01 02(03)
01: 设置数据存储的目录 /data
02: 设置网络一个白名单 (允许哪些主机连接到存储服务器进行数据存储)
03: 配置存储目录的权限信息 存储目录一些功能
/data 172.16.1.0/24(rw,sync)
第三个历程: 创建一个存储目录
mkdir /data
chown nfsnobody.nfsnobody /data(目录下如果有东西要加-R)
nfsnobody为下载nfs软件时自动提供的用户,不用自己创建
grep nfsnobody password(nfsnobody为一个虚拟用户)
第四个历程: 启动服务程序
先启动 rpc服务
systemctl start rpcbind.service
systemctl enable rpcbind.service
检查:netstat -lntup|grep 111
再启动 nfs服务
systemctl start nfs
systemctl enable nfs
3.2 客户端配置
客户端部署:
第一步:安装nfs服务软件
第二步:实现网络存储服务挂载
第一个历程: 安装nfs服务软件
yum install -y nfs-utils
第二个历程: 实现远程挂载共享目录
mount -t nfs 172.16.1.31:/data /mnt (-t文件系统类型)
mount 文件类型 服务端ip地址及存储目录 本地目录
验证:在客户端:
cd /mnt
touch lsn.txt
在服务端:
ll /data(有lsn.txt)
三.实时同步服务
1.原理/概念
1) 实现实时同步的原理
监控目录数据变化 --- inotify
将数据进行传输 --- rsync
将监控和传输进行整合 --- sersync
1)需要部署好rsync守护进程服务,实现数据传输
2)需要部署好inotify服务,实现目录中数据变化监控
3)将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输
2.实时同步服务部署
实现实时同步部署方法
1. 部署rsync守护进程
2. 部署inotify软件
3. 部署sersync软件
2.1 部署rsync守护进程
服务端配置操作(备份服务器服务端)
客户端配置操作
2.2 部署inotify监控服务
(在客户端服务器)
第一个步骤:安装软件
yum install -y inotify-tools
第二个步骤:熟悉命令的使用
rpm -ql inotify-tools
/usr/bin/inotifywait --- 监控目录数据信息变化
/usr/bin/inotifywatch --- 对监控的变化信息进行统计
inotify监控命令格式:
inotifywait -mrq --timefmt "%F" --format "%T %w %f 事件信息:%e" /data -e CREATE
要监控的事件:create创建、delete删除、moved_to移入、close_write修改
-r可以监控多层的目录
-q显示创建信息不显示多余的信息
--timefmt显示时间信息
--format信息格式
事件信息:%e显示事件操作
2.3 部署sersync同步服务
(在客户端服务器)
第一个里程:需要下载,保留上传到linux服务器中
https://github.com/wsgzao/sersync(下载软件地址)
cd
mkdir -p /server/tools
cd /server/tools
rz -y
上传sersync_installdir_64bit.zip
rz -y --- 选择需要上传的数据信息
PS:软件尽量都统一保存在/server/tools目录中
第二个里程:解压软件压缩包,将解压的数据进行保存
unzip sersync_installdir_64bit.zip
[root@nfs01 tools]# tree sersync_installdir_64bit
sersync_installdir_64bit
└── sersync
├── bin --- sersync软件命令目录
│?? └── sersync
├── conf --- sersync软件配置目录
│?? └── confxml.xml
└── logs --- sersync软件日志目录
[root@nfs01 tools]# mv sersync_installdir_64bit/sersync/ /usr/local/
第三个里程:编写配置文件:
cd /usr/local/sersync/
vim conf/confxml.xml
6 <filter start="false">
7 <exclude expression="(.*)\.svn"></exclude>
8 <exclude expression="(.*)\.gz"></exclude>
9 <exclude expression="^info/*"></exclude>
10 <exclude expression="^static/*"></exclude>
11 </filter>
说明:排除指定数据信息不要进行实时传输同步
12 <inotify>
13 <delete start="true"/>
14 <createFolder start="true"/>
15 <createFile start="false"/>
16 <closeWrite start="true"/>
17 <moveFrom start="true"/>
18 <moveTo start="true"/>
19 <attrib start="false"/>
20 <modify start="false"/>
21 </inotify>
说明:定义inotify程序需要监控的事件
24 <localpath watch="/data">
25 <remote ip="172.16.1.41" name="backup"/>
26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28 </localpath>
29 <rsync>
30 <commonParams params="-az"/>
31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
32 <userDefinedPort start="true" port="873"/><!-- port=873 -->
(netstat -lntup|grep rsync查看端口)
第四个里程:启动sersync服务程序
cd bin/
ll
chmod a+x sersync
[root@nfs01 bin]# export PATH="$PATH:/usr/local/sersync/bin"
[root@nfs01 bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/bin
sersync -h(查看帮助)
参数-d: 启用守护进程模式
参数-r: 在监控前,将监控目录与远程主机用rsync命令推送一遍
进行同步测试
参数-o: 指定配置文件,默认使用confxml.xml文件
-o /usr/local/sersync/conf/confxml.xml
-o /usr/local/sersync/conf/confxml02.xml
sersync -dro /usr/local/sersync/conf/confxml.xml 启动实时同步服务
vim /etc/rc.local #开机自动启动
/usr/local/sersync/bin/sersync -dro /usr/local/sersync/conf/confxml.xml
source /etc/rc.local
验证:在客户端:
cd /data/
touch lsn.txt
在服务端:
cd /backup/
ll(立刻能看到lsn.txt)
如果想要停止实时同步服务
yum provides killall
yum install -y psmisc
killall sersync 停止实时同步服务
四.远程管理服务
1.概念介绍
SSH 安全的远程连接 数据信息是加密的 22 SSH服务默认可以root用户远程连接 系统远程连接
TELNET 不安全的远程连接 数据信息是明文的 23 telnet服务默认不可以让root用户远程连接 网络设备远程连接
2.安装telnet服务
在管理服务器
yum install -y telnet-server
systemctl start telnet.socket
netstat -lntup|grep 23
在本地页面:telnet 172.16.1.41
3.SSH实现基于秘钥连接的部署步骤
第一个历程: 创建秘钥对(管理端服务器)
ssh-keygen -t 秘钥的类型(dsa|rsa)
第二个历程: 将公钥进行分发(被管理端服务器)
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31
准备工作:
管理端 172.16.1.61
被管理端: 172.16.1.31
第一个历程: 管理端创建秘钥对信息
[root@m01 ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
第二个历程: 管理端需要将公钥进行分发(同时会收到服务端的私钥信息)
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31(被管理端ip)
在被管理端:ll /root/.ssh/
cat /root/.ssh/authorized_keys
在管理端:cat /root/.ssh/id_dsa.pub
第三个历程: 在管理端进行远程连接测试
ssh 172.16.1.31 --- 不用输入密码信息可以直接连接
批量管理多台服务器
在管理端配置:
mkdir -p /server/scripts
cd /server/scripts
分发公钥脚本:
[root@m01 scripts]# yum install -y sshpass
[root@m01 scripts]# vim fenfa_pub_key.sh
#!/bin/bash
for ip in {7,31,41}
do
echo "==================== host 172.16.1.$ip pub-key start fenfa ==================== "
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.$ip "-o StrictHostKeyChecking=no" &>/dev/null
echo -e "host 172.16.1.$ip fenfa success."
echo "==================== host 172.16.1.$ip fenfa end ==================== "
echo ""
done
[root@m01 scripts]#sh fenfa_pub_key.sh
分发公钥检查脚本(批量管理脚本) --- 串型批量管理
[root@m01 scripts]#vi check_pub_key.sh
#!/bin/bash
CMD=$1
for ip in {7,31,41}
do
echo "==================== host 172.16.1.$ip check ==================== "
ssh 172.16.1.$ip $CMD
echo ""
done
[root@m01 scripts]#sh check_pub_key.sh hostname
[root@m01 scripts]#sh check_pub_key.sh "ip a"
可以直接使用命令:ssh 172.16.1.31 hostname
五.网站服务
1.常用的网站服务软件
处理静态资源的服务:
apache软件: http://apache.org/
nginx软件: http://nginx.org
处理动态资源的服务:
PHP: php.net 终端浏览器进行访问 ***
Tomcat(java): 利用移动端查看网页 安卓-java
PYTHON: 开发难度比较低
2.nginx服务的软件特点
1. nginx服务一些特点介绍
a 支持高并发能力比较强 消耗资源少
b 软件功能比较多样
c 支持系统平台比较广泛
可以制作yum仓库
1. 收集仓库中的软件 --- yum.conf
2. 客户端访问到制作yum仓库 --- nginx (linux windows)
1) 支持高并发,消耗内存资源少
2) 具有多种功能
网站web服务功能 --- apache
网站负载均衡功能 --- LVS
网站缓存服务 --- Squid
3) 在多种系统平台都可以进行部署
4) nginx实现网络通讯时使用的时异步网络IO模型: epoll模型(apache -- select模型)
3.nginx安装部署
3.1 nginx软件的安装部署过程
两种安装方式:
01. yum安装软件
a 使用官方yum源进行安装 安装的是最新版本 软件目录结构比较标准 (推荐)
b 使用非官方yum源进行安装 安装的不是最新版 目录结构会发生变化
3.2 安装软件
yum官方源安装方法:
第一个历程: 更新nginx官方yum源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
第二个历程: yum安装nginx软件
yum install -y nginx
查看软件有没有安装成功:echo $?输出0表示安装成功
第三个历程: 启动nginx服务,检查服务是否安装正确
systemctl start nginx
systemctl enable nginx
测试访问nginx服务 http://10.0.0.7/
3.3 nginx服务配置文件
/etc/nginx/nginx.conf --- 主配置文件
第一个部分: 配置文件主区域配置
user www; --- 定义worker进程管理的用户
补充: nginx的进程
master process: 主进程 ---管理服务是否能够正常运行 boss
worker process: 工作进程 ---处理用户的访问请求 员工
worker_processes 2; ---定义有几个worker进程 == CPU核数 / 核数的2倍
error_log /var/log/nginx/error.log warn; --- 定义错误日志路径信息
pid /var/run/nginx.pid; --- 定义pid文件路径信息
第二个部分: 配置文件事件区域
events {
worker_connections 1024; --- 一个worker进程可以同时接收1024访问请求
}
第三个部分: 配置http区域
http {
include /etc/nginx/mime.types; --- 加载一个配置文件
default_type application/octet-stream; --- 指定默认识别文件类型
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
--- 定义日志的格式
access_log /var/log/nginx/access.log main;
--- 指定日志路径
sendfile on;
#tcp_nopush on;
keepalive_timeout 65; --- 超时时间
#gzip on;
include /etc/nginx/conf.d/*.conf; --- 加载一个配置文件
}
vim /etc/nginx/conf.d/default.conf --- 扩展配置(虚拟主机配置文件)
第四个部分: server区域信息(配置一个网站 www/bbs/blog -- 一个虚拟主机)
>/etc/nginx/conf.d/default.conf
vim /etc/nginx/conf.d/default.conf
server {
listen 8080; --- 指定监听的端口
server_name localhost; --- 指定网站域名
location / {
root /usr/share/nginx/html; --- 定义站点目录的位置
index index.html index.htm; --- 定义首页文件
}
error_page 500 502 503 504 /50x.html; --- 优雅显示页面信息
location = /50x.html {
root /usr/share/nginx/html;
}
}
[root@web01 ~]# systemctl reload nginx
http://10.0.0.7:8080/
[root@web01 ~]# cd /usr/share/nginx/html
[root@web01 html]# ll #查看站点目录文件
total 8
-rw-r--r-- 1 root root 494 Aug 13 2019 50x.html
-rw-r--r-- 1 root root 612 Aug 13 2019 index.html
由于站点目录下没有lbz.jpg,所以显示404错误
http://10.0.0.7:8080/lbz.jpg
上传文件lbz.jpg,再次访问
[root@web01 html]# ll
total 32
-rw-r--r-- 1 root root 494 Aug 13 2019 50x.html
-rw-r--r-- 1 root root 612 Aug 13 2019 index.html
-rw-r--r-- 1 root root 23549 Mar 8 2019 lbz.jpg
http://10.0.0.7:8080/lbz.jpg
4. 利用nginx服务搭建一个网站(www)
第一个历程: 编写虚拟主机配置文件
cd /server/tools/
ll
cd nginx-1.16.0/
cd /etc/nginx/conf.d/
vim www.conf(不能更改)
server {
listen 80;
server_name www.lbz.com;
location /lbz {(注明:如果这里是/lbz,则下面需要创建/lbz目录,如果是/则不用)
root /usr/share/nginx/html;
index lbz.html;
}
}
location:根据URI进行匹配作用
第二个历程: 需要获取开发人员编写的网站代码
cd /usr/share/nginx/html(上传图片)
vim lbz.html
<html>
<meta charset="utf-8">
<head>
<title>木头人丫丫呀</title>
</head>
<body>
木头人丫丫呀
<table border=1>
<tr> <td>01</td> <td>lsn</td> </tr>
<tr> <td>02</td> <td>lsnn</td> </tr>
<tr> <td>03</td> <td>lbz</td> </tr>
</table>
<a href="http:// www.baidu.com">
<img src="lbz.jpg" />
</a>
</body>
</html>
第三个历程: 重启nginx服务(平滑重启)
两种方法:
systemctl reload nginx
nginx -s reload
nginx命令参数
-t : test configuration and exit
检查测试配置文件语法
-s : send signal to a master process: stop, quit, reopen, reload
控制服务停止或者重新启动
第四个历程: 编写DNS配置信息
真实域名: 在阿里云上进行DNS解析记录配置
模拟域名: 在windows主机的hosts文件中进行配置即可
C:\Windows\System32\drivers\etc\hosts
10.0.0.7 www.lbz.com
第五个历程: 进行测试访问
浏览器中: http://www.lbz.com
原因:需要在站点目录中创建相应location /lbz目录或文件数据信息
cd /usr/share/nginx/html
mkdir lbz
chmod 755 lbz
cp -a lbz.html lbz.jpg lbz
ll lbz
访问时:
http://www.lbz.com/lbz(按ctrl+5可以刷新页面)
5.利用nginx服务搭建一个多网站
尽量每一个网站有单独的虚拟主机配置文件
每一个网站有独立的站点目录
(www bbs blog)
第一个历程: 创建多个虚拟主机配置文件
cd /etc/nginx/conf.d
vim bbs.conf
server {
listen 80;
server_name bbs.lbz.com;
location / {
root /html/bbs;
index index.html;
}
}
vim blog.conf
server {
listen 80;
server_name blog.lbz.com;
location / {
root /html/blog;
index index.html;
}
}
vim www.conf
server {
listen 80;
server_name www.lbz.com;
location / {
root /html/www;
index index.html;
}
}
systemctl reload nginx
第二个历程: 创建站点目录和目录中首页文件
[root@web01 conf.d]# mkdir /html/{www,bbs,blog} -p
[root@web01 conf.d]# chmod 755 /html
[root@web01 conf.d]# chmod 755 /html/www
[root@web01 conf.d]# chmod 755 /html/bbs
[root@web01 conf.d]# chmod 755 /html/blog
[root@web01 conf.d]# for name in {www,bbs,blog};do echo "10.0.0.7 $name.lbz.com" >/html/$name/index.html ;done
[root@web01 conf.d]# for name in {www,bbs,blog};do cat /html/$name/index.html ;done
10.0.0.7 www.lbz.com
10.0.0.7 bbs.lbz.com
10.0.0.7 blog.lbz.com
第三个历程: 编写hosts解析文件(在windows操作)
C:\Windows\System32\drivers\etc\hosts
10.0.0.7 www.lbz.com bbs.lbz.com blog.lbz.com
第四个历程: 进行访问测试
1. 利用windows进行浏览器访问测试(如果老是有缓存,可以进行下面这一步)
2. 利用linux进行命令访问测试
vim /etc/hosts
172.16.1.7 www.lbz.com bbs.lbz.com blog.lbz.com
[root@web01 conf.d]# curl www.lbz.com
10.0.0.7 www.lbz.com
[root@web01 conf.d]# curl bbs.lbz.com
10.0.0.7 bbs.lbz.com
[root@web01 conf.d]# curl blog.lbz.com
10.0.0.7 blog.lbz.com
http://blog.lbz.com/
http://www.lbz.com/
http://bbs.lbz.com/