安装环境 {#menu_index_1}
测试环境为虚拟机,使用 VMware Fusion + Debian 11,搭建一个 WordPress 网站集群,有关虚拟机安装和系统安装的教程可以自行搜索。
软件环境为 LNMP,依次安装相关软件。
安装 PHP {#menu_index_2}
sudo apt update
sudo apt install php-fpm php-opcache php-cli php-gd php-curl php-mysql
查看当前 php 版本:
php -v
编辑www.conf
文件(下面的 7.4 换成你安装的版本号):
vim /etc/php/7.4/fpm/pool.d/www.conf
去掉security.limit_extensions
前面的注释,并将其内容改成如下:
security.limit_extensions = .php .php3 .php4 .php5 .php7 .html .js .css .jpg .jpeg .gif .png .htm
启动 php:
sudo systemctl restart php7.4-fpm
卸载 apache2 {#menu_index_3}
由于 debian11 中有一个自带的 apache2 可能会跟我们的 nginx 抢端口,所以我们这里先把它卸载了:
sudo systemctl stop apache2
sudo apt --purge remove apache2 apache2-bin apache2-doc apache2-data apache2-utils -y
安装 MariaDB {#menu_index_4}
sudo apt install mariadb-server # 安装 MariaDB
sudo systemctl status mariadb # 查看 MariaDB 运行状态
sudo mysql_secure_installation # 数据库安全加固,基本默认 Y 即可
安装 Nginx {#menu_index_5}
sudo apt install nginx
检查运行状态:
sudo systemctl status nginx.service
然后在浏览器打开:http://替换为你的IP/index.nginx-debian.html
应该可以看到如下界面:
配置环境 {#menu_index_6}
Nginx 配置 {#menu_index_7}
首先删除 Nginx 默认的网站配置,否则 80 端口会被占用:
sudo rm -f /etc/nginx/sites-enabled/default
cd /etc/nginx/sites-available
sudo rm -f default
新建一个 wordpress.conf
的配置:
sudo vim wordpress.conf
复制以下内容,注意把 php7.4-fpm
换成你所安装的版本:
upstream php {
server unix:/var/run/php/php7.4-fpm.sock;
server 127.0.0.1:9000;
}
server {
server_name localhost;
root /var/www/wordpress;
index index.php;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
保存后, 创建软连接到 sites-enabled
目录:
sudo ln -s /etc/nginx/sites-available/wordpress.conf /etc/nginx/sites-enabled/
检查配置文件是否正确:
sudo nginx -t
重启 Nginx 让配置文件生效:
sudo systemctl restart nginx
接着下载最新的 WordPress 源码到网站的根目录:
cd /var/www && sudo wget https://cn.wordpress.org/latest-zh_CN.tar.gz
sudo tar -xzvf latest-zh_CN.tar.gz && sudo rm -f latest-zh_CN.tar.gz
cd wordpress
Nginx 配置部分基本完成!
数据库配置 {#menu_index_8}
先连接数据库:
mariadb -uroot -p
输入加固数据库时设置的 root 密码回车即可。
进入 MariaDB 的交互界面后,先创建一个数据库:
CREATE DATABASE wordpress;
为 WordPress 创建一个数据库账户:
CREATE USER "wordpress" IDENTIFIED BY "password";
给刚创建的账户授予权限:
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%' WITH GRANT OPTION;
退出交互界面:
FLUSH PRIVILEGES;
EXIT
安装 WordPress {#menu_index_9}
这部分比较容易出问题的就是权限了,需要将 wordpress 目录下的文件夹和文件所有者设置为www-data
:
chown -R www-data:www-data /var/www/wordpress
浏览器打开虚拟机的 IP 地址,根据指引安装即可。
负载平衡 {#menu_index_10}
首先需要再创建两台虚拟机,需要两台机器提供服务,一台服务器提供负载均衡:
| 主机名 | 用途 | |-----|-------------| | s01 | 提供服务(已经创建的) | | s02 | 提供服务 | | s03 | 负载均衡 |
s01:设置数据库允许远程访问 {#menu_index_11}
s02 需要的配置与之前 s01 的相同,唯一的区别就是在安装 WordPress 网站程序的过程中,需要将数据库连接地址改为 s01 的 ip地址,因此,还需要开启 s01 数据库的远程访问。
在此前的配置中,我们已经授予了数据库用户的远程访问权限,接下来还需要修改数据库的监听端口和系统防火墙。
修改配置文件 {#menu_index_12}
首先需要修改 MariaDB 的配置文件,使其监听所有网络接口,而不仅仅是本地环回地址
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
找到如下行:
bind-address = 127.0.0.1
将 127.0.0.1
改为 0.0.0.0
,表示 MariaDB 将监听所有 IP 地址:
bind-address = 0.0.0.0
防火墙设置 {#menu_index_13}
设置防火墙允许 3306
端口:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
s02:设置 WordPress 数据库地址 {#menu_index_14}
此时有两种情况:
- 你的 s02 虚拟机是由全部配置好的 s01 直接克隆而来;
- 你的 s02 没有配置过环境。
对于第一种情况,只需要更改 s02 网站根目录下的 wp-config.php
文件,找到如下行,将其中的 localhost
改为 s01 的 ip 地址:
define( 'DB_HOST', 'localhost' );
对于第二种情况,按照上文步骤在 s02 中安装并配置必要的环境,唯一不同的地方是 s02 安装 WordPress 时,在安装时提示输入数据库地址,需要设置为 s01 的 ip 地址,其它全都一模一样。
接着浏览器访问 s02 的 ip 地址测试访问内容与 s01 是否一致,也可以测试在 s01 中更改文章标题,再打开 s02 查看更改是否生效。
s03:负载均衡配置 {#menu_index_15}
环境配置的过程这里就不再赘述,s03 作为负载均衡服务器需要一套新的配置:
sudo vim /etc/nginx/sites-available/wordpress.conf
使用下面的内容:
upstream wordpress {
server 192.168.169.129; // s01 的 ip 地址
server 192.168.169.131; // s02 的 ip 地址
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://wordpress;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
}
}
重启 Nginx:
sudo systemctl restart nginx
绑定域名 / 修改 hosts {#menu_index_16}
最后把域名绑定到负载均衡服务器 s03 上,这里直接改宿主机的 hosts 就好,不同系统改 hosts 方法自行查找。在 hosts 尾部添加一条:
192.168.169.132 wordpress.cn
修改网站域名 {#menu_index_17}
访问 WordPress 的后台会发现自动跳转到 s01 的 ip 地址上,需要修改网站域名。
登入 WordPress 后台 http://域名/wp-admin
,设置 -> 常规
中将 WordPress 地址和站点地址更改为http://wordpress.cn
,保存。
验证负载均衡访问 {#menu_index_18}
Nginx 负载均衡默认采用轮训的方法,在 s01 和 s02 下分别建立一个同名文件,里面填写不同的内容作为测试。在 s01 中创建文件:
sudo echo 's01' > /var/www/wordpress/test.html
在 s02 中创建文件:
sudo echo 's02' > /var/www/wordpress/test.html
接着浏览器打开:http://wordpress.cn/test.html
,每次刷新过后,会分别显示 s01
和s02
。
至此,负载均衡配置完成!