nginx-0001 | 192.168.1.11 | web |
---|---|---|
nginx-0002 | 192.168.1.12 | web |
nginx-0003 | 192.168.1.13 | web |
nfs | 192.168.1.21 | NFS |
backup | 192.168.1.22 | NFS服务数据备份 |
redis-0001 | 192.168.1.31 | 缓存及session共享 |
跳板机 | 192.168.1.100 | 堡垒机 |
echo
[root&#64;ecs-proxy ~]# cat >> /etc/hosts <
192.168.1.12 nginx-0002
192.168.1.13 nginx-0003
192.168.1.21 nfs
192.168.1.22 backup
192.168.1.31 redis-0001
EOF
配置文件的查找顺序&#xff1a;1、从系统变量ANSIBLE_CONFIG
2、当前目录下./ansible.cfg
3、用户家目录下~/ansible.cfg
4、/etc/ansible/ansible.cfg
a.定义配置文件ansible.cfg
[root&#64;ecs-proxy ~]# mkdir /root/ansible
cat >> /root/ansible/ansible.cfg <
inventory&#61;/root/ansible/hosts ##定义主机清单文件
host_key_checking &#61; False ##不效验秘钥
EOF
b.定义主机清单文件&#xff08;清单文件名必须与主配置文件inventory定义的一致&#xff09;
cat >> /root/ansible/ansible.cfg <
192.168.1.1[1:3]
[nfs]
192.168.1.21
[backup]
192.168.1.22
[redis]
192.168.1.31
EOF
c、上传软件包
[root&#64;ecs-proxy ~]# unzip /root/project3.zip
1、本案例NFS与backup主机实现数据的实时同步&#xff08;rsync&#43;inotify&#xff09;
2、磁盘分区制作成逻辑卷、部署NFS文件共享服务器
NFS网络文件系统存储一般用来存储共享的视频、图片、附件等静态资源文件&#xff0c;通常网站用户上传的文件也会存放到NFS共享里面。
注意&#xff1a;网站代码程序不放在NFS里&#xff0c;直接批量发布到web节点提供访问比共享到NFS里访问效率更高
NFS基础配置&#xff1a;10G*2
磁盘分区&#xff1a;全分
fdisk /dev/vdb
n-->回车-->t-->8e
fdisk /dev/vdb
n-->回车-->t-->8e
分区结果&#xff1a;
vdb 253:16 0 10G 0 disk
└─vdb1 253:17 0 10G 0 part
vdc 253:32 0 10G 0 disk
└─vdc1 253:33 0 10G 0 part
yum -y install lvm2
物理卷制作&#xff1a;pvcreate /dev/vdb1 /dev/vdb2
卷组制作&#xff1a;vgcreate vg0 /dev/vdb1 /dev/vdb2
逻辑卷制作&#xff1a;lvcreate -L 19.99G -n lv0 vg0
mkfs.xfs /dev/vg0/lv0
blkid /dev/vg0/lv0 ##查看逻辑卷设备属性
mkdir /common
echo &#39;/dev/vg0/lv0 /common/ xfs defaults 0 0&#39;>> /etc/fstab
mount -a
yum -y install nfs-utils
echo &#39;/common 192.168.1.0/24 (ro,sync)&#39; >> /etc/exports
##ro表示读请求 sync请求或写入数据时&#xff0c;数据同步写入到NFS服务器硬盘后才返回
exportfs -rv ##重新载入配置信息&#xff0c;使配置生效
由于NFS使用的随机端口&#xff0c;每次NFS都需要将自己的随机端口注册到rpcbind服务&#xff0c;这样客户端访问NFS时先到rpcbind查询端口信息&#xff0c;才能够访问到NFS服务。
先运行rpcbind服务&#xff0c;再运行NFSservice服务
systemctl enable --now rpcbind
systemctl enable --now nfs-server
showmount -e 192.168.1.21/ -e localhost
rsync&#43;inotify实时同步
NFS云服务器共享目录的数据同步至backup云服务器
在NFS云服务器上安装inotify-tools工具
实现免密码交互
编写数据同步脚本并测试效果
inotify&#43;rsync结合&#xff0c;思路&#xff1a;
while inotifywait 监控操作
do需要执行的rsync操作
done
scp 192.168.1.252/root/project3/DAY01/inotify-tools-3.13.tar.gz /root
scp 192.168.1.252/root/project3/DAY01/test.jpg /root
yum -y install rsync
tar -xf inotify-tools.tar.gz -C /usr/src/
cd /usr/src/inotify-tools-3.13
./configure && make && make install
scp 192.168.1.252:/root/.ssh/id_rsa /root/.ssh
echo "StricHostkeyChecking no" >> /etc/ssh/ssh_config ##避免第一次输出yes
cat >> /root/isync.sh <
FROM_DIR&#61;"/common"
RSYNC_CMD&#61;"rsync -az --delete $FROM_DIR 192.168.1.22:/root/sync"
while inotifywait -rqq -e modify,move,create,delete,attrib $FROM_DIR
do
$RSYNC_CMD
done
EOF
chmod &#43;x /root/isync.sh
./isync.sh &
##测试
echo 123 >> /common/a.txt
部署redis服务。更改相关配置
步骤
安装redis&#xff1a;
scp 192.168.1.252:/root/project3/DAY01/redis-4.0.8.tar.hz /root
tar -xf /root/redis-4.0.8.tar.gz
cd redis-4.0.8
yum -y install gcc
make && make install
./utils/install_server.sh
监听IP为192.168.1.31
sed -i &#39;/^bind/s/127.0.0.1/192.168.1.31/&#39; /etc/redis/6379.conf
/etc/init.d/redis_6379 restart
在redis的服务管理脚本中指定ip连接
sed -ri &#39;43 s/(.*)(shutdown)/\1 -h 192.168.1.31\2/&#39; /etc/init.d/redis_6379
/etc/init.d/redis_6379 restart
测试
nestat -tuanlp | grep redis
redis-cli -h 192.168.1.31
ping
部署nginx服务&#xff0c;并挂载NFS服务器的共享目录到网站服务器&#xff0c;实现数据共享
部署nginx网站服务、更改nginx主配置文件、挂载NFS共享目录
目前网站采用动静分离&#xff0c;默认nginx仅可处理静态数据&#xff0c;用户访问任何数据都是直接返回对应的文件。但是访问一个脚本则导致直接返回脚本给用户。
软件包
ansible web -m copy -a &#39;src&#61;/root/project3/DAY01/nginx-1.12.2.tar.gz dest&#61;/root&#39;
网页资源
ansible web -m copy -a &#39;src&#61;/root/project3/DAY01/php-redis-demo.tar.gz dest&#61;/root&#39;
PHP扩展模块软件包进行发放
ansible web -m copu -a &#39;src&#61;/root/project3/DAY01/php-redis-2.2.3.tar.gz test&#61;/root&#39;
安装nginx
yum -y install php php-fpm php-mysql mariadb-server ##安装依赖包
yum -y install gcc pcre-devel openssl-devel
tar -xf /root/nginx-1.12.2.tar.gz
./configure --whit-http_ssl_module --with-http_stub_status_module
make && make install
动静分离
sed -i &#39;65,71s/#/ /&#39; /usr/local/nginx/conf/nginx.conf
sed -i &#39;/SCRIPT_FILENAME/d&#39; /usr/local/nginx/conf/nginx.conf
sed -i &#39;s/fastcgi_params/fastcgi.conf&#39; /usr/local/nginx/conf/nginx.conf
##检查
sed -n &#39;65,70p&#39; /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
起服务
systemctl enable --now php-fpm
/usr/local/nginx/sbin/nginx/
echo &#39;/usr/local/nginx/sbin/nginx/&#39; >> /etc/rc.local
chmod &#43;x /etc/rc.local
部署网页资源
tar -xf /root/php-redis-demo.tar.gz -C /root
cp -rf /root/php-redis-demo/* /usr/local/nginx/html/
NGINX网站服务挂载NFS服务器共享目录
yum -y install nfs-utilsshowmount -e 192.168.1.21mkdir /dataecho &#39;192.168.1.21:/common /data nfs defaults 0 0&#39; >> /etc/fstabmount -a
更改nginx配置文件【浏览器缓存优化】
修改nginx配置文件&#xff0c;如果是图片&#xff0c;则让用户的浏览器缓存30天。
vim &#43;71 /usr/locla/nginx/conf/nginx.conf
location ~* \.(gif|jpg|png) {
root /data;
expires 30d;
}
备注&#xff1a;localtion匹配用户的地址栏&#xff0c;如果用户访问的使图片&#xff1b;
expires告诉浏览器应该把资料缓存多久
/usr/local/nginx/sbin/nginx -s reload
netstat -tuanlp | grep :80
通过扩展模块实现PHP的session共享
PHP扩展模块
修改php-fpm配置文件
测试session共享
session&#xff1a; 存储在服务端&#xff0c;保存用户名、登录状态等信息
COOKIEs&#xff1a; 有服务器在下发给客户端&#xff0c;保存在客户端的一个文件里
1、为web网站服务器安装PHP扩展模块
yum -y install autoconf automake php-cli php-devel
tar -xf /root/php-redis-2.2.4.tar.gz -C /root
cd /root/phpredis-2.2.4/phpize./configure --with-php-config&#61;/usr/bin/php-configmake && make installls /usr/lib64/php/modules/ ##文件存放目录
如果在编译安装的PHP的时候&#xff0c;没有安装拓展&#xff0c;可以通过后续phpize安装拓展.phpize是一个运行脚本&#xff0c;主要作用是检测php的环境还有在特定的目录生成相应的configure文件&#xff0c;从而make install&#xff0c;生成 .so文件&#xff0c;才会自动加载到php扩展目录下
2.修改配置文件php.ini
指定模块目录的路径
echo &#39;extension_dir &#61; "/usr/lib64/php/modules/"&#39; >> /etc/php.ini
指定扩展模块的文件名
echo &#39;extension &#61; "redis.so"&#39; >> /etc/php.ini
3.修改php-fpm配置文件
默认定义的session会话信息本地计算机&#xff08;/var/lib/php/session&#xff09;
#定义Session信息存储在公共的redis服务器上&#xff0c;主机参数中为redis
sed -ri &#39;/session.save_handler/s/(.*)(&#61;)(.*)/\1\2 redis/&#39; /etc/php-fpm.d/www.conf
#通过path参数定义公共的redis服务器在哪&#xff08;服务器的IP和端口&#xff09;
sed -ri &#39;225c php_value[session.save_path] &#61; "tcp://192.168.1.31:6379"&#39; /etc/php-fpm.d/www.conf
#服务启动检测
systemctl restart php-fpm
netstat -tuanlp | grep php-fpm
1、测试session共享
##可以通过修改home.php、index.php文件内容&#xff0c;修改页面颜色
sed -i&#39;10c &#39; /usr/local/nginx/html/index.php
sed -i &#39;15c &#39; /usr/local/nginx/html/home.php
2.redis上测试是否存在session值
redis-cli -h 192.168.1.31
> keys *
jumpserver&#xff1a;运维安全审计系统
https://jumpserver.org/
资产集&#xff1a;服务器、交换机、路由器、数据库…
系统管理员、外包人员、普通用户、临时访客
等宝2.0–设备和计算机安全–ddos网堤安全
配置需求&#xff1a; 2C4G
scp root&#64;192.168.1.252:/root/project3/DAY01/redis-4.0.8.tar.gz /roottar -xf redis-4.0.8.tar.gz -C /rootcd /root/redis-4.0.8/make && make install/root/redis-4.0.8/utils/install_server.sh
Please select the redis config file name [/etc/redis/6379.conf]/etc/redis.conf
#指定配置文件目录/etc/redis.conf
/etc/init.d/redis_6379 stop
vim /usr/lib/systemd/system/redis.service
[Unit]
Description&#61;The Redis Server
After&#61;syslog.target
After&#61;network.target
[Service]
Type&#61;forking
ExecStart&#61;/etc/init.d/redis_6379 start
ExecReload&#61;/etc/init.d/redis_6379 restart
ExecStop&#61;/etc/init.d/redis_6379 stop
[Install]
WantedBy&#61;multi-user.target
systemctl daemon-reload
systemctl restart redis
cd /opt/swget -qO /opt/setuptools.tar.gz http://demo.jumpserver.org/download/setuptools.tar.gz tar xf setuptools.tar.gz cp config_example.conf config.conf./jmsctl.sh help //列出使用方法./jmsctl.sh install./jmsctl.sh start根据提示登录
独立IP数指不同ip地址的计算机访问网站时被统计的总次数。
一天内相同ip地址的客户端访问网站页面只会被记录一次
访问量&#xff1a;页面浏览量或者点击量
每次对网站访问均被记录一次&#xff0c;访问量累计&#xff08;刷新一次也算&#xff09;
网站服务器在单位时间内能够处理的最大连接数
定义&#xff1a;每秒钟处理完请求的次数。&#xff08;QPS&#61;并发量/平均响应时间&#xff09;