前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搭建高可用WordPress网站托管

搭建高可用WordPress网站托管

作者头像
苏易北
发布2018-09-12 10:01:26
2.5K0
发布2018-09-12 10:01:26
举报
文章被收录于专栏:Linux 杂货铺

本指南将使用双Linode集群配置高可用的WordPress站点,数据库采用MySQL双主复制(Master-Master replication),并使用Linode NodeBalancer作为前端管理工具。

先决条件

本指南基于Debian 7或Ubuntu 14.04编写。要完成该指南,请确保您的账户中至少存在两个Linode节点和一个NodeBalancer。两个Linode节点都需要私有IP地址。同时还要确保已经在Linode节点上配置了SSH密钥,并且还需将另一台Linode主机的SSH密钥添加在本机的/.ssh/authorized_keys文件中。

注意

本指南是为非root用户编写的,会在需要提升权限的命令之前加上sudo。如果您不熟悉sudo命令,请参阅Linux用户和用户组指南。

安装所需软件包

使用以下命令在每个Linode节点上安装Apache,PHP和MySQL:

代码语言:txt
复制
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install apache2 php5 php5-mysql mysql-server mysql-client

编辑MySQL配置文件以设置双主复制

1.编辑每个Linode节点上的/etc/mysql/my.cnf配置文件,添加或修改以下值:

Server 1:

代码语言:txt
复制
server_id           = 1
log_bin             = /var/log/mysql/mysql-bin.log
log_bin_index       = /var/log/mysql/mysql-bin.log.index
relay_log           = /var/log/mysql/mysql-relay-bin
relay_log_index     = /var/log/mysql/mysql-relay-bin.index
expire_logs_days    = 10
max_binlog_size     = 100M
log_slave_updates   = 1
auto-increment-increment = 2
auto-increment-offset = 1

Server 2:

代码语言:txt
复制
server_id           = 2
log_bin             = /var/log/mysql/mysql-bin.log
log_bin_index       = /var/log/mysql/mysql-bin.log.index
relay_log           = /var/log/mysql/mysql-relay-bin
relay_log_index     = /var/log/mysql/mysql-relay-bin.index
expire_logs_days    = 10
max_binlog_size     = 100M
log_slave_updates   = 1
auto-increment-increment = 2
auto-increment-offset = 2

2.对于每个Linode节点,编辑bind-address配置以使用私有IP地址:

代码语言:txt
复制
bind-address    = x.x.x.x

3.修改完配置文件后,重启MySQL应用:

代码语言:txt
复制
sudo service mysql restart

创建复制用户

1.在每台Linode节点上登录MySQL:

代码语言:txt
复制
mysql -u root -p

2.在每台Linode节点上配置复制用户。将x.x.x.x替换为另一台Linode节点的私有IP地址,并将password修改为强密码:

代码语言:txt
复制
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x' IDENTIFIED BY 'password';

3.返回终端,运行以下命令以测试配置。使用另一台Linode节点的私有IP地址:

代码语言:txt
复制
mysql -ureplication -p -h x.x.x.x -P 3306

此时您应该可以通过以上命令连接到远程服务器的MySQL实例。

配置数据库同步复制

1.在第一台服务器上登录MySQL,查询主节点状态:

代码语言:txt
复制
SHOW MASTER STATUS;

请注意显示的文件名和所在位置:

代码语言:txt
复制
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      277 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

2.在第二台服务器上,根据MySQL的提示,为该数据库设置从属功能。将x.x.x.x替换为第一台服务器的私有IP。还要将master_log_filemaster_log_pos替换为上一步中对应的值:

代码语言:txt
复制
SLAVE STOP;
CHANGE MASTER TO master_host='x.x.x.x', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=277;
SLAVE START;

3.在第二台服务器上,查询主节点状态。注意文件名及其所在位置:

代码语言:txt
复制
SHOW MASTER STATUS;

4.在第一台服务器上设置从属数据库状态,重复步骤2,并将需要修改的值替换为第一台服务器上相对应的值:

代码语言:txt
复制
SLAVE STOP;
CHANGE MASTER TO master_host='x.x.x.x', master_port=3306, master_user='replication', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=277;
SLAVE START;

5.在两台Linode节点上退出MySQL:

代码语言:txt
复制
exit

配置Apache

两台Linode服务器均需要执行本章节的以下步骤。

注意

请将之后出现的example.com替换为您的域名。

1.输入以下命令禁用默认的Apache虚拟主机:

代码语言:txt
复制
sudo a2dissite *default

2.切换至/var/www目录:

代码语言:txt
复制
cd /var/www

3.输入以下命令,创建用来保存网站的文件夹:

代码语言:txt
复制
sudo mkdir example.com

4.在您刚刚创建的文件夹中创建一组文件夹,以存储您网站的文件、日志和备份:

代码语言:txt
复制
sudo mkdir example.com/public_html
sudo mkdir example.com/log

5.为网站创建虚拟主机文件:

/etc/apache2/sites-available/example.com.conf:

代码语言:txt
复制
# domain: example.com
# 域名: example.com
# public: /var/www/example.com/public_html/
# 网站根目录: /var/www/example.com/public_html/

