day55 wordpress负载均衡的部署

day55 wordpress负载均衡的部署

  1. wordpress 负载均衡部署
  2. 将这个http的部署,升级为https加密的部署
wordpress 是一个成熟的基于php开发后端的网站的产品

运维给公司部署产品
就是将编程语言写好的程序,在linux机器上运行起来
(是类似基于wordpress这样一个完整的代码的软件,解压后有大量的文件)

最常见的形式,是以http形式运行的
(http 服务端的形式运行起来,会在linux机器上绑定一个端口,10.0.0.7:80)

client 也就是客户端,可以访问http这个服务了


下一步,具体,你在部署wordpress这样的企业级产品时,你该如何正确的流程,去部署它

部署好web7机器

当你有了一个web7机器后,web8机器就复制就完事了。
然后最终加上一个lb-5,整个框架就完事了。

因此部署的顺序是

现有后端,再有前端的lb-5

部署的顺序是

1.web7

2.复制web8

3.创建lb-5 该配置文件,请求发给web7 web8就好了

部署web7的全流程

纯手动的部署,确保每一步的细节

1. 安装nginx服务
groupadd www -g 666
useradd -u 666 -g 666 -s -M /sbin/nologin www

2.确保,你所装的机器,软件的版本都一致,否则出现bug
# web7 web8 用的是同一套的服务, 自己要去创建yum的源

cat > /etc/yum.repos.d/61.repo << EOF	
[local-rpm]
name=local yum repo
baseurl=http://172.16.1.61:80
enabled=1
gpgcheck=0
EOF

yum clean all
yun install  nginx -y

# 安装php
# 卸载旧的环境

yum remove php-mysql-5.4 php php-fpm php-common -y

yum install -y php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml  php71w-fpm  php71w-mysqlnd  php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb php71w-json php71w-pecl-apcu php71w-pecl-apcu-devel


# 修改php配置文件
 sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf
 sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf
 
 # 看看,该配置中,默认以fastcgi 协议的参数
 
 # 这里就明确的告诉fastcgi 协议运行的在127.0.0.1:9000地址上
  12 ; The address on which to accept FastCGI requests.
 13 ; Valid syntaxes are:
 14 ;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
 15 ;                            a specific port;
 16 ;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
 17 ;                            a specific port;
 18 ;   'port'                 - to listen on a TCP socket to all addresses
 19 ;                            (IPv6 and IPv4-mapped) on a specific port;
 20 ;   '/path/to/unix/socket' - to listen on a unix socket.
 21 ; Note: This value is mandatory.
 22 listen = 127.0.0.1:9000
 
 # 查看,启动后端的应用的服务(php-fpm)
 systemctl start php-fpm
 
 # 确保后端运行起来,
 [root@web-7 /etc/yum.repos.d]#netstat -tunlp|grep php
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      5011/php-fpm: maste 


接下来测试一下是否可以正常执行php源代码

1. 先在机器上准备一个文件
/php-code/test-info.php

2. 部署nginx服务器,去找这个资源
# 访问的请求是 http://10.0.0.7/test-info.php
# 这些数据,转发给了fastcgi_pass 127.0.0.1:9000;

数据的走向 client > http > nginx (fastcgi_params改写数据的格式 > fastcgi php-fpm)


# 配置的文件
vim /etc/nginx/conf.d/php.conf

server{
	listen 80;
	server_name;
	location /{
	root /php-code/;
	#请求转发给后端
	fastcgi_pass 127.0.0.1:9000;
    # 保留请求的url格式
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    # 将http数据,转换为fastcgi协议
    include fastcgi_params;	
	}


}


3. 当你http协议去访问这个源的时候
http://10.0.0.7:80/test-info.php
↓
到达nginx找到test-info.php
↓
fastcgi_pass 127.0.0.1:9000 (php-fpm去读取,执行test-info.php)
↓
返回执行结果给nginx
↓
用户浏览器看到这个代码的结果

过滤进程,和端口
[root@web-7 /php-code]#netstat -tunlp|grep  -E '(nginx|php)'
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      5011/php-fpm: maste 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5095/nginx: master  

[root@web-7 /php-code]#ps -ef|grep -E '(nginx|php)'
root       5011      1  0 09:48 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
www        5012   5011  0 09:48 ?        00:00:00 php-fpm: pool www
www        5013   5011  0 09:48 ?        00:00:00 php-fpm: pool www
www        5014   5011  0 09:48 ?        00:00:00 php-fpm: pool www
www        5015   5011  0 09:48 ?        00:00:00 php-fpm: pool www
www        5016   5011  0 09:48 ?        00:00:00 php-fpm: pool www
root       5095      1  0 09:55 ?        00:00:00 nginx: master process nginx
nginx      5096   5095  0 09:55 ?        00:00:00 nginx: worker process
root       5119   2054  0 09:57 pts/1    00:00:00 grep --color=auto -E (nginx|php)

# 最后注意文件属主
chown -R www.www /php-code/

