轻松搭建web网站架构服务(代码片段)

Friendsofthewind Friendsofthewind     2023-01-01     169

关键词:

学习目标:

搭建lnmp网站架构,实现负载均衡、高可用,以及https,并通过NFS优化数据存储。

服务器IP地址
web1192.168.2.137
web2192.168.2.136
mysql192.168.2.133
PHP192.168.2.130
lb(keepalived)1192.168.2.135
lb(keepalived)2192.168.2.128
NFS192.168.2.3

搭建lnmp

提示:实验环境,关闭防火墙,企业环境需要设置安全策略

步骤:
一、 搭建环境
启动三台虚拟机:关闭防火墙、setenforce;确定IP地址,网卡类型(以一台nat为例),保障可以互相ping通

注意:查看有没有已安装的软件,以Nginx为例,必须卸载干净
卸载源码安装的Nginx:
先卸载程序:

再删除链接文件:

二、 web1:安装Nginx服务

1、配置yum源:

添加以下内容,保存退出:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

2、清理缓存,安装

3、搭建wordpress

上传wordpress源码包
复制wordpress安装包,到虚拟机/,解压并赋权

unzip wordpress-4.9.4-zh_CN.zip
chmod -R 777 /wordpress

创建虚拟主机配置文件
先将默认文件重命名,防止影响配置。

cd /etc/nginx/conf.d/
mv default.conf default.conf.bak

编辑blog网站配置文件
vim /etc/nginx/conf.d/blog.conf
添加以下内容,保存退出

server 
        listen 80;
        server_name blog.benet.com;
        root /wordpress;
        index index.php index.html;

        location ~ \\.php$ 
        root /wordpress;
        fastcgi_pass 192.168.2.130:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        

检查语法:

提示:location附加有不合法内容。php$之间空格删掉,解决问题。

启动Nginx服务:systemctl start nginx

编辑zh网站配置文件:
vim /etc/nginx/conf.d/zh.conf
添加以下内容,保存退出

server 
        listen 80;
        server_name zh.benet.com;
        root /zh;
        index index.php index.html;

        location ~ \\.php$ 
        root /zh;
        fastcgi_pass 192.168.2.130:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        

重启服务

4、安装zh

1)方法同上。上传或下载wecenter源码包
注意:这个软件包解压是零散的所以先创建目录
mkdir /zh
cd /zh
解压
unzip WeCenter_3-3-4.zip
设置权限
chmod -R 777 /zh

2)复制wecenter安装包,到php虚拟机/zh目录下,赋权
cd /zh
unzip wecenter_3-3-4.zip
chmod -R 777 /zh

三、 mysql服务器:安装mysql(必须保证没有已安装的mysql或mariadb,以上传下载好的rpm包,本地安装的方式为例,此方法好处是不用配置yum源)

启动mysql:systemctl start mysqld

为blog网站设置账户及授权

登录数据库:mysql(没有密码的情况下可以这样登录)
创建数据库:create database blog;
创建远程管理用户:grant all on blog.* to lisi@’%’ identified by ‘123.com’;

为zh网站设置账户及授权

登录数据库:mysql(没有密码的情况下可以这样登录)
创建数据库:create database zh;
创建远程管理用户:grant all on zh.* to wangwu@’%’ identified by ‘123.com’;

4、 PHP服务器:安装PHP

下载epel源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
执行安装命令
yum -y install php72w php72w-cli php72w-common php72w-devel \\
php72w-embedded php72w-gd php72w-mbstring php72w-pdo \\
php72w-xml php72w-fpm php72w-mysqlnd php72w-opcache

在web1复制wordpress目录到php的根目录
scp -rp /wordpress 192.168.2.130:/
在web1复制zh目录到php的根目录

修改php服务器的配置文件
vim /etc/php-fpm.d/www.conf

定位并修改为:
listen = 192.168.2.130:9000
listen.allowed_clients = 192.168.2.137,192.168.2.136

保存退出
重启php:systemctl restart php-fpm

