WordPress网站迁移到新主机防火墙配置

目录
  • 一个 WordPress 网站的组成部分
  • 初始配置
  • 前期工作
    • 安装 Apache 和 MariaDB
    • 新服务器防火墙配置
    • HTTPD 配置
  • 迁移过程
  • 最终的修改
  • 测试和清理
  • 总结

使用这个简单的方法来迁移一个网站以及管理防火墙配置。

你有过把一个 WordPress 网站迁移到一台新主机上的需求吗?我曾经迁移过好多次,迁移过程相当简单。当然,的的市场时候我都不会用通用的推荐方法,这次也不例外 —— 我用更简单的方法,这才是我推荐的方法。

这个迁移方法没有破坏性,因此如果出于某些原因你需要还原到原来的服务器上,很容易可以实现。

一个 WordPress 网站的组成部分

运行一个基于 WordPress 的网站有三个重要组成部分:WordPress 本身,一个 web 服务器,如 Apache(我正在用),以及 MariaDB。MariaDB 是 MySQL 的一个分支,功能相似。

业界有大量的 Web 服务器,由于我使用了 Apache 很长时间,因此我推荐用 Apache。你可能需要把 Apache 的配置方法改成你用的 Web 服务器的方法。

初始配置

我使用一台 Linux 主机作为防火墙和网络路由。在我的网络中 Web 服务器是另一台主机。我的内部网络使用的是 C 类私有网络地址范围,按 无类别域间路由Classless Internet Domain Routing(CIDR)方式简单地记作 192.168.0.0/24。

对于防火墙,相比于更复杂的 firewalld,我更喜欢用非常简单的 IPTables。这份防火墙配置中的一行会把 80 端口(HTTP)接收到的包发送给 Web 服务器。在 /etc/sysconfig/iptables 文件中,你可以在注释中看到,我添加了规则,把其他入站服务器连接转发到同一台服务器上合适的端口。

# 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 实例上运行着多个网站。使用命名虚拟主机配置是个不错的方法,因为(像我一样)未来你可能会在运行其他的网站,这个方法可以使其变得容易。

/etc/httpd/conf/httpd.conf 中需要迁移的虚拟主机的网站相关部分请参考下面代码。这个片段中不涉及到 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 端口。你_每台_电脑上都有一个防火墙,对吗?大部分现代发行版使用的初始化配置包含的防火墙会阻止所有进来的网络流量,以此来提高安全等级。

下面片段的第一行内容可能已经在你的 IPTables 或其他基于防火墙的网络过滤器中存在了。它标识已经被识别为来自可接受来源的入站包,并绕过后面的其它 INPUT 过滤规则,这样可以节省时间和 CPU 周期。片段中最后一行标识并放行 80 端口新进来的请求到 HTTPD 的连接。

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
<删节>
# HTTP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

下面的示例 /etc/sysconfig/iptables 文件是 IPTables 最少规则的例子,可以允许 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 文件的防火墙规则里添加上面片段的最后一行,然后重新加载修改后的规则集。

iptables-restore /etc/sysconfig/iptables

大部分基于红帽的发行版本,如 Fedora,使用的是 firewalld。我发现对于它的适用场景(如家用、小到中型企业)而言,它过于复杂,因此我不用它。我建议你参照 firewalld 网页 来向 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

复制(对应要迁移的网站的) VirtualHost 片段,粘贴到新服务器上 httpd.conf 文件的末尾。

迁移过程

只有两组数据需要迁移到新服务器 —— 数据库本身和网站目录结构。把两个目录打包成 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 下,因此不需要在新服务器上安装它。新服务器上不需要执行 WordPress 安装过程。

这个目录就是需要迁移到新服务器上的全部内容。

最后一步是启动(或重启)mysqld 和 httpd 服务守护进程。WrodPress 不是一个服务,因此不使用守护进程的方式来启动。

systemctl start mysqld ; systemctl start httpd

启动之后,你应该检查下这些服务的状态。

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.

最终的修改

现在所需的服务都已经运行了,你可以把 /etc/sysconfig/iptables 文件中 HTTDP 的防火墙规则改成下面的样子:

-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 规则。

iptables-restore /etc/sysconfig/iptables

