使用这种简单的方法来迁移网站和管理防火墙配置。您是否需要将WordPress网站移动到新主机?我已经做过很多次了,过程非常简单。当然,我不会在任何市场都使用一般推荐的方法,这次也不例外——我使用更简单的方法,这就是我推荐的方法。这种迁移方法是非破坏性的,因此如果出于某种原因需要恢复到原始服务器,这很容易做到。WordPress网站的组件运行基于WordPress的网站需要三个重要组件:WordPress本身、Apache(我正在使用)等Web服务器和MariaDB。MariaDB是MySQL的一个分支,具有类似的功能。业界有大量的Web服务器,由于我长期使用Apache,所以我推荐Apache。您可能需要将Apache的配置方法更改为您的Web服务器的配置方法。对于初始配置,我使用Linux主机作为防火墙和网络路由器。Web服务器是我网络中的另一台主机。我的内部网络使用C类私有网络地址范围,根据无类互联网域路由(CIDR)方法简单记录为192.168.0.0/24。对于防火墙,我更喜欢非常简单的IPTables而不是更复杂的firewalld。此防火墙配置中的一行会将在端口80(HTTP)上收到的数据包发送到Web服务器。在/etc/sysconfig/iptables文件中,如您在注释中所见,我添加了规则以将其他传入服务器连接转发到同一服务器上的适当端口。#将入站连接的端口重新路由到适当的web/email/etc服务器。#HTTPDgoesto192.168.0.75-APREROUTING-d45.20.209.41/255.255.255.248-ptcp-mtcp--dport80\-jDNAT--to-destination192.168.0.75:80我使用命名的虚拟主机来配置原始ApacheWeb服务器,因为我有多个网站在这个HTTPD实例上运行。使用命名的虚拟主机配置是一个好主意,因为(像我一样)您将来可能会运行其他网站,这种方法可以使它变得容易。/etc/httpd/conf/httpd.conf中需要迁移的虚拟主机网站的相关部分请参考以下代码。该分片中涉及的IP地址没有修改,所以在新服务器上使用时不需要修改。ServerNamewww.website1.orgServerAliasserver.orgDocumentRoot"/var/website1/html"ErrorLog"logs/error_log"ServerAdminme@website1.orgOptionsIndexesFollowSymLinksAllowOverrideNoneRequireallgranted在迁移之前,您需要找到httpd.conf最顶部附近的Listen语句并将其修改为如下所示。这个地址是服务器真正的私网IP地址,不是公网IP地址。Listen192.168.0.75:80需要在新主机上修改Listen的IP地址。准备工作准备工作分为以下三个步骤:安装服务配置防火墙配置Web服务器安装Apache和MariaDB如果您的新服务器上没有Apache和MariaDB,则安装它们。不需要安装WordPress。dnf-yinstallhttpdmariadb新服务器防火墙配置确认新服务器上的防火墙允许访问端口80。你在_every_计算机上都有防火墙,对吗?大多数现代发行版使用的初始配置包括一个防火墙,可以阻止所有传入的网络流量以提高安全级别。下面代码片段的第一行可能已经存在于您的IPTables或其他基于防火墙的网络过滤器中。它识别已被识别为来自可接受来源的传入数据包,并绕过遵循的其他INPUT过滤规则,从而节省时间和CPU周期。片段中的最后一行标识并允许传入连接到端口80上的HTTPD。-mtcp--dport80-jACCEPT下面的示例/etc/sysconfig/iptables文件是允许SSH(端口22)和HTTPD(端口80)连接的IPTables最小规则的示例。*过滤器:输入接受[0:0]:转发接受[0:0]:输出接受[0:0]-A输入-m状态--状态相关,已建立-j接受-A输入-picmp-j接受-A输入-ilo-j接受#SSHD-A输入-ptcp-mstate--stateNEW-mtcp--dport22-jACCEPT#HTTP-A输入-ptcp-mstate--stateNEW-mtcp--dport80-jACCEPT#不匹配数据包的最终处置-AINPUT-jREJECT--reject-withicmp-host-prohibited-AFORWARD-jREJECT--reject-withicmp-host-prohibitedCOMMITinnew我需要在服务器主机上做的就是将上面代码片段的最后一行添加到/etc/sysconfig/iptables文件中的防火墙规则并重新加载修改后的规则集。iptables-restore/etc/sysconfig/iptables大多数基于RedHat的发行版,例如Fedora,都使用firewalld。我发现它对于预期的用例(例如家庭、中小型企业)来说太复杂了,所以我没有使用它。我建议您参考firewalld网页以将入站端口80添加到firewalld。您的防火墙及其配置可能与此不同,但最终目标是允许新Web服务器的端口80上的HTTPD连接。HTTPD配置在/etc/httpd/conf/httpd.conf文件中配置HTTPD。在Listen片段中设置IP地址,如下所示。我的新网络服务器IP地址是192.168.0.125。Listen192.168.0.125:80复制(要迁移的站点的)VirtualHost段并将其粘贴到新服务器上httpd.conf文件的末尾。迁移过程中只有两组数据需要迁移到新服务器——数据库本身和网站目录结构。将这两个目录打包成一个tar存档。光盘/变量;tar-cvf/tmp/website.tarwebsite1/cd/var/lib;tar-cvf/tmp/database.tarmysql/将两个tar文件复制到新服务器。我一般都是把这些文件放在/tmp里,就是放这种东西的目录。在新服务器上运行以下命令以将tar存档提取到正确的目录。光盘/变量;tar-xvf/tmp/website.tarcd/var/lib;tar-xvf/tmp/database.tar所有WordPress文件都在/var/website1下,因此无需在新服务器上安装它。无需在新服务器上执行WordPress安装过程。这个目录就是所有需要迁移到新服务器的目录。最后一步是启动(或重新启动)mysqld和httpd服务守护进程。WrodPress不是一项服务,因此不会作为守护进程启动。systemctl启动mysqld;systemctlstarthttpd启动后,你应该检查这些服务的状态。systemctl状态mysqld●mariadb.service-MariaDB10.5数据库服务器已加载:已加载(/usr/lib/systemd/system/mariadb.service;已启用;供应商预设:已禁用)活动:活动(运行)自周六2021-08-2114:03:44美国东部时间;4天前文档:man:mariadbd(8)https://mariadb.com/kb/en/library/systemd/过程:251783ExecStartPre=/usr/libexec/mariadb-check-socket(code=exited,status=0/SUCCESS)进程:251805ExecStartPre=/usr/libexec/mariadb-prepare-db-dirmariadb.service(code=exited,status=0/SUCCESS)进程:251856ExecStartPost=/usr/libexec/mariadb-check-upgrade(code=exited,status=0/SUCCESS)MainPID:251841(mariadbd)Status:"TakingyourSQLrequestsnow..."Tasks:15(limit:19003)Memory:131.8MCPU:1min31.793sCGroup:/system.slice/mariadb.service└─251841/usr/libexec/mariadbd--basedir=/usr8月21日14:03:43simba.stmarks-ral.orgsystemd[1]:正在启动MariaDB10.5数据库服务器...8月21日14:03:43simba.stmarks-ral.orgmariadb-prepare-db-dir[251805]:数据库MariaDB可能已在/var/lib/mysql中初始化已经,n>Aug2114:03:43simba.stmarks-ral.orgmariadb-prepare-db-dir[251805]:如果不是这种情况,请确保/var/lib/mysql在>Aug之前为空2114:03:44simba.stmarks-ral.orgmariadbd[251841]:2021-08-2114:03:440[Note]/usr/libexec/mariadbd(mysqld10.5.11-MariaDB)startin>8月21日14:03:44simba.stmarks-ral.orgsystemd[1]:启动了MariaDB10.5数据库服务器。systemctlstatushttpd●httpd.service-ApacheHTTP服务器已加载:已加载(/usr/lib/systemd/system/httpd.service;已启用;供应商预设:已禁用)插入:/usr/lib/systemd/system/httpd.service.d└─php-fpm.conf活跃:自美国东部时间星期六2021-08-2114:08:39开始活跃(运行);4天前文档:man:httpd.service(8)主PID:252458(httpd)状态:“请求总数:10340;空闲/忙碌工作人员100/0;请求/秒:0.0294;服务字节数/秒:616B/秒”任务:278(限制:19003)内存:44.7MCPU:2min31.603sCGroup:/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-DFOREGROUND8月21日14:08:39simba.stmarks-ral.orgsystemd[1]:启动ApacheHTTP服务器...8月21日14:08:39simba.stmarks-ral.orghttpd[252458]:AH00112:警告:DocumentRoot[/var/teststmarks-ral/html]不存在8月21日14:08:39simba.stmarks-ral.orghttpd[252458]:服务器已配置,侦听:端口808月21日14:08:39simba.stmarks-ral.orgsystemd[1]:已启动ApacheHTTP服务器。最后的修改是现在需要的服务已经在运行了,可以把HTT放在/etc/sysconfig/iptables文件中修改DP的防火墙规则为:-APREROUTING-d45.20.209.41/255.255.255.248-ptcp-mtcp--dport80\-jDNAT--to-destination192.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。我已经按照这个过程将许多网站从一台服务器迁移到另一台服务器,每次都没有问题。