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安装

我们将使用sshrsync进行文件传输。使用以下命令确保你的 DigitalOcean VPS 上安装了 rsync

rsync --version

如果此命令返回“command not found”,则需要使用 apt-get 安装 rsync:

VPS 服务器之间的通信

以下步骤将在你的旧 VPS 上进行。如果你还没有登录,请以 root 身份登录。

你的旧 VPS 同样需要安装 rsync。

为了将相关信息从我们旧VPS传输到我们的DigitalOcean云服务器,rsync需要能够从我们的旧服务器登录到我们的新服务器。我们将使用 SSH 来完成此操作。

如果你的旧 VPS 上没有生成 SSH 密钥,请立即使用以下命令创建它们:

根据要求回答提示。按“Enter”键完成所有提示以接受默认值。

接下来,使用以下命令将 SSH 密钥传输到我们的新 VPS。将IP地址部分更改为你在 DigitalOcean VPS IP 地址:

传输站点文件

首先,我们将旧服务器的 Web 根目录中的文件传输到新的云服务器。我们将通过检查配置文件来找到 WordPress Web 根目录的位置。我们查看启用站点的目录以查找正确的 VirtualHost 文件:

在这里,我们的文件名为“li606-185.members.linode.com”,但你的文件可能有所不同。在nano中打开文件:

我们要找到“DocumentRoot”行来告诉我们我们的网络内容是从哪个目录提供的。在我们的示例中,该行内容为:

关闭文件并 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

这会生成两个文件之间所有差异的列表。你可以从旧设置中合并某些配置选项,也可以修改或放弃其他配置选项。