一、web前端构建项目二、项目示例图三、项目前期准备1、主机准备nginx-0001192.168.1.11webnginx-0002192.168.1.12webnginx
一、web前端构建项目 二、项目示例图
三、项目前期准备 1、主机准备 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.11 nginx-0001 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
2、跳板机ansible配置 配置文件的查找顺序&#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 <[defaults] inventory&#61;/root/ansible/hosts ##定义主机清单文件 host_key_checking &#61; False ##不效验秘钥 EOF
b.定义主机清单文件&#xff08;清单文件名必须与主配置文件inventory定义的一致&#xff09;
cat >> /root/ansible/ansible.cfg <[web] 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
四、部署NFS文件共享服务器 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 <#!/bin/bash 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服务。更改相关配置
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
六、部署web服务集群 部署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
七、实现session共享 通过扩展模块实现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 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;