热门标签 | 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;


推荐阅读
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 本文旨在解决 MySQL 无法连接到 localhost 的常见问题,并提供详细的步骤来确保 MySQL 服务正确启动和配置。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 大家好,我是李白。本文将分享一个从零开始的全栈项目,涵盖了设计、前端、后端和服务端的全面学习过程。通过这个项目,我希望能够帮助初学者更好地理解和掌握全栈开发的技术栈。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 如何使用ES6语法编写Webpack配置文件? ... [详细]
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社区 版权所有