Server 两台不同服务器上的站点

Server 两台不同服务器上的站点,server,synchronization,Server,Synchronization,我正在考虑从中国购买web服务器,以减少中国/中国用户的网站加载时间。问题是,如何在两个站点之间同步/保持相同的数据?编辑网站内容时,应将这些更改更新到中国服务器网站 服务器正在运行Linux、Apache和MySQL。网站正在使用WordPress 仅供参考,我已经在使用CDN,而且从中国开始,站点加载速度仍然太长。基本上,您的解决方案需要。。。 将http目录的全部内容从主服务器复制到中文服务器 将MySQL数据库的全部内容从主服务器复制到中文服务器 定期执行这些任务,无需手动干预 我可

我正在考虑从中国购买web服务器,以减少中国/中国用户的网站加载时间。问题是,如何在两个站点之间同步/保持相同的数据?编辑网站内容时,应将这些更改更新到中国服务器网站

服务器正在运行Linux、Apache和MySQL。网站正在使用WordPress

仅供参考,我已经在使用CDN,而且从中国开始,站点加载速度仍然太长。

基本上,您的解决方案需要。。。
  • 将http目录的全部内容从主服务器复制到中文服务器
  • 将MySQL数据库的全部内容从主服务器复制到中文服务器
  • 定期执行这些任务,无需手动干预
我可以指导你找到对每项任务都有帮助的参考资料,有时还可以给你举个简单的例子。然而,如果你想让它发挥作用,特别是如果你想优化这个过程,你就必须亲自查看参考资料

如果我不这样做的话,这个答案会变得比现在更可怕

在我们开始之前,你应该记住。。。 事情0-请不要被这个答案的长度吓倒

我知道我写了很多,也许比我应该写的要多,但我保证你能够在不超过一天的时间内实现这一点。我已经尽力做到彻底,但这并不意味着我所描述的内容特别复杂

事情1-在传输过程中关闭中文服务器

正如您可能已经猜到的那样,这种数据传输将使您的中文服务器在运行过程中无法使用。您需要确保您的中文服务器在传输过程中不运行。否则,服务器可能只有部分可用数据,这可能会导致客户端和服务器出现问题,特别是与MySQL相关的问题

第二件事-尽可能多地使用压缩

对于大量数据来说,压缩和解压缩可能非常耗时,相信我,与将未压缩数据发送到中国所浪费的时间相比,这算不了什么。网络使用率,而不是处理器时间,将真正成为快速完成传输的限制因素。尽可能发送压缩文件

第三件事-尝试使用校验和

发送所有数据,尤其是压缩格式的数据,将使其在传输过程中容易损坏。无论何时发送文件,我鼓励您对数据使用某种校验和,以验证数据是否已损坏。为了简单起见,我不会向您展示如何做到这一点,但我相信您足够聪明,能够想出如何在一些验证中使用胡椒粉

如果您不熟悉校验和,那么对它们的了解就相当直截了当了。最常用的是和,但两者都有点容易发生碰撞。我建议使用(也称为SHA-256/512)或全新的

正在将Http'd目录复制到中文服务器 据我所知(我可能错了),没有内置的方式将文件从一个Apache服务器传输到另一个Apache服务器……因此,您必须为此编写自己的脚本

您还需要有两个单独的脚本:一个用于主服务器,另一个用于中文服务器。下面是每个脚本需要做的工作的分解

在主服务器上…

  • 以Apache服务器的用户身份登录。()
  • zip/gzip/tar.gz您的http'd目录的内容。(……)
  • scp
    (安全复制)将压缩文件复制到中文服务器。确保将其复制到Apache运行时使用的用户名。()
  • 删除压缩文件
  • 启动中文服务器的脚本(这将在后面讨论)
  • 您可能会使用shell脚本来完成所有这些,因此我希望您熟悉终端。一个简单的例子如下所示

    #!/bin/sh
    
    ## First I'll define some variables to explain this better.
    
    APACHE_USER="whatever your Apache server's username is (usually it's www-data)";
    WWW_DIR="your http'd directory relative to ~ (usually it's /var/www)";
    CHINA_HOST="the host name/IP address of your Chinese server"
    CHINA_USER="Apache's username on the Chinese server";
    CHINA_PWD="Apache's user password on the Chinese server";
    CHINA_HOME="the home directory of the Apache user on your Chinese server";
    
    ## Now to the real scripting. I will be using zip for compression.
    
    su - "$APACHE_USER";
    zip -r copy.zip "$WWW_DIR";
    scp copy.zip "$CHINA_USER@$CHINA_HOST:$CHINA_HOME" < echo $CHINA_PWD;
    rm copy.zip;
    
    ## Then you initiate the next step of the process.
    ## Like I said this will be covered later.
    
    #/垃圾箱/垃圾箱
    ##首先,我将定义一些变量来更好地解释这一点。
    APACHE_USER=“无论您的APACHE服务器的用户名是什么(通常是www数据)”;
    WWW_DIR=“您的http'd目录相对于(通常是/var/WWW)”;
    CHINA\u HOST=“您的中文服务器的主机名/IP地址”
    CHINA\u USER=“中文服务器上的Apache用户名”;
    CHINA_PWD=“中国服务器上的Apache用户密码”;
    CHINA_HOME=“中文服务器上Apache用户的主目录”;
    ##现在来看看真正的脚本。我将使用压缩拉链。
    su-“$APACHE_用户”;
    zip-r copy.zip“$WWW_DIR”;
    scp copy.zip“$CHINA_USER@$CHINA_HOST:$CHINA_HOME”
    在您的中文服务器上…

  • 以Apache用户身份登录
  • 删除http'd目录的内容(可能是/var/www-relative-to~)
  • 解压缩scp文件(这将根据压缩方式而改变)
  • 将解压缩后的目录复制到http'd目录(如果选择使用zip压缩,则无需执行此步骤)
  • 已删除压缩的scp文件
  • 通知主服务器继续下一步(稍后将再次讨论)
  • 这是非常直截了当的,我不认为你需要为这一部分再举一个例子

    复制MySQL数据库内容 您可以在MySQL网站上找到一个很好的参考资料,了解如何在中执行此操作。基本上,复制数据库内容是一项内置功能尝试使用压缩选项

    定期执行这些任务,无需手动干预 这就是事情变得复杂的地方

    您需要知道的第一件事是如何在Linux上定期安排任务。这是通过名为
    crontab
    的命令行工具完成的。你可以去看看