本指南配置了一個高可靠性的WordPress站點,使用了一個雙Linode集群,使用了MySQL主主復(fù)制和一個Linode nodebal前端。
先決條件
本指南是為Debian 7或Ubuntu 14.04編寫的。為了完成這個指南,請確保您的帳戶上有兩個Linodes和一個NodeBalancer。Linodes都需要一個私有IP地址。還可以確保你的兩個鏈接都配置了SSH密鑰,并將對方的Linode的SSH密鑰放在另一個/.ssh/authorized_keys文件中。
安裝所需要的軟件包
使用以下命令在每個Linodes上安裝Apache、PHP和MySQL:
- 1 sudo apt-get update
- 2 sudo apt-get upgrade -y
- 3 sudo apt-get install apache2 php5 php5-mysql mysql-server mysql-client
編輯MySQL配置,以設(shè)置主-主復(fù)制
1、在每個Linodes上編輯/etc/mysql/my.cnf文件。添加或修改以下值:
Server 1:
- /etc/mysql/my.cnf
- 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:
- /etc/mysql/my.cnf
- 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、對于每個Linodes,編輯bind-address配置,以便使用私有IP地址:
/etc/mysql/my.cnf
bind-address = x.x.x.x
3、一旦完成,重新啟動MySQL應(yīng)用程序:
sudo service mysql restart
創(chuàng)建復(fù)制用戶
1、在每個Linodes上都登錄到MySQL:
mysql -u root -p
2、在每個Linode上配置復(fù)制用戶。替換. x.x.x。帶有強密碼的反對的Linode和密碼的私有IP地址
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x' IDENTIFIED BY 'password';
3、回到終端,運行下面的命令來測試配置。使用相反的Linode的私有IP地址:
mysql -ureplication -p -h x.x.x.x -P 3306
這個命令應(yīng)該將您連接到遠(yuǎn)程服務(wù)器的MySQL實例。
配置數(shù)據(jù)庫復(fù)制
1、在服務(wù)器1上登錄到MySQL時,查詢主狀態(tài):
SHOW MASTER STATUS;
注意顯示的文件和位置值:
- mysql> SHOW MASTER STATUS;
- +------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +------------------+----------+--------------+------------------+
- | mysql-bin.000001 | 277 | | |
- +------------------+----------+--------------+------------------+
- 1 row in set (0.00 sec)
在服務(wù)器2上,在MySQL提示中,為該數(shù)據(jù)庫設(shè)置了奴隸功能。替換. x.x.x。從第一個服務(wù)器獲得私有IP。還可以用前面步驟中的值替換master_log_file和master_log_pos的值。
- 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、在服務(wù)器2上,查詢主狀態(tài)。注意文件和位置值:
SHOW MASTER STATUS;
4、在服務(wù)器1上設(shè)置從屬數(shù)據(jù)庫狀態(tài),替換步驟2中與服務(wù)器2中交換的相同值:
- 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、在兩個Linodes上都退出MySQL:
exit
配置Apache
本節(jié)中的步驟將需要在您的Linodes上執(zhí)行。
提示:
對于本指南的以下部分,請將“https://cnbudgetvm.com/”替換為您的域名。
1、通過輸入以下命令禁用默認(rèn)的Apache虛擬主機:
sudo a2dissite *default
2、導(dǎo)航到你的/var/www目錄:
cd /var/www
3、創(chuàng)建一個文件夾來保存你的網(wǎng)站,輸入以下命令:
sudo mkdir example.com
4、在你剛剛創(chuàng)建的文件夾中創(chuàng)建一組文件夾來存儲你的網(wǎng)站的文件、日志和備份:
- sudo mkdir cnbudgetvm.com/public_html
- sudo mkdir cnbudgetvm.com/log
5、為網(wǎng)站創(chuàng)建虛擬主機文件:
- file excerpt:/etc/apache2/sites-available/cnbudgetvm.com.conf
- # domain: example.com
- # public: /var/www/example.com/public_html/
- <</span>VirtualHost *:80>
- # Admin email, Server Name (domain name), and any aliases
- ServerAdmin [email protected]
- 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
- </</span>VirtualHost>
注意:文件名必須與.conf 結(jié)束在Apache 2.4及以后版本,Ubuntu 14.04用途。.conf 擴展與早期版本向后兼容。
6、通過輸入以下命令啟用新網(wǎng)站:
sudo a2ensite example.com.conf
重新啟動Apache
sudo service apache2 restart
安裝WordPress
1、在Linode的初選中,下載并安裝最新版本的WordPress。替換為您的配置正確路徑列出的任何路徑:
- cd /var/www
- wget https://wordpress.org/latest.tar.gz
- tar -xvf latest.tar.gz
- cp -R wordpress/* /var/www.companysz.com/public_html
2、為新的WordPress安裝配置MySQL數(shù)據(jù)庫。你需要用你自己的設(shè)置來替換wordpressuser和password。
- mysql -u root -p
- CREATE DATABASE wordpress;
- GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
- FLUSH PRIVILEGES;
- EXIT
3、在文檔根目錄上設(shè)置權(quán)限,使WordPress能夠完成它的配置步驟:
chmod 777 /var/www/example.com/public_html/
4、使用你的網(wǎng)絡(luò)瀏覽器連接到你的Linode的IP地址,并通過配置步驟來完全安裝WordPress。
注意:為了確保每個WordPress實例都能處理本地數(shù)據(jù)庫,您需要確保該步驟中的數(shù)據(jù)庫主機值被設(shè)置為localhost。這應(yīng)該在默認(rèn)情況下填充。
5、通過WordPress管理界面中的一般設(shè)置配置您的WordPress URL和站點地址。確保您的域在兩個字段中都配置了。
注意:在完成您的WordPress安裝步驟并第一次登錄之后,您應(yīng)該重新設(shè)置您的文檔根目錄的權(quán)限,以確保額外的安全性。您可以使用以下命令:
chmod 755 /var/www/example.com/public_html/
6、完成WordPress安裝步驟后,將配置復(fù)制到您的第二個Linode。替換. x.x.x。第二個Linode的IP地址:
rsync -r /var/www/* x.x.x.x:/var/www/.
7、登錄到第二個Linode并重新啟動Apache:
sudo service apache2 restart
使用Lsyncd配置文件夾同步
1、在集群的主要Linode上安裝Lsyncd。
sudo apt-get install lsyncd
2、創(chuàng)建一個配置文件,以便執(zhí)行同步操作。替換. x.x.x。在您的集群中使用第二個Linode的私有IP地址。
file excerpt:/etc/lsyncd/lsyncd.conf.lua
- 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 = {
- //Vevb.com
- port = 22
- }
- }
3、開始Lsyncd守護(hù)進(jìn)程:
service lsyncd start
4、Lsyncd成功地開始了測試:
service lsyncd status
如果這個命令返回之外的東西lsyncd is running,仔細(xì)檢查你的lsyncd.conf.lua 文件,并確保RSA公鑰是次要服務(wù)器上正確的位置。
5、測試復(fù)制通過創(chuàng)建一個文件在您的主要Linode /var/www文件夾。您應(yīng)該能夠在幾秒內(nèi)在第二個Linode上看到相同的文件。
配置您的Nodebalancer
1、訪問Linode管理器中的nodebalalt選項卡。
2、如果您還沒有這樣做,請?zhí)砑右粋€nodebal法師,確保它與您的后端Linodes相同的數(shù)據(jù)中心。
3、選擇您的新nodebal法師并單擊“創(chuàng)建配置”。編輯您的配置設(shè)置如下:
- Port: 80
- Protocol: HTTP
- Algorithm: Least Connections
- Session Stickiness: Table
- Health Check Type: HTTP Valid Status
4、一旦您點擊“Save Changes”按鈕,就會提示您添加您的節(jié)點。為每個節(jié)點提供一個惟一的標(biāo)簽,并在每個節(jié)點的地址字段中輸入私有網(wǎng)絡(luò)地址和端口。
5、當(dāng)您添加了兩個節(jié)點時,請確保健康檢查將它們標(biāo)記為向上。一旦兩個節(jié)點都顯示出來,返回到nodebal法師的主頁并注意所列出的IP地址。你現(xiàn)在應(yīng)該能夠?qū)Ш降侥莻€IP地址并查看你的網(wǎng)頁了。
為了測試高可用性功能,可以在一個節(jié)點上停止apache2/mysql服務(wù),或者一次一次地關(guān)閉一個節(jié)點。即使在其中一個節(jié)點被標(biāo)記為向下時,該網(wǎng)站仍應(yīng)繼續(xù)提供服務(wù)。
祝賀您,您已經(jīng)配置了您的高可用性可靠性WordPress站點!
新聞熱點
疑難解答
圖片精選