WordPress網(wǎng)站遷移到新主機防火墻配置
使用這個簡單的方法來遷移一個網(wǎng)站以及管理防火墻配置。
你有過把一個 WordPress 網(wǎng)站遷移到一臺新主機上的需求嗎?我曾經(jīng)遷移過好多次,遷移過程相當簡單。當然,的的市場時候我都不會用通用的推薦方法,這次也不例外 —— 我用更簡單的方法,這才是我推薦的方法。
這個遷移方法沒有破壞性,因此如果出于某些原因你需要還原到原來的服務器上,很容易可以實現(xiàn)。
一個 WordPress 網(wǎng)站的組成部分
運行一個基于 WordPress 的網(wǎng)站有三個重要組成部分:WordPress 本身,一個 web 服務器,如 Apache(我正在用),以及 MariaDB。MariaDB 是 MySQL 的一個分支,功能相似。
業(yè)界有大量的 Web 服務器,由于我使用了 Apache 很長時間,因此我推薦用 Apache。你可能需要把 Apache 的配置方法改成你用的 Web 服務器的方法。
初始配置
我使用一臺 Linux 主機作為防火墻和網(wǎng)絡路由。在我的網(wǎng)絡中 Web 服務器是另一臺主機。我的內(nèi)部網(wǎng)絡使用的是 C 類私有網(wǎng)絡地址范圍,按 無類別域間路由Classless Internet Domain Routing(CIDR)方式簡單地記作 192.168.0.0/24。
對于防火墻,相比于更復雜的 firewalld,我更喜歡用非常簡單的 IPTables。這份防火墻配置中的一行會把 80 端口(HTTP)接收到的包發(fā)送給 Web 服務器。在 /etc/sysconfig/iptables 文件中,你可以在注釋中看到,我添加了規(guī)則,把其他入站服務器連接轉發(fā)到同一臺服務器上合適的端口。
# Reroute ports for inbound connections to the appropriate web/email/etc server. # HTTPD goes to 192.168.0.75 -A PREROUTING -d 45.20.209.41/255.255.255.248 -p tcp -m tcp --dport 80 \ -j DNAT --to-destination 192.168.0.75:80
我使用命名虛擬主機named virtual host來配置原來的 Apache Web 服務器,因為我在這個 HTTPD 實例上運行著多個網(wǎng)站。使用命名虛擬主機配置是個不錯的方法,因為(像我一樣)未來你可能會在運行其他的網(wǎng)站,這個方法可以使其變得容易。
/etc/httpd/conf/httpd.conf 中需要遷移的虛擬主機的網(wǎng)站相關部分請參考下面代碼。這個片段中不涉及到 IP 地址的修改,因此在新服務器上使用時不需要修改。
<VirtualHost *:80>
ServerName www.website1.org
ServerAlias server.org
DocumentRoot "/var/website1/html"
ErrorLog "logs/error_log"
ServerAdmin me@website1.org
<Directory "/var/website1/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>在遷移之前,你需要在 httpd.conf 的最頂端附近找到 Listen 聲明并修改成類似下面這樣。這個地址是服務器的真實私有 IP 地址,不是公開 IP 地址。
Listen 192.168.0.75:80
你需要修改新主機上 Listen 的 IP 地址。
前期工作
準備工作分為以下三步:
- 安裝服務
- 配置防火墻
- 配置 web 服務器
安裝 Apache 和 MariaDB
如果你的新服務器上還沒有 Apache 和 MariaDB,那么就安裝它們。WordPress 的安裝不是必要的。
dnf -y install httpd mariadb
新服務器防火墻配置
確認下新服務器上的防火墻允許訪問 80 端口。你_每臺_電腦上都有一個防火墻,對嗎?大部分現(xiàn)代發(fā)行版使用的初始化配置包含的防火墻會阻止所有進來的網(wǎng)絡流量,以此來提高安全等級。
下面片段的第一行內(nèi)容可能已經(jīng)在你的 IPTables 或其他基于防火墻的網(wǎng)絡過濾器中存在了。它標識已經(jīng)被識別為來自可接受來源的入站包,并繞過后面的其它 INPUT 過濾規(guī)則,這樣可以節(jié)省時間和 CPU 周期。片段中最后一行標識并放行 80 端口新進來的請求到 HTTPD 的連接。
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT <刪節(jié)> # HTTP -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
下面的示例 /etc/sysconfig/iptables 文件是 IPTables 最少規(guī)則的例子,可以允許 SSH(端口 22)和 HTTPD(端口 80)連接。
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # SSHD -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT # HTTP -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT # Final disposition for unmatched packets -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
在新服務器主機上我需要做的就是在 /etc/sysconfig/iptables 文件的防火墻規(guī)則里添加上面片段的最后一行,然后重新加載修改后的規(guī)則集。
iptables-restore /etc/sysconfig/iptables
大部分基于紅帽的發(fā)行版本,如 Fedora,使用的是 firewalld。我發(fā)現(xiàn)對于它的適用場景(如家用、小到中型企業(yè))而言,它過于復雜,因此我不用它。我建議你參照 firewalld 網(wǎng)頁 來向 firewalld 添加入站端口 80。
你的防火墻及其配置可能跟這個有些差異,但最終的目的是允許新 Web 服務器 80 端口接收 HTTPD 連接。
HTTPD 配置
在 /etc/httpd/conf/httpd.conf 文件中配置 HTTPD。像下面一樣在 Listen 片段中設置 IP 地址。我的新 Web 服務器 IP 地址是 192.168.0.125。
Listen 192.168.0.125:80
復制(對應要遷移的網(wǎng)站的) VirtualHost 片段,粘貼到新服務器上 httpd.conf 文件的末尾。
遷移過程
只有兩組數(shù)據(jù)需要遷移到新服務器 —— 數(shù)據(jù)庫本身和網(wǎng)站目錄結構。把兩個目錄打包成 tar 文檔。
cd /var ; tar -cvf /tmp/website.tar website1/ cd /var/lib ; tar -cvf /tmp/database.tar mysql/
把兩個 tar 文件復制到新服務器。我通常會把這類文件放到 /tmp 下,這個目錄就是用來做這種事的。在新服務器上運行下面的命令,把 tar 文檔解壓到正確的目錄。
cd /var ; tar -xvf /tmp/website.tar cd /var/lib ; tar -xvf /tmp/database.tar
WordPress 的所有文件都在 /var/website1 下,因此不需要在新服務器上安裝它。新服務器上不需要執(zhí)行 WordPress 安裝過程。
這個目錄就是需要遷移到新服務器上的全部內(nèi)容。
最后一步是啟動(或重啟)mysqld 和 httpd 服務守護進程。WrodPress 不是一個服務,因此不使用守護進程的方式來啟動。
systemctl start mysqld ; systemctl start httpd
啟動之后,你應該檢查下這些服務的狀態(tài)。
systemctl status mysqld
● mariadb.service - MariaDB 10.5 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-08-21 14:03:44 EDT; 4 days ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 251783 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS)
Process: 251805 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
Process: 251856 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS)
Main PID: 251841 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 15 (limit: 19003)
Memory: 131.8M
CPU: 1min 31.793s
CGroup: /system.slice/mariadb.service
└─251841 /usr/libexec/mariadbd --basedir=/usr
Aug 21 14:03:43 simba.stmarks-ral.org systemd[1]: Starting MariaDB 10.5 database server...
Aug 21 14:03:43 simba.stmarks-ral.org mariadb-prepare-db-dir[251805]: Database MariaDB is probably initialized in /var/lib/mysql already, n>
Aug 21 14:03:43 simba.stmarks-ral.org mariadb-prepare-db-dir[251805]: If this is not the case, make sure the /var/lib/mysql is empty before>
Aug 21 14:03:44 simba.stmarks-ral.org mariadbd[251841]: 2021-08-21 14:03:44 0 [Note] /usr/libexec/mariadbd (mysqld 10.5.11-MariaDB) startin>
Aug 21 14:03:44 simba.stmarks-ral.org systemd[1]: Started MariaDB 10.5 database server.
systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/httpd.service.d
└─php-fpm.conf
Active: active (running) since Sat 2021-08-21 14:08:39 EDT; 4 days ago
Docs: man:httpd.service(8)
Main PID: 252458 (httpd)
Status: "Total requests: 10340; Idle/Busy workers 100/0;Requests/sec: 0.0294; Bytes served/sec: 616 B/sec"
Tasks: 278 (limit: 19003)
Memory: 44.7M
CPU: 2min 31.603s
CGroup: /system.slice/httpd.service
├─252458 /usr/sbin/httpd -DFOREGROUND
├─252459 /usr/sbin/httpd -DFOREGROUND
├─252460 /usr/sbin/httpd -DFOREGROUND
├─252461 /usr/sbin/httpd -DFOREGROUND
├─252462 /usr/sbin/httpd -DFOREGROUND
└─252676 /usr/sbin/httpd -DFOREGROUND
Aug 21 14:08:39 simba.stmarks-ral.org systemd[1]: Starting The Apache HTTP Server...
Aug 21 14:08:39 simba.stmarks-ral.org httpd[252458]: AH00112: Warning: DocumentRoot [/var/teststmarks-ral/html] does not exist
Aug 21 14:08:39 simba.stmarks-ral.org httpd[252458]: Server configured, listening on: port 80
Aug 21 14:08:39 simba.stmarks-ral.org systemd[1]: Started The Apache HTTP Server.最終的修改
現(xiàn)在所需的服務都已經(jīng)運行了,你可以把 /etc/sysconfig/iptables 文件中 HTTDP 的防火墻規(guī)則改成下面的樣子:
-A PREROUTING -d 45.20.209.41/255.255.255.248 -p tcp -m tcp --dport 80 \ -j DNAT --to-destination 192.168.0.125:80
然后重新加載設置的 IPTables 規(guī)則。
iptables-restore /etc/sysconfig/iptables
由于防火墻規(guī)則是在防火墻主機上,因此不需要把外部 DNS 入口改成指向新服務器。如果你使用的是內(nèi)部 DNS 服務器,那么你需要把 IP 地址改成內(nèi)部 DNS 數(shù)據(jù)庫里的 A 記錄。如果你沒有用內(nèi)部 DNS 服務器,那么請確保主機 /etc/hosts 文件里新服務器地址設置得沒有問題。
測試和清理
請確保對新配置進行測試。首先,停止舊服務器上的 mysqld 和 httpd 服務。然后通過瀏覽器訪問網(wǎng)站。如果一切符合預期,那么你可以關掉舊服務器上的 mysqld 和 httpd。如果有失敗,你可以把 IPTables 的路由規(guī)則改回去到舊服務器上,直到問題解決。
之后我把 MySQL 和 HTTPD 從舊服務器上刪除了,這樣來確保它們不會意外地被啟動。
總結
就是這么簡單。不需要執(zhí)行數(shù)據(jù)庫導出和導入的過程,因為 mysql 目錄下所有需要的東西都已經(jīng)復制過去了。需要執(zhí)行導出/導入過程的場景是:有網(wǎng)站自己的數(shù)據(jù)庫之外的數(shù)據(jù)庫;MariaDB 實例上還有其他網(wǎng)站,而你不想把這些網(wǎng)站復制到新服務器上。
遷移舊服務器上的其他網(wǎng)站也很容易。其他網(wǎng)站依賴的所有數(shù)據(jù)庫都已經(jīng)隨著 MariaDB 的遷移被轉移到了新服務器上。你只需要把 /var/website 目錄遷移到新服務器,添加合適的虛擬主機片段,然后重啟 HTTPD。
我遵循這個過程把很多個網(wǎng)站從一個服務器遷移到另一個服務器,每次都沒有問題。
via: https://opensource.com/article/21/9/migrate-wordpress
以上就是 WordPress網(wǎng)站遷移到新主機防火墻配置的詳細內(nèi)容,更多關于 WordPress網(wǎng)站遷移防火墻配置的資料請關注腳本之家其它相關文章!
相關文章
親自教你在netty中使用TCP協(xié)議請求DNS服務器的詳細過程
DNS的全稱domain name system,既然是一個系統(tǒng)就有客戶端和服務器之分,這篇文章主要介紹了在netty中使用TCP協(xié)議請求DNS服務器的全過程,需要的朋友可以參考下2022-07-07
Visual Studio Code(vscode) git的使用教程
這篇文章主要介紹了詳解Visual Studio Code(vscode) git的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
Windows下實現(xiàn)簡單的libevent服務器
這篇文章主要介紹了Windows下實現(xiàn)簡單的libevent服務器的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
rsync同出出現(xiàn) IO error encountered導致無法刪除文件的解決方法
今天,我在服務器上發(fā)現(xiàn)通過rsync同步的文件有問題,在鏡像服務器這邊的文件沒有同步刪除,于是在終端手工運行了一下命令,發(fā)現(xiàn)有以下報錯IO error encountered — skipping file deletion2018-02-02
寶塔面板phpMyadmin數(shù)據(jù)庫管理出現(xiàn)500錯誤的解決方法
寶塔面板phpMyadmin數(shù)據(jù)庫管理出現(xiàn)500錯誤的解決方法,經(jīng)常會出現(xiàn)數(shù)據(jù)庫管理phpMyadmin打不開,或則出現(xiàn)500內(nèi)部服務器錯誤,本文介紹如果出現(xiàn)這個問題該如何解決2023-08-08