<VirtualHost *:80>
  # Admin email, Server Name (domain name), and any aliases
  # 管理员邮箱地址, 服务器名 (域名), 服务器别名
  ServerAdmin webmaster@example.com
  ServerName  www.example.com
  ServerAlias example.com

  # Index file and Document Root (where the public files are located)
  # 索引文件以及根目录 (网站页面文件存放位置)
  DirectoryIndex index.html index.php
  DocumentRoot /var/www/example.com/public_html
  # Log file locations
  # 日志文件存放位置
  LogLevel warn
  ErrorLog  /var/www/example.com/log/error.log
  CustomLog /var/www/example.com/log/access.log combined
</VirtualHost>

警告

在Apache 2.4(Ubuntu 14.04使用的版本)及之后的版本中,虚拟主机文件必须以.conf扩展名作为结尾。.conf扩展名在之前版本的Apache兼容。

6.输入以下命令启用新网站:

代码语言:txt
复制
sudo a2ensite example.com.conf

7.重启Apache:

代码语言:txt
复制
sudo service apache2 restart

安装WordPress

1.在Linode主节点上,下载并安装最新版本的WordPress。请根据您的实际配置替换以下命令中列出的所有路径:

代码语言:txt
复制
cd /var/www
wget https://wordpress.org/latest.tar.gz
tar -xvf latest.tar.gz
cp -R wordpress/* /var/www/example.com/public_html

2.配置MySQL数据库以安装WordPress。您需要将wordpressuserpassword替换为您自己的设置:

代码语言:txt
复制
mysql -u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT

3.设置网站根目录权限以确保WordPress能够完成其配置步骤:

代码语言:txt
复制
chmod 777 /var/www/example.com/public_html/

4.使用Web浏览器访问您Linode的IP地址,并完成配置步骤以安装全功能的WordPress。

警告

为了确保每个WordPress实例都能定位到本地数据库,您需要将此步骤中的 Database Host(数据库主机)值设置为localhost。这也是WordPress的默认值。

5.通过WordPress管理界面中的 General Settings(常规设置)配置WordPress URL和网站地址,并确保在两个字段中都配置了您的域。

注意

完成WordPress安装步骤并首次登录后,应重置网站根目录的权限以确保安全。您可以使用以下命令来重置根目录权限:

代码语言:txt
复制
chmod 755 /var/www/example.com/public_html/

6.完成WordPress安装步骤后,将配置文件复制到另一台Linode节点。将x.x.x.x替换为另一台Linode节点的IP地址:

代码语言:txt
复制
rsync -r /var/www/* x.x.x.x:/var/www/.

7.登录另一台Linode节点并重启Apache:

代码语言:txt
复制
sudo service apache2 restart

使用Lsyncd配置文件夹同步

1.在Linode集群主节点安装Lsyncd:

代码语言:txt
复制
sudo apt-get install lsyncd

2.创建配置文件以执行同步操作。将x.x.x.x替换为集群中另一台Linode节点的私有IP地址:

代码语言:txt
复制
settings = {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd-status.log"
}
sync {
    default.rsyncssh,
    delete = false,
    insist
    source="/var/www",
    host="x.x.x.x",
    targetdir="/var/www",
    rsync = {
        archive = true,
        perms = true,
        owner = true,
        _extra = {"-a"},
    },
    delay = 5,
    maxProcesses = 4,
    ssh = {
        port = 22
    }
}

3.启动Lsyncd进程:

代码语言:txt
复制
service lsyncd start

4.测试Lsyncd是否已经成功启动:

代码语言:txt
复制
service lsyncd status

如果此命令返回的结果不是lsyncd is running,请仔细检查lsyncd.conf.lua配置文件,并确保RSA公钥位于从属服务器的正确位置。

5.通过在主Linode节点的/var/www文件夹中创建文件来测试同步复制是否生效。几秒钟后您应该能够在从属Linode节点上的相同路径下看到该文件。

配置您的NodeBalancer

1.打开Linode管理界面中的NodeBalancer选项卡。

2.如果您之前尚未配置,请添加NodeBalancer,并确保它与后端Linode服务器位于同一数据中心。

3.选择您新添加的NodeBalancer并点击“Create Configuration”。按如下所示,编辑配置文件:

代码语言:txt
复制
Port: 80
Protocol: HTTP
Algorithm: Least Connections
Session Stickiness: Table
Health Check Type: HTTP Valid Status

4.点击“Save Changes”按钮后,系统将提示您添加Linode节点。为每台节点提供唯一的标签,并在每个节点的地址字段中输入私有网络地址和端口号。

5.添加完两个节点后,确保节点运行状况检查功能处于启用状态。等到两个节点都显示为启动状态,返回NodeBalancer主页并记录列出的IP地址。您现在应该能访问该IP地址并查看您的网站。

为了测试高可用性,可以在其中一个节点上停止Apache2/MySQL服务,或者关闭其中一个节点。即使其中一个节点被标记为关闭状态,您的网站仍可以继续提供服务而不会出现问题。

恭喜,您现在已经成功搭建了高可用的WordPress网站!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先决条件
  • 安装所需软件包
  • 编辑MySQL配置文件以设置双主复制
  • 创建复制用户
  • 配置数据库同步复制
  • 配置Apache
  • 安装WordPress
  • 使用Lsyncd配置文件夹同步
  • 配置您的NodeBalancer
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档