DigitalOcean云服务器初步配置
在本指南中,我们将演示如何将简单的 WordPress 博客从 Linode 传输到 DigitalOcean 云服务器。AWS和阿里云的迁移方法,与本文一致。本文以Linode为例。
LAMP 堆栈安装
首先,你需要在 DigitalOcean 云服务器上安装 LAMP(Linux、Apache、MySQL、PHP)堆栈。这可以通过几种不同的方式来完成。
在 Ubuntu 上启动并运行 LAMP 的最简单方法是在创建 Droplet 时选择预配置的“LAMP on Ubuntu””镜像。在 Droplet 创建页面的“Select Image”部分中,选择“Applications”选项卡。选择“LAMP on Ubuntu 14.04。
Rsync安装
我们将使用ssh和rsync进行文件传输。使用以下命令确保你的 DigitalOcean VPS 上安装了 rsync
rsync --version
如果此命令返回“command not found”,则需要使用 apt-get 安装 rsync:
rsync:apt-get
VPS 服务器之间的通信
以下步骤将在你的旧 VPS 上进行。如果你还没有登录,请以 root 身份登录。
你的旧 VPS 同样需要安装 rsync。
为了将相关信息从我们旧VPS传输到我们的DigitalOcean云服务器,rsync需要能够从我们的旧服务器登录到我们的新服务器。我们将使用 SSH 来完成此操作。
如果你的旧 VPS 上没有生成 SSH 密钥,请立即使用以下命令创建它们:
ssh-keygen -t rsa -b 4096 -v
根据要求回答提示。按“Enter”键完成所有提示以接受默认值。
接下来,使用以下命令将 SSH 密钥传输到我们的新 VPS。将IP地址部分更改为你在 DigitalOcean VPS IP 地址:
ssh-copy-id 111.222.333.444
传输站点文件
首先,我们将旧服务器的 Web 根目录中的文件传输到新的云服务器。我们将通过检查配置文件来找到 WordPress Web 根目录的位置。我们查看启用站点的目录以查找正确的 VirtualHost 文件:
cd /etc/apache2/sites-enabled
LSli606-185.members.linode.com
在这里,我们的文件名为“li606-185.members.linode.com”,但你的文件可能有所不同。在nano中打开文件:
nano li606-185.members.linode.com
我们要找到“DocumentRoot”行来告诉我们我们的网络内容是从哪个目录提供的。在我们的示例中,该行内容为:
DocumentRoot /srv/www/li606-185.members.linode.com/public_html/
关闭文件并 cd 进入该目录:
cd /srv/www/li606-185.members.linode.com/public_html/ ls -F
输出
latest.tar.gz wordpress/
如你所见,我们有一个 WordPress 网站目录。这包含我们网站的所有网络内容。
我们将把整个目录及其权限和子目录从该位置传输到 DigitalOcean 云服务器的 Web 根目录中。默认情况下,Ubuntu 14.04 上的 apache2 从“/var/www/html”提供内容,因此这就是我们放置此内容的位置。
我们将为 rsync 添加一些选项,以便其正确传输。“-a”选项代表存档,它允许我们递归传输,同时保留许多底层文件属性,例如权限和所有权。
我们还使用“-v”标志进行详细输出,并使用“-P”标志来显示传输进度并允许 rsync 在出现传输问题时恢复。
rsync -avP wordpress 111.222.333.444 :/var/www/html/
请注意“wordpress”后面没有尾部斜杠,但“/var/www/html/”中有尾部斜杠。这会把“wordpress”目录本身传输到目的地,而不仅仅是传输目录内容。
我们的整个 WordPress 目录结构现在已转移到新云服务器的 Web 根目录。
此时,如果我们将 Web 浏览器定向到新云服务器的 IP 地址并尝试访问我们的 WordPress 站点,我们将收到 MySQL 错误:
111.222.333.444/wordpress
Error establishing a database connection
这是因为 WordPress 的MySQL 数据库还没有传过来。接下来我们将处理 MySQL 传输。
MySQL 数据库传输
传输 MySQL 数据库的最佳方法是使用 MySQL 的内部数据库转储实用程序。首先,我们将查看需要转储哪些数据库。登录MySQL:
cd mysql -u root -p
输入数据库管理员的密码以继续。使用以下命令列出 MySQL 数据库:
show databases;
+——————–+ | Database | +——————–+ | information_schema | | mysql | | wordpress | +——————–+ 3 rows in set (0.00 sec)
我们想传输我们的“wordpress”数据库,其中包含我们的站点信息,以及我们的“mysql”数据库,它将传输我们所有的用户信息等。“information_schema”只是数据结构信息
了解下一步要传输哪些数据库。退出MySql:
exit
我们将使用“mysqldump”转储数据库信息,然后使用“bzip2”压缩它。我们将使用许多参数来使我们的数据库干净地导入。将’mysql’替换为你的数据库名称:
mysqldump -u root -p -QqeR --add-drop-table --databases mysql wordpress | bzip2 -v9 -> siteData.sql.bz2
再次输入数据库管理员的密码以继续。
现在我们有了一个压缩的数据库文件,可以将其传输到新的云服务器。我们将再次使用 rsync。将 IP 地址以更换为你的 DigitalOcean 服务器 IP 地址:
rsync -avP siteData.sql.bz2 111.222.333.444 :/root
导入数据库
我们的数据库文件被压缩并传输到我们新的 DigitalOcean 云服务器。我们必须将其导入新服务器上的 MySQL,连接WordPress 。
以 root 身份登录 DigitalOcean 云服务器,执行以下步骤。
我们的数据库文件已传输到 root 用户的主目录,因此现在移动到该目录。我们将使用“bunzip2”解压缩文件:
cd /root bunzip2 siteData.sql.bz2
现在我们可以将该文件导入到新的 MySQL 数据库中:
mysql -u root -p < siteData.sql
让我们检查一下 MySQL 是否已正确导入:
mysql -u root -p show databases;
+——————–+ | Database | +——————–+ | information_schema | | mysql | | performance_schema | | test | | wordpress | +——————–+ 5 rows in set (0.00 sec)
如你所见,我们的“wordpress”数据库已存在。之前的“mysql”数据库已替换为我们旧 VPS 中的数据库。
退出 MySQL:
exit
现在我们将重新启动我们的数据库和服务器以达到良好的效果:
service mysql restart service apache2 restart
现在,如果我们导航到 DigitalOcean VPS IP 地址,后跟“/wordpress”,我们将看到之前托管在旧 VPS 上的 WordPress 网站:
111.222.333.444 /wordpress
测试检查
在将域名更改为指向新站点位置之前,进行测试非常重要。
最好参考旧 VPS 上运行的服务,然后检查配置文件。你可以通过登录并输入以下内容来查看旧 VPS 上运行的服务:
netstat-plunt
cd /etc/apache2/sites-enabled
LSli606-185.members.linode.comActive Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 13791/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 10538/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 13963/master tcp6 0 0 :::80 :::* LISTEN 13771/apache2 tcp6 0 0 :::22 :::* LISTEN 10538/sshd udp 0 0 0.0.0.0:68 0.0.0.0:* 2287/dhclient3
在这里,我们可以看到最后一列中我们要在新服务器上配置的服务。你的列表可能会有所不同。
每个服务都有自己的配置语法和配置位置,因此你需要根据具体情况检查文档。
举个例子,如果我们想在新的 VPS 上复制 SSH 守护进程的配置,我们可以使用 rsync 将配置文件传输到新 VPS 的主目录:
rsync -avP /etc/ssh/sshd_config 111.222.333.444 :/root
不同版本的程序可能会引入语法变化。特定于旧 VPS 的配置选项也可能会出现问题。需要更改引用主机名、IP 地址或文件路径的选项来进行新设置。
检查文件的差异会更安全,你可以根据需要调整新云服务器的本机配置文件。
有许多不同的程序可以提供两个文件之间的差异。一种是简单的diff:
diff /root/sshd_conf /etc/ssh/sshd_config
这会生成两个文件之间所有差异的列表。你可以从旧设置中合并某些配置选项,也可以修改或放弃其他配置选项。