由于防火墙规则是在防火墙主机上,因此不需要把外部 DNS 入口改成指向新服务器。如果你使用的是内部 DNS 服务器,那么你需要把 IP 地址改成内部 DNS 数据库里的 A 记录。如果你没有用内部 DNS 服务器,那么请确保主机 /etc/hosts 文件里新服务器地址设置得没有问题。

测试和清理

请确保对新配置进行测试。首先,停止旧服务器上的 mysqld 和 httpd 服务。然后通过浏览器访问网站。如果一切符合预期,那么你可以关掉旧服务器上的 mysqld 和 httpd。如果有失败,你可以把 IPTables 的路由规则改回去到旧服务器上,直到问题解决。

之后我把 MySQL 和 HTTPD 从旧服务器上删除了,这样来确保它们不会意外地被启动。

总结

就是这么简单。不需要执行数据库导出和导入的过程,因为 mysql 目录下所有需要的东西都已经复制过去了。需要执行导出/导入过程的场景是:有网站自己的数据库之外的数据库;MariaDB 实例上还有其他网站,而你不想把这些网站复制到新服务器上。

迁移旧服务器上的其他网站也很容易。其他网站依赖的所有数据库都已经随着 MariaDB 的迁移被转移到了新服务器上。你只需要把 /var/website 目录迁移到新服务器,添加合适的虚拟主机片段,然后重启 HTTPD。

我遵循这个过程把很多个网站从一个服务器迁移到另一个服务器,每次都没有问题。

via: https://opensource.com/article/21/9/migrate-wordpress

以上就是 WordPress网站迁移到新主机防火墙配置的详细内容,更多关于 WordPress网站迁移防火墙配置的资料请关注我们其它相关文章!

(0)

