day55 wordpress负载均衡的部署
day55 wordpress负载均衡的部署
- wordpress 负载均衡部署
- 将这个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
基于多域名的部署虚拟的主机
浙公网安备 33010602011771号