热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

web前端构建项目

一、web前端构建项目二、项目示例图三、项目前期准备1、主机准备nginx-0001192.168.1.11webnginx-0002192.168.1.12webnginx

一、web前端构建项目


二、项目示例图

在这里插入图片描述


三、项目前期准备


1、主机准备

nginx-0001192.168.1.11web
nginx-0002192.168.1.12web
nginx-0003192.168.1.13web
nfs192.168.1.21NFS
backup192.168.1.22NFS服务数据备份
redis-0001192.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 ##查看逻辑卷设备属性

  • 创建挂载点&#xff0c;并挂载

mkdir /common
echo &#39;/dev/vg0/lv0 /common/ xfs defaults 0 0&#39;>> /etc/fstab
mount -a

  • 部署NFS服务

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服务。更改相关配置


  • 步骤

    安装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

六、部署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


  • 先配置redis服务器

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

  • jumpserver安装

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地址的计算机访问网站时被统计的总次数。

一天内相同ip地址的客户端访问网站页面只会被记录一次


  • PV

访问量&#xff1a;页面浏览量或者点击量

每次对网站访问均被记录一次&#xff0c;访问量累计&#xff08;刷新一次也算&#xff09;


  • 并发连接

网站服务器在单位时间内能够处理的最大连接数


  • QPS

定义&#xff1a;每秒钟处理完请求的次数。&#xff08;QPS&#61;并发量/平均响应时间&#xff09;


推荐阅读
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
author-avatar
雨水-_-打湿我的脸_950
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有