在本教程系列中,我们将从头开始建立一个高度可用的WordPress网站。
第1部分–简介,注意事项和体系结构
第2部分–设置VPSes
第3部分–设置MariaDB多主复制
第4部分–文件复制和设置DRBD
第5部分–设置OCFS2
第6部分–循环DNS加密和结论
设置VPS
这是我们的设置:
- web1.lowend.party和web2.lowend.party是两个节点,都运行Debian 10 x64。
- www.lowend.party将是高度可用的URL。
- 我们正在使用在MariaDB上运行的WordPress 5。 由于这是关于HA的教程,而不是有关Web设计的教程,因此我们将仅使用通用的WP主题,而不会花费大量时间来美化网站。
- 在本教程中,我将使用1.1.1.1表示web1.lowend.party的IP,并使用2.2.2.2表示web2.lowend.party的IP。
这是设置网站的清单。 这是在两个节点上完成的。 请注意,对于生产站点,还有许多其他事情需要执行-设置活动防火墙,设置备份,配置邮件等。 但这只是针对HA WordPress的教程。
未列出DNS,因为我们将对其进行详细介绍。
清单:
- 预配了VPS(为root嵌入了ssh密钥)
- dpkg-重新配置语言环境(或使用locale-gen)
- dpkg-reconfigure tzdata(设置我的首选时区,或者您可以使用timedatectl)
- 在/ etc / hostname中设置主机名(Linode-ism)
- apt-get更新&& apt-get -y升级
- apt-get install nginx mariadb-server php-fpm php-mysql
- 运行mysql_secure_installation
数据库设置
我在两个节点上都为WordPress创建了一个数据库和用户:
#MySQL MariaDB [(无)]>创建数据库wp; 查询正常,1行受影响(0.000秒) MariaDB [(none)]>创建用户'wp'@'localhost',由'complexpassword'标识; 查询正常,受影响的0行(0.001秒) MariaDB [(none)]>将wp。*上的全部授予'wp'@'localhost'; 查询正常,受影响的0行(0.000秒) MariaDB [(无)]>刷新权限; 查询正常,受影响的0行(0.000秒)
网站(nginx)配置
我创建了/web/www.lowend.party,因为我的网络根目录在/ var / log / nginx中创建了相应的日志文件,并设置了/etc/logrotate.d来处理它们:
#MKDIR -p /web/www.lowend.party #MKDIR -p /var/log/nginx/www.lowend.party #CHOWN WWW的数据:ADM /var/log/nginx/www.lowend.party/ #CP /etc/logrotate.d/nginx /etc/logrotate.d/nginx_web_dirs#sed -i's#nginx / \ *。log#nginx / \ * / \ *。log#'/ etc / nginx / nginx_web_dirs
最后一条sed命令将“ /var/log/nginx/*.log”更改为“ /var/log/nginx/*/*.log”,因此每个域都登录/var/log/nginx/www.lowend。派对旋转。
接下来,我按如下所示设置nginx配置。 这是使用php-fpm获得php支持。 这是/etc/nginx/sites-available/www.lowend.party:
服务器{ server_name www.lowend.party; access_log /var/log/nginx/www.lowend.party/access.log; error_log /var/log/nginx/www.lowend.party/error.log; 位置〜\ .php $ { fastcgi_split_path_info ^(。+ \。php)(。*)$; 包括/ etc / nginx / fastcgi_params; fastcgi_pass Unix:/run/php/php7.3-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /web/www.lowend.party$fastcgi_script_name; } 位置/ { 根目录 /web/www.lowend.party; index index.php index.html; try_files $ uri $ uri / /index.php; 如果(!-e $ request_filename){ 重写。/index.php最后; } } }
请注意,我们尚未执行https。 不要害怕–我们会到达那里,但是直到我们启动DRBD并开始运行它。
最后,我打开了该站点:
#ln -s /etc/nginx/sites-available/www.lowend.party /etc/nginx/sites-enabled/www.lowend.party#systemctl 重新启动nginx
在web1上设置WordPress
设置WordPress本身非常简单,但是当我们尚未创建www.lowend.party记录时,如何设置和运行它呢? 最简单的方法是操纵本地PC的主机文件以覆盖DNS
在Windows上是c:\ windows \ system32 \ drivers \ etc \ hosts,在Mac或Linux上是/ etc / hosts。 我创建了这个临时条目:
1.1.1.1 www.lowend.party
然后运行WordPress安装程序。 它只是在回答问题,但是如果您需要指南,可以从wordpress.org获得。 https://wordpress.org/support/article/how-to-install-wordpress/
用邦乔维(Bon Jovi)的话说,哦,我们已经到了一半。 WP已启动并在一个节点上运行。 那下一个呢?
在web2上设置WordPress
无需手动设置web2上的所有内容。 他们都是运行相同软件的同一发行版。
复制到Web目录。在节点1上:
scp -rp / web web2.lowend.party:/
复制Nginx网站定义:
scp /etc/nginx/sites-available/www.lowend.party web2.lowend.party:/etc/nginx/sites-available
在web2上进行设置日志记录:
#mkdir -p /var/log/nginx/www.lowend.party#chown www-data:adm /var/log/nginx/www.lowend.party/#cp /etc/logrotate.d/nginx / etc / logrotate .d / nginx_web_dirs #sed -i's#nginx / \ *。log#nginx / \ * / \ *。log#'/ etc / nginx / nginx_web_dirs
使站点在web2上运行:
#ln -s /etc/nginx/sites-available/www.lowend.party /etc/nginx/sites-enabled/www.lowend.party#systemctl 重新启动nginx
复制MySQL数据库
在web1上,使用mysqldump备份WordPress数据库:
mysqldump wp> /tmp/wp.sql
在web2上创建WordPress数据库和用户:
MariaDB [(无)]>创建数据库wp; 查询正常,受影响1行(0.000秒) MariaDB [[无]]>创建用户'wp'@'localhost',由'complexpassword'标识; 查询确定,受影响的0行(0.001秒) MariaDB [(none)]>将wp。*上的全部授予'wp'@'localhost'; 查询正常,受影响的0行(0.000秒) MariaDB [(无)]>刷新特权; 查询正常,受影响的0行(0.000秒)
现在还原wp数据库:
#mysql wp </tmp/wp.sql
然后,我将本地主机文件更改为指向web2,该站点看起来与在web1上的显示方式相同。
至此,我们已经在两个站点上启动并运行了WordPress。 如果这是一个静态网站,我们将完成。 但是,因为我们使用的是WordPress,所以我们需要使数据库和Web文件系统(存储主题,上载内容等)同步。
下一部分:第3部分–设置MariaDB多主复制