把自己的网站从Bluehost迁移到Digital Ocean的VPS的全过程

By | 2014/04/18

最近,把自己的几个网站从Bluehost上迁移到了Digital Ocean的VPS上,因为涉及 页面文件,数据库, WordPress等几个方面的迁移,写个日志记录下来整个过程,如果以后再次迁移的话,也是个很好参考。

第一步: 购买并开通Digital Ocean的云VPS。

进入Digital Ocean 网站,注册后,会进入后台控制台。DigitalOcean的虚拟机被称为 Droplet,   点击”Create”, 选择plan, location, OS等。我选的是最便宜的512M的plan,  San Francisco的机房, CentOS 32bit的操作系统 。 需要注意的是:目前 DigitalOcean的自动备份只能在创建Droplet的时候选择是否enable, 创建后就不能改动了!当然这个Backup的功能并不是免费的,需要付额外20%的费用。我个人建议一般用户应该选中那个 “Backup”的选项,让DigitalOcean给你自动进行异地备份。 当然如果你有多个服务器,并可以通过rsync, Bacula等脚本或工具自动备份到你另外的服务器上,也可以完全自己来实现 realtime的backup.

Droplet创建成功后,你会收到一封带有root用户密码的邮件。 通过SSH  root@111.111.111.111登录就可以了。

登录后就是修改root的password, 增加新的sudoer,  命令基本就是这几个:

[code]

passwd
useradd  anotherUser
passwd anotherUser
vi /etc/sudoers  (把新的用户 设置成sudoer)

[/code]

第二步: 一些必要的设置

2.1  设置Swap

缺省的情况下,DigitalOcean的VPS中是没有设置swap的。

用df查看的话,可以看到整个VPS上只有一个20G的分区

用free查看的话, Swap的大小是0

设置Swap命令如下:

[code]

dd if=/dev/zero of=/.SWAP bs=1M count=1024
mkswap /.SWAP
swapon /.SWAP

[/code]

这时用 free 和swapon -s 就可以查看到有个1G的swap

第三步: 安装Apache(或者Nginx), MySql, PHP并设置

缺省的情况下,DigitalOcean的服务器上,Apache, MySql, PHP都是没有安装的。

3.1 安装Apache
[code]
yum install httpd
service httpd start
chkconfig httpd on
[/code]

安装完毕后,在你的浏览器中输入服务器的ip地址,会出现 “Apache 2 Test page”的页面, 就算成功了

3.2 安装Mysql
[code]
yum install mysql-server
service mysqld start
chkconfig mysqld on
[/code]

安装完毕后,需要设置mysql root的密码并做相应的安全方面的设置,
[code]
/usr/bin/mysql_secure_installation
[/code]
这个程序会让你设置root的密码, 移除anonymous用户, 设置是否允许root远程登录, 删除test这个数据库等操作。

3.3 安装PHP
[code]
yum install php php-mysql
[/code]

3.4 测试
在/var/www/html中新建一个test.php的文件, 内容如下
[code]
<?php
phpinfo();
?>
[/code]

然后重启apache使刚才所有的设置生效
[code]
service httpd restart
[/code]

在自己的浏览器上输入 http://111.111.111.111/test.php, 看看显示的信息是否正确。

至此, LAMP全部安装完成。

第四步:迁移mysql数据库和网站文件

4.1 从原网站导出Web文件和Mysql数据
用FileZilla连接Bluehost的空间, 把整个Web目录都下载到本地。
登录Bluehost的cPanel, 使用其PhpMyAdmin把数据库数据导出到本地

4.2 上传数据到新的DigitalOcean服务器
上传数据方法有: scp, ftp(vsftp), sftp, rsync等方法。

[code]scp -r localDir user@111.111.111.111:~ [/code]

如果使用sftp, sftp有个问题:无法传送目录,最简单的解决方法就是使用FileZilla, FileZilla 完美支持sftp (SSH协议)

所有数据都上传后,把数据移动到/var/www下面
[code][/code] mv mywebsite /var/www

4.2 设置并导入mysql数据
查看网站php源文件,找到相应的DbName, DbUser, Password等数据。
登录mysql:
[code] mysql -u root -p [/code]
创建新的用户, 数据库,并赋予权限
[code]
CREATE USER ‘user’@’localhost’ IDENTIFIED BY ‘password’;
CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON mydb.* to ‘user’@’localhost’;
[/code]
导入数据:
[code]
use mydb;
source import.sql;
[/code]

导入数据完毕后,可以用show tables; select 语句等进行验证。

4.3 配置Apache的virtual host
因为是多个网站放在一个Server上,下一步重点就是配置Apache,尤其是VirtualHost
[code]
cd /etc/httpd/conf.d
sudo vim vhosts.conf
[/code]

vhosts的内容基本如下:(注意,最好是把virtual host的配置放到/etc/httpd/conf.d中的一个单独的文件中,不要放在主 http.conf中)
[code]
NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin jerry@aaa.com
DocumentRoot /var/www/aaa
ServerName www.aaa.com
ServerAlias aaaa.com
ErrorLog /var/www/aaa/error_log
CustomLog /var/www/aaa/access_log common
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /var/www/bbb
ServerName www.bbb.com
ServerAlias bbbe.com
ErrorLog /var/www/bbb/bbb_error_log
CustomLog /var/www/bbb/bbb_access_log common
</VirtualHost>
[/code]

关于CentOS 服务器的安全等问题,在下一篇文章中再写吧。

4 thoughts on “把自己的网站从Bluehost迁移到Digital Ocean的VPS的全过程

    1. Jerry Wang Post author

      比bluehost快很多! 用的是10美元的那个

      Reply
  1. brotherlegend

    楼主,想请问一下,或是用512M 内存方案的DO VPS来做外贸站,不用交易类的,会不会很慢很卡?

    Reply
    1. Jerry Wang Post author

      我使用1G的, 512用起来应该勉强也可以,但服务一多就不行了

      Reply

Jerry Wang进行回复 取消回复

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据