确保最终访问php-info页面正常

nginx结合php的一个运行环境。

下一步,你只需要将这个测试代码,换为 wordpress源码就OK了,很简单了。

最难的协议转换部分,你已经懂了,。

============================



准备开始部署wordpress

1. 下载源码,放入指定的目录中

2. 修改nginx的配置文件,找到wordpress代码

3.可以初始化安装wordpress了。

4.数据库的远程的部署

部署wordpress全部的流程

注意一下知识点是大坑,认真的看看

1. 在部署wordpress的时候,会设置nginx的访问的入口,定义的域名端口
域名和端口定义好后,别随意的修改

2.基于web7 部署好后wordpress 数据就会被写入db-51机器中
web8就无需在初始化,就能自动的读取db-51的数据,直接看到内容。。

部署web8

部署网站的理念,之前给大家说过,两种形式
web-7 wordpress  db-51数据库 也有数据 

新添加web8 ,将web7的配置,完全一致的,复制到web8上来,数据库都共用同一套db-51,即可看到数据一致的页面。。


1. 在已有成熟环境的情况下,做数据迁移,也就是web7 完全部署好了的情况


大家在做练习时候,反复的初始化机器

2. 从零开始初始化的情况,web7,web8,都是新机器,两个机器,从零部署。
(用在你基于ansible一键自动化部署,多台机器的,统一操作方式,让你理解ansible如何自动化部署多个网站产品的思路。你能会先手动部署这个环境)

部署web8的nginx+php环境

写脚本,需要逐步的调试

# 1.安装nginx
groupadd www -g 666
useradd www -s -M -u 666 -g 666 /sbin/nologin/

# 在建立好自己yum源,应该去除其他的第三方的yum源
# 只保存61.repo文件

cat> /etc/yum.repos.d/61.repo <<EOF
[local-rpm]
name=local yum repo
baseurl=http://172.16.1.61:80
enabled=1
gpgcheck=0
EOF

yum clean all 
yum install nginx -y
yum remove php-mysql-5.4 php php-fpm php-common -y

yum install -y php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml  php71w-fpm  php71w-mysqlnd  php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb php71w-json php71w-pecl-apcu php71w-pecl-apcu-devel


sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf 
sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf 

systemctl start php-fpm

#  脚本的逻辑性,先后关系
# 在配置文件之前,先创建好测试数据,然后再去启动,否则报错
# 保证如下配置,原始的内容,发过去即可
# 创建如下完整的配置信息,即可

cat >/etc/nginx/conf.d/php.conf <<EOF
server {
	listen 80;
	server_name _;
	location / {
		root /php-code/;
		# 请求转发给后端 
		fastcgi_pass 127.0.0.1:9000;
	    # 保留请求的url格式
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		# 将http数据,转换为fastcgi协议
		include /etc/nginx/fastcgi_params;	
	}
}
EOF

# 创建好测试数据
mkdir -p /php-code/

chown -R www.www /php-code/

cat >/php-code/test-info.php <<EOF
web88888888888888
<?php
	phpinfo();
?>
EOF

# 最后去启动nginx,然后确保可以访问
# 理解扣 1,不懂2
nginx



写入脚本,一键安装

[root@web-8 ~]#vim install-nginx-php.sh
[root@web-8 ~]#bash install-nginx-php.sh 

部署db-51

web 7
web 8
都已经安装好了nginx+php的环境

先一步就是提供wordpress代码即可,修改nginx配置即可

你现在用了2个机器,因此数据库别分开,导致2份数据。。

带着大家,部署mariadb db-51机器,远程连接

目的是为了让2个产品的数据一致!!!!

