部署前准备:
让LNMP架构和存储服务器建立关系
第一个历程: 找出图片存储的目录
blog.test.com /wp-content/uploads/2024/04/内存性保护报错.png
URL URI
根据图片链接地址获取图片存储位置
第二个历程: 使web服务器和存储服务器建立关系
检查存储服务是否正常
PS:没有安装NFS服务的,请先安装上
NFS存储服务器创建好web服务器的站点账户"www"
useradd www -u 1111
给予存储web服务器目录属主属组
useradd www -u 1111
对存储目录设置nfs目录权限
[root@nfs01 blog]# cat /etc/exports
/data/blog 192.168.149.0/24(rw,sync,anonuid=1111,anongid=1111,no_root_squash)
重启NFS服务生效
systemctl restart nfs
第三个历程:
在存储图片路径的目录挂载到nfs服务器中
mount -t nfs 192.168.149.31:/data/blog /html/blog/wp-content/uploads/
然后验证站点上传图片是否可以正常保存在存储服务器中
让LNMP架构和数据库服务器建立关系
PS:需要提前部署一个存储mysql数据库服务器
第一个历程: 将web服务器本地数据库数据进行备份
mysqldump -uroot -p123456 --all-database >/tmp/web_back.sql
第二个历程: 将备份数据进行迁移
scp -rp /tmp/web_back.sql 192.168.149.51:/tmp
第三个历程: 恢复数据信息
数据库服务器安装数据库服务
yum install -y mariadb-server mariadb
启动服务/服务开机自启
[root@mysql ~]# systemctl start mariadb.service
[root@mysql ~]# systemctl enable mariadb.service
创建数据库登录用户与密码
mysqladmin -u root password '123456'
恢复数据库数据
mysql -uroot -poldboy123 </tmp/web_back.sql
第四个历程: 修改数据库服务器中数据库用户信息
MariaDB [(none)]> select user,host from mysql.user;
+-----------+-------------+
| user | host |
+-----------+-------------+
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| wordpress | localhost |
| | nginx-web01 |
| root | nginx-web01 |
+-----------+-------------+
7 rows in set (0.00 sec)
优化一下:
删除无用的用户信息
delete from mysql.user where user="" and host="localhost";
delete from mysql.user where user="" and host="web01";
添加: 添加新的用户信息
grant all on wordpress.* to 'wordpress'@'192.168.149.%' identified by '123456';
#让数据库生效
flush privileges;
第五个历程: 修改web服务器代码文件信息
vim wp-config.php
/** MySQL hostname */
define( 'DB_HOST', '192.168.149.51' );
第六个历程:停止web服务器上数据库服务
systemctl stop mariadb.service
systemctl disable mariadb.service
测试是否可以正常远程连接:
mysql -uwordpress -p123456 -h 192.168.149.51
扩展报错:
问题01:
数据库服务没有正确启动: Error establishing a database connection 连接不上3306端口
问题02:
PHP服务没有开启,报502错误
web01代码信息迁移到web02服务器,并且修改了网站域名无法正确访问
访问新域名会自动跳转到老的域名
方法一:
修改wordpres后台设置信息,将后台中老的域名改为新的域名
方法二:
修改数据库中的一个表, 在表中修改一个和域名有关的条目信息 (update phpmyadmin)
准备负载均衡的环境
集群服务器部署:
PS: 集群中每台服务器的配置一模一样
正常生产环境:
01. 先部署好一台LNMP服务器,上传代码信息
02. 进行访问测试
03. 批量部署多台web服务器
04. 将nginx配置文件进行分发
05. 将站点目录分发给所有主机
这边环境测试从简:
将web01作为模板主机克隆
克隆以后修改主机名和ip地址
hostnamectl set-hostname web02
hostnamectl set-hostname web03
修改固定IP:
sed -i 's#111#112#g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's#111#113#g' /etc/sysconfig/network-scripts/ifcfg-eth0
以上三台集群服务器部署完成
负载均衡服务器部署:
第一个历程: 安装部署nginx软件
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
priority=1
yum install nginx -y
第二个历程: 编写nginx负载服务配置文件
备份初始文件:
cd /etc/nginx/
cp nginx.conf{,.bak}
清除无用的内容
grep -Ev '^$|#' nginx.conf.bak >nginx.conf
vim nginx.conf
将user改为www
创建www用户
创建:useradd -u 1111 www -s /sbin/nologin -M
检查:id www
切换目录:
cd conf.d/
生成ld.conf文件
vim ld.conf
upstream test {
server 192.168.149.111:80;
server 192.168.149.112:80;
server 192.168.149.113:80;
}
server {
listen 80;
server_name www.test.com;
location / {
proxy_pass http://test;
}
}
第三个历程: 实现负载功能测试
创建www的站点配置文件
cd /etc/nginx/conf.d
vim www.conf
server {
listen 80;
server_name www.test.com;
location / {
root /html/www;
index wenwen.html;
}
}
将配置文件下发给另外两台集群服务器
scp -rp /etc/nginx/conf.d/www.conf 192.168.149.112:/etc/nginx/conf.d
scp -rp /etc/nginx/conf.d/www.conf 192.168.149.113:/etc/nginx/conf.d
因没有真实域名,修改Windows的hosts文件加域名解析
192.168.149.51 www.test.com blog.test.com bbs.test.com
指定负载访问的域名需要修改/etc/nginx/nginx.conf配置文件指定访问域名的站点目录
三个集群web服务器都需要进行修改
vim /etc/nginx/nginx.conf
主要需要修改的内容如下: 第二行需要进行注释
include /etc/nginx/conf.d/www.conf;
#include /etc/nginx/conf.d/*.conf;
三台均衡服务器生成测试html文件
for name in www bbs blog;do echo "$name 192.168.149.111">/html/$name/wenwen.html;done
使用负责均衡服务器进行测试:
加解析域名:
vim /etc/hosts
192.168.149.41 www.test.com
重启网络服务生效:
systemctl restart network
利用curl命令访问负载均衡服务器
curl www.test.com/wenwen.html
反向代理模块使用:
ngx_http_proxy_module --- proxy_pass
访问不同的网站地址,不能显示不同的网站页面
proxy_set_header Host $host;
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
}
}
在这个例子中,当用户访问 http://example.com/
时,NGINX 会将请求转发到 http://backend_server
,并且会将 Host
请求头设置为 example.com
,即 server_name
中定义的服务器名称。这样,后端服务器就可以根据这个 Host
值来处理请求
通过使用 proxy_set_header
指令,可以确保后端服务器接收到的请求头部信息是准确和完整的,从而保证代理后的请求能够正确地被后端服务器处理。这对于维护后端服务的正常运行和安全性是非常关键的。
proxy_set_header X-Forwarded-For $remote_addr;
访问网站用户地址信息无法进行分析统计
到/var/log/nginx/查看access.log日志可以看到
proxy_next_upstream error timeout http_404 http_502 http_403;
访问负载均衡会出现错误页面,影响用户体验
以上部署需要:三台web集群服务器,一台数据存储nfs服务器.一台sql数据库服务器,一台负载均衡服务器共六台