相关推荐

  • WordPress迁移时一些常见问题的解决方法整理

    一.导入数据库提示数据表已存在 以周良博客使用的主机商-主机91为例,提供了phpMyAdmin功能的,导入数据库只需要便捷的选择数据库,导入就可以了.方法虽然简单,但是有可能遇到提示database XXX table has existed.出现该问题的原因可能是之前转移的时候将网站文件上传到主机空间后,进行过一次网站安装,导致新建了一次数据库,创建了新的数据表,导致重新导入数据库时数据表重复.解决方法就是将查找到提示的这个已存在的XXX table,将它删除掉再重新导入. 二.网站文件和数

  • magento空间更换迁移图文教程

    随着网站数据和浏览量的增加,更换更好的主机空间,是站长们常做的事.magento是一款使用比较普遍的免费开源建站软件,magento网站在更换空间迁移时候,步骤有误常会导致一些功能失效或错误出现,下面就详细介绍一下magento空间更换迁移步骤过程: 1.需要将magento数据库备份,并导入到新的magento空间数据库中: 2.将magento网站程序源文件,使用ftp上传到新的magento空间: 3.打开magento程序local.xml文件,修改并正确配置新的magento空间数据库

  • wordpress网站转移到本地运行测试的方法

    作为站长而言,有时候我们可能会碰到更换服务器或者为网站做一个整体布局修改和升级,我们首先需要做的就是对数据库和整个wordpress网站的 主题和插件等等相关文件进行本地备份.个人认为如果要对网站进行比较大的改动,比如更换网站框架或者网站结构,最好将整个网站转移到本地进行相关的运行测 试,这样做可以保证修改的进度和效率,无需每次都要将修改的效果反复上传覆盖,你可以将整个网站测试完毕后再进行最终的上传. 那么我们如何将ftp服务器上的wordpress网站转移到本地呢?其实主要还是数据库修改的问题

  • WordPress网站迁移到新主机防火墙配置

    目录 一个 WordPress 网站的组成部分 初始配置 前期工作 安装 Apache 和 MariaDB 新服务器防火墙配置 HTTPD 配置 迁移过程 最终的修改 测试和清理 总结 使用这个简单的方法来迁移一个网站以及管理防火墙配置. 你有过把一个 WordPress 网站迁移到一台新主机上的需求吗?我曾经迁移过好多次,迁移过程相当简单.当然,的的市场时候我都不会用通用的推荐方法,这次也不例外 —— 我用更简单的方法,这才是我推荐的方法. 这个迁移方法没有破坏性,因此如果出于某些原因你需要还

  • 详解基于centos7搭建Nginx网站服务器(包含虚拟web主机的配置)

    一 .Nginx服务基础 Nginx (engine x)专为性能优化而开发,其特点是占有内存少,它的稳定性和低系统资源消耗,以及对并发连接的高处理能力,(单台物理服务器可支持5000个并发请求).事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度.京东.新浪.网易.腾讯.淘宝等.同时也提供了IMAP/POP3/SMTP服务. Nginx的优点: *** 可以高并发连接** 官方测试Nginx能够支撑5万并发连接,实际生产环境中可以支撑2~4万并

  • CentOS7下Firewall防火墙配置用法详解(推荐)

    centos 7中防火墙是一个非常的强大的功能了,但对于centos 7中在防火墙中进行了升级了,下面我们一起来详细的看看关于centos 7中防火墙使用方法. FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具.它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项.它也支持允许服务或者应用程序直接添加防火墙规则的接口. 以前的 system-config-firewall/lokkit 防火墙模型是静态

  • win2008内置防火墙配置方法说明

    而随着Windows Server 2008的日渐向我们走近,其内置的防火墙功能得到了巨大的改进.下面让我们一起来看一下这个新的高级防火墙将如何帮助我们防护系统,以及如何使用管理控制台单元来配置它. 为什么你应该使用这个Windows的基于主机的防火墙? 今天许多公司正在使用外置安全硬件的方式来加固它们的网络. 这意味着,它们使用防火墙和入侵保护系统在它们的网络周围建立起了一道铜墙铁壁,保护它们自然免受互联网上恶意攻击者的入侵.但是,如果一个攻击者能够攻 破外围的防线,从而获得对内部网络的访问,

  • WordPress网站性能优化指南

    1.选择一个好的主机 尽量不要使用免费主机或者共享主机(Godaddy啊.Bluehost啊等等所谓无限带宽.无限网站之类的主机) 首先,你的域名和你的主机最好在一个IDC哪儿,如果不是的话,建议你采用口碑良好的DNS服务商,让域名以最快的速度解析到主机上,这不是重点,重点是你的服务器/主机空间应该够快,怎么才能够快呢?CPU的配置.CPU的使用率.物理内存的大小.磁盘类型以及磁盘的I/O性能(包括Mysql数据库服务器所用磁盘).Mysql响应速度以及Mysql并发数等等,都会影响到网站的快与

  • Linux防火墙配置SNAT教程(2)

    1.实验目标 以实验"Linux防火墙配置-SNAT1"为基础,为网关增加外网IP地址,为eth1创建虚拟接口,使外网测试主机在Wireshark中捕获到的地址为eth1虚拟接口的地址 (Linux防火墙配置-SNAT1:Linux防火墙配置SNAT教程(1) ) 2.实验拓扑 3.实验步骤 (1)完成"Linux防火墙配置-SNAT1"实验 (2)为网关增加外网IP地址,为eth1创建5个虚拟接口 [root@lyy 桌面]# gedit /etc/sysconf

  • 详解Linux 主机网络接入配置

    详解Linux 主机网络接入配置 前言: 网络配置是我们在安装好操作系统之后,需要解决的第一步.现时代没有接入网络的主机已然等同于一堆废铁.在网络配置的过程中,通常我们需要配置本机IP地址,缺省网关,DNS,主机名等等.本文主要描述在Linux环境下,主要以传统命令行方式讲解如何将主机接入网络.对于网路配置的新命令如ip,nmcli等等在以后的文章中描述. 一.网络配置概述 主机接入互联网前提:遵循TCP/IP协议栈 配置主机接入TCP/IP网络需要配置的内容:   IP/Netmask   路

  • apache虚拟主机的配置指南

    一.检查apache虚拟主机模块 apache要配置虚拟主机,就需要先查看apache是否编译vhost_alias_module模块.当然apache默认是已经编译该模块的,我们可以通过以下命令查看是否已经编译模块,如下: /usr/local/apache2/bin/apachectl -M 二.开启apache虚拟主机功能 要开启apache虚拟主机功能,我们需要修改apache配置文件http.conf.打开apache的安装目录,找到httpd.conf文件,去掉Include con

  • Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法

    一.发现问题 在尝试编辑博客站点的Wordpress主题时,突然发现博客站点无法连接:刷新后提示"建立数据库连接错误"之类的错误.自然想到是mysql可能出错了,所以就登陆了VPS主机,尝试启动mysql服务,但是提示failed. 二.解决方法 1.打开/var/log/mysql/error.log文件,查看出错日志.在阅读日志时发现第一条错误提示是:[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrad

随机推荐