清空旧的yum源
rm -f /etc/yum.repos.d/*.repo

cat > /etc/yum.repos.d/61.repo  <<EOF
[local-rpm]
name=local yum repo
baseurl=http://172.16.1.61:12345
enabled=1
gpgcheck=0
EOF

yum install mariadb-server mariadb -y

systemctl start mariadb 

# 启动,修改密码,授予远程的访问
mysqladmin  -uroot -p password 'yzk666'
Enter password: 


直接非交互式的创建一个用于远程连接的用户
[root@db-51 ~]#mysql -uroot -pyzk666  -e "grant all privileges on *.* to yzksql@'%' identified by 'yzksql666'"

# 本地的测试用户是否可以使用,指定机器的ip地址
mysql -uyzksql -pyzksql666 -h10.0.0.51

到这里,部署db-51机器
这得使用root创建

还要创建一个数据库wordpress(初始化创建空目录,初始化安装wordpress之后,就会写入大量的数据)

在db-51机器创建数据库
mysql -uroot -pyzk666 -e "create database wordpress"


-------部署web7和web8的wordpress从这开始------

如下操作

1. 下载wordpress的源代码
# 创建目录
mkdir -p /code/wordpress
cd /code/wordpress

2.解压缩源代码
明确,wordpress网站的代码,目录在 、/mysite/wordpress
[root@web-7 /mysite/wordpress]# tar -xzf wordpress-5.9.3-zh_CN.zip
[root@web-7 /mysite/wordpress]#ls /mysite/wordpress/
index.php                  wp-admin              wp-includes        wp-signup.php
license.txt                wp-blog-header.php    wp-links-opml.php  wp-trackback.php
readme.html                wp-comments-post.php  wp-load.php        xmlrpc.php
wordpress                  wp-config-sample.php  wp-login.php
wordpress-5.9.3-zh_CN.zip  wp-content            wp-mail.php
wp-activate.php            wp-cron.php           wp-settings.php


3.修改nginx的配置的文件,创建wordpress的虚拟的主机
cat /etc/nginx/conf.d/wordpress.conf 
server {

	listen 80;
	server_name wordpress.linux0224.cc;
	
	location / {
		root /mysite/wordpress/;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include /etc/nginx/fastcgi_params;	
	}
}


# 启动nginx
systemctl start nginx 


# 然后检查端口
netstat -tunlp | grep nginx 

4.去客户端测试访问了()dns解析做好

注意

生成了数据库信息文件 wp-config.php

[root@web-7 /mysite/wordpress]#ls /mysite/wordpress/wp-config.php
/mysite/wordpress/wp-config.php

发给web8

[root@web-7 /mysite/wordpress]#scp /mysite/wordpress/wp-config.php  root@172.16.1.8:/mysite/wordpress/
The authenticity of host '172.16.1.8 (172.16.1.8)' can't be established.
ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
ECDSA key fingerprint is MD5:4c:9a:37:e2:5b:b5:de:a8:bf:90:b5:28:d8:5b:ac:60.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.8' (ECDSA) to the list of known hosts.
root@172.16.1.8's password: 
wp-config.php    



安装wordpress的账户密码

yzk01 

yzk666

也可以用以前布置的

# 修改wordpress文件夹下的wp-config.php
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wrodpress' );

/** Database username */
define( 'DB_USER', 'yzksql' );

/** Database password */
define( 'DB_PASSWORD', 'yzksql666' );

/** Database hostname */
define( 'DB_HOST', '10.0.0.51' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

/**#@+


部署lb-5负载均衡

1. 部署lb-5机器(使用nginx的7层负载均衡)
部署nginx 设置nginx 

rm -f /etc/yum.repos.d/*.repo

cat > /etc/yum.repos.d/61.repo  <<EOF
[local-rpm]
name=local yum repo
baseurl=http://172.16.1.61:12345
enabled=1
gpgcheck=0
EOF

yum clean all 
yum install nginx -y
3.设置nginx负载均衡的规则
提供 80端口,以及域名

# lb-5机器,是基于http转发请求的,规则,和参数,不一样了!!

# 限定义 基于http协议的一组服务器,以及负载均衡的规则。
upstream my-web{
	server 172.16.1.7:80 weight=4;
	server 172.16.1.8:80 weight=1;
	
}

#nginx这里,基于http协议转发的请求,且注意保留客户端的http信息
server{
	listen 80;
	server_name wordpress.yzk.com;
	   # 这里不需要判断url了,直接所有请求,全部甩给后端即可
   # 后端的nginx在等待着用户的请求url格式,然后去解析
   # 因此这里直接甩如下配置即可
	location / {
		proxy_pass http://my-web/;
		include /etc/nginx/proxy_params;
	}
}

# 4.创建代理参数文件
proxy_set_header Host $http_host;
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;

# 5.启动nginx
[root@lb-5 /etc/nginx/conf.d]#nginx 
[root@lb-5 /etc/nginx/conf.d]#
[root@lb-5 /etc/nginx/conf.d]#
[root@lb-5 /etc/nginx/conf.d]#ps -ef|grep nginx
root       1990      1  0 12:44 ?        00:00:00 nginx: master process nginx
nginx      1991   1990  0 12:44 ?        00:00:00 nginx: worker process

# 6.测试

测试访问是否正常

# 做好dns的解析
10.0.0.5 wordpress.yzk.com

# 确保你的cmd中,Windows解析正常
ping wordpress.yzk.com


通过日志去检测,请求是否正常,以及负载均衡的规则

常见的负载均衡的故障

1. 入口slb挂了(因此你必须的学习,高可用的负载均衡)

# 我们进行一波的分析
nginx 请求会发给upstream地址池的节点

1. 如果某个节点不通,会被剔除
模拟的是172.16.1.7:80

模拟的是172.16.1.7:80  
如果80端口挂了,那请求全部走了另外的节点
如何判断是否有故障,看日志,是否记录



问题的回答

问题是,后端基于80端口,可是2个网站怎么分区

基于多域名的虚拟的主机匹配即可,都可以是80端口

cd /etc/nginx/conf.d/

touch wordpress.conf

touch wecenter.conf

基于多域名的部署虚拟的主机

posted @ 2025-04-29 14:19  国家一级冲浪yzk  阅读(23)  评论(0)    收藏  举报