四、任意找一台虚拟机通过域名访问blog,安装并配置
以在web2安装为例:
修改hosts文件:

填写参数:注意分布式安装mysql地址不能使用默认的localhost,要改成真实IP

搭建成功可以访问到首页即可!

搭建zh

搭建成功如下图:


负载均衡

提示:前提和前面一样
lb1:
配置web2节点服务器(web2安装Nginx省略)
1)在web1归档压缩wordpress和zh目录,复制到web2根目录解压
cd /
tar zcf blog_zh.tar.gz /wordpress /zh/
拷贝到web2
scp blog_zh.tar.gz 192.168.2.136:/

2)复制web1的nginx配置文件到web2
scp -rp /etc/nginx/conf.d/* 192.168.2.136:/etc/nginx/conf.d/

3)web2操作
解压:

启动nginx服务
systemctl start nginx

验证web2:
修改hosts文件:随便找台可以连通的局域网虚拟机,填写web2的IP

通过域名访问:blog和zh都没问题

cd /etc/nginx/conf.d/
删除默认配置文件
rm -f default.conf
编辑文件,保存退出
vim /etc/nginx/nginx_params

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;

创建lb配置文件,
vim /etc/nginx/conf.d/lb1.conf
添加:

upstream web_cluster 
        server 192.168.2.137:80;
        server 192.168.2.136:80;


server 
        listen 80;
        server_name blog.benet.com;

        location / 
                proxy_pass http://web_cluster;
                include nginx_params;
        


server 
        listen 80;
        server_name zh.benet.com;

        location / 
                proxy_pass http://web_cluster;
                include nginx_params;
        

lb2:先别急着配置,验证一下lb1是否配置成功
修改lb2hosts文件:

验证:可以访问两个站点即可
配置lb2:
拷贝lb1的文件进行修改即可!注意:远程拷贝,加选项-rp
scp -rp 192.168.2.135:/etc/nginx/nginx_params /etc/nginx/

修改文件名:
cd /etc/nginx/conf.d/
mv lb1.conf lb2.conf
启动服务:systemctl start nginx


nfs

配置NFS服务器:先修改hosts文件,验证上步是否成功,lb2是否可用。
配置:
1、 配置yum源,安装
yum -y install nfs-utils rpcbind
2、创建挂载点
mkdir -p /nfs/blog,zh
3、 发布共享目录
vim /etc/exports
添加:
/nfs/blog 192.168.2.0/24(rw,sync,no_root_squash)
/nfs/zh 192.168.2.0/24(rw,sync,no_root_squash)
4、重启nfs服务
systemctl restart rpcbind
systemctl restart nfs
5、把wordpress的内容目录挂载到nfs
cd /wordpress
cp -rp wp-content/ wp-contentbak
mount -t nfs 192.168.1.116:/nfs/blog wp-content
cp -rp wp-contentbak/* wp-content/
6、设置永久挂载
vim /etc/fstab
添加:
192.168.1.116:/nfs/log /wordpress/wp-content nfs defaults 0 0

高可用

1)安装keepalived(两台都装)
yum -y install keepalived

(2)配置keepalived
主服务器:lb1
vim /etc/keepalived/keepalived.conf
修改为:

! Configuration File for keepalived

global_defs 
   notification_email 
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id lb1   //需要修改
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0


vrrp_instance VI_1 
    state MASTER
    interface ens33  //需要修改
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication 
        auth_type PASS
        auth_pass 1111
    
    virtual_ipaddress 
        192.168.2.254
    
                                     

保存退出
启动服务:systemctl start keepalived

备服务器:lb2
vim /etc/keepalived/keepalived.conf
修改为:

global_defs 
   router_id lb2			#路由id号,和主服务器必须不同


vrrp_instance VI_1 
    state BACKUP			#状态:BACKUP备   MASTER主
    interface ens33
    virtual_router_id 51
    priority 99				#优先级:备比主要小
    advert_int 1
    authentication 
        auth_type PASS
        auth_pass 1111
    
    virtual_ipaddress 
        192.168.2.254		#虚拟路由ip,公共ip
    

保存退出
启动服务:systemctl start keepalived
验证:两台keepalived都正常情况,漂移地址在优先级高的lb1

解决nginx故障造成群集无法工作

编辑nginx监控脚本
vim /sh/check_nginx_proxy.sh
#!/bin/bash
killall -0 nginx
if [ $? -ne 0 ];then
systemctl stop keepalived
fi
保存退出
chmod a+x /sh/check_nginx_proxy.sh

添加脚本追踪模块到keepalived配置文件
vim /etc/keepalived/keepalived.conf
global_defs
router_id lb1

vrrp_script check_nginx_proxy
script “/sh/check_nginx_proxy.sh”
interval 2
weight 5

vrrp_instance VI_1
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication
auth_type PASS
auth_pass 1111

virtual_ipaddress
192.168.1.254

track_script
check_nginx_proxy


保存退出
重启服务:systemctl restart keepalived

或者,将脚本放到计划任务里

验证:关闭Nginx,keepalived自动关闭
systemctl stop nginx

配置https

创建密钥见上期文章。

修改Nginx1的配置文件:
vim /etc/nginx/conf.d/blog.conf

        listen 443 ssl;
        server_name blog.benet.com;
	ssl_certificate ssl_key/server.crt;
	ssl_certificate_key ssl_key/server.key;
	root /wordpress;
	index index.php index.html;

        location ~ \\.php$ 
        root /wordpress;
        fastcgi_pass 192.168.2.130:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        


server 
	listen 80;
	server_name blog.benet.com;
	rewrite .* https://$server_name$1 redirect;

vim /etc/nginx/conf.d/zh.conf

server 
        listen 443 ssl;
        server_name zh.benet.com;
	ssl_certificate ssl_key/server.crt;
	ssl_certificate_key ssl_key/server.key;
        root /zh;
        index index.php index.html;

        location ~ \\.php$ 
        root /zh;
        fastcgi_pass 192.168.2.130:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        


server 
	listen 80;
	server_name zh.benet.com;
	rewrite .* https://$server_name$1 redirect;


验证:打开客户端,hosts文件修改成漂移地址192.168.2.254,http访问自动跳转https即可

综合架构web服务之nginx详解(代码片段)

...要文件目录结构2.5虚拟主机介绍及配置2.5.1利用nginx服务搭建一个网站(www)2.5.2location介绍、location访问控 查看详情

lamp模式搭建网站(代码片段)

LAMP模式解析LAMP平台的构成组件:L:Linux操作系统,Linux操作系统是整个LAMP架构的基础部分,提供用于支撑Web站点的操作系统,为其他的组件提供了更好的稳定性、兼容性A:Apache网站服务器,作为LAMP架构的前端,功能强大、稳... 查看详情

搭建百万pv网站架构(代码片段)

案例概述:采用四层模式实现,主要分为前端反向代理层、Web层、数据库缓存层和数据库层前端反向代理层层采用主备模式,Web层采用群集模式,数据库缓存层采用主备模式,数据库层采用主从模式。为了更接近生产环境,采用... 查看详情

搭建百万pv网站架构(代码片段)

百万PV网站构架1、实验概述实验例设计采用四层模式实现,主要为前端反向代理层、Web层、数据库缓存层和数据库层。前端反向代理采用主备模式,Web层采用群集模式,数据库缓存层采用主备模式,数据库层采用主从模式。2、... 查看详情

基于nginx搭建web服务器ha架构(实现高可用web服务)(代码片段)

...#xff08;实现高可用)需求模拟运维设计方案高可用服务搭建介绍HA高可用keepalived软件介绍keepalived组成和原理安装配置启动keepalived实现Web服务高可用前置部署第一步:将主Web服务器的数据库文件备份,导入数据库服务第... 查看详情

lamp环境搭建(代码片段)

...格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。本文介绍的LAMP环境 查看详情

lamp架构(代码片段)

...用软件组合)Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。web服务... 查看详情

百万pv架构搭建详解(代码片段)

百万PV架构●先了解一下什么是PVPV(pageview)即页面浏览量,通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标。网页浏览数是评价网站流量最常用的指标之一,简称为PV。监测网站PV的变化趋势和分析其变化原因... 查看详情

用心剖析,详解如何搭建百万pv网站架构,简单易懂!!!(代码片段)

...环境,部署一个社交网站,本社交网站采用PHP语言开发,搭建SVN服务器进行版本控制和集中管理PHP程序员开发的代码,以Nginx作为前端服务器,通过fastcgi协议访问后端的PHP服务器,调用PHP页面;为保证数据安全,搭建MySQL主从复... 查看详情

网站搭建(代码片段)

网站搭建的类型网站的主要分类:静态网站:指全部由HTML代码格式页面组成的网站,所有的内容包含在网页文件中。主要用到的技术:HMTL标记语言CSS样式表javaScript脚本语言动态网站:除了要设计网页外,还要通过数据库和编程... 查看详情

❤️爆肝万字整理的综合架构web服务之nginx详解❤️,附建议收藏(代码片段)

...要文件目录结构2.5虚拟主机介绍及配置2.5.1利用nginx服务搭建一个网站(www)2.5.2location介绍、location访问控 查看详情

lamp源码搭建详解及wordpress搭建(代码片段)

...实验环境实验步骤Apache源码安装Mysql源码安装PHP源码安装搭建WordPressLAMP架构优化LAMP架构LAMP概述Linux下LAMP(Linux+Apache+MySQL/MariaDB+PerI/PHP/Python)是一组用来搭建动态网站的开源软件架构,本身是各自独立的软件服务,放在一起使... 查看详情

4-源码方式基于lamp架构搭建bbs论坛或者博客(代码片段)

...2:排错3:大功告成!课程目标使用源码方式基于LAMP架构搭建BBS论坛或者博客本文成功搭建2个网站,一个个人博客,一个是web界面管理mysql数据库的应用请耐心阅读,细心操作,你也会成功!思考:yum工具搭建lamp环境和 查看详情

基于云服务的个人网站架构设计(代码片段)

本文介绍如何基于各种云服务优雅且低成本地搭建个人网站,涉及的云产品有云服务器、SSL、企业邮箱、对象存储、CDN、云函数、API网关、云监控等。概述如今云服务提供商们提供了大量涵盖计算、网络、存储等方面的云服务,... 查看详情

基于华为云轻松搭建属于自己的网站(linux,apache,mysql,php)(代码片段)

前言 本文使用华为云服务,向大家搭建属于自己的网站,搭建过程会详细介绍。搭建网站的过程亲自走了3遍,确认没问题才写这篇博客的,大家放心地根据步骤流程一步一步。如果大家担心自己能不能搭建成功&... 查看详情

lnmp网站架构(代码片段)

LNMP网站架构LNMP架构概述LNMP就是Linux+Nginx+MySQL+PHP,Linux作为服务器的操作系统,Nginx作为Web服务器、PHP作为解析动态脚本语言、MySQL即为数据库。Linux作为服务器的操作系统。Nginx作为WebServer服务器。PHP作为动态解析服务(php)。MySQL... 查看详情

初建lamp架构搭建论坛(代码片段)

一、LAMP简介目前最为成熟的一-种企业网站应用模式,可提供动态Web站点应用及开发环境1、构成组件●Linux、Apache、MySQL、PHP/Perl/Python2、LAMP的优势●成本低廉●可定制、易于开发●方便易用、安全和稳定二、Apache介绍三、编译安... 查看详情

flask局域网内轻松访问web服务解决方案(代码片段)

文章目录项目场景网站代码本地访问局域网访问注意事项公网访问引用参考项目场景用PythonFlask框架开了一个小型Web应用,如何分享给局域网内的同事预览效果?其实,在同一局域网中,直接分享本机IP和Flask开放... 查看详情