DO 博客迁移 - aispin/mamboer.github.io GitHub Wiki

http://www.androiddev.net/migrate-from-bluehost-to-digitalocean/

最近,把自己的几个网站从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  [email protected]登录就可以了。

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

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

第二步: 一些必要的设置

2.1  设置Swap

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

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

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

设置Swap命令如下:

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

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

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

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

3.1 安装Apache

1 yum install httpd
2 service httpd start
3 chkconfig httpd on

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

3.2 安装Mysql

1 yum install mysql-server
2 service mysqld start
3 chkconfig mysqld on

安装完毕后,需要设置mysql root的密码并做相应的安全方面的设置,

1 /usr/bin/mysql_secure_installation

这个程序会让你设置root的密码, 移除anonymous用户, 设置是否允许root远程登录, 删除test这个数据库等操作。

3.3 安装PHP

1 yum install php php-mysql

3.4 测试
在/var/www/html中新建一个test.php的文件, 内容如下

1 <?php
2    phpinfo();
3 ?>

然后重启apache使刚才所有的设置生效

1 service httpd restart

在自己的浏览器上输入 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等方法。

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

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

4.2 设置并导入mysql数据
查看网站php源文件,找到相应的DbName, DbUser, Password等数据。
登录mysql:

1 mysql -u root -p

创建新的用户, 数据库,并赋予权限

1 CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
2 CREATE DATABASE  mydb;
3 GRANT ALL PRIVILEGES ON mydb.* to 'user'@'localhost';  

导入数据:

1 use mydb;
2 source import.sql;

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

4.3 配置Apache的virtual host
因为是多个网站放在一个Server上,下一步重点就是配置Apache,尤其是VirtualHost

1 cd /etc/httpd/conf.d
2 sudo vim vhosts.conf

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

1 NameVirtualHost *:80
2  
3 <VirtualHost *:80>
4     ServerAdmin [email protected]
5     DocumentRoot /var/www/aaa
6     ServerName www.aaa.com
7     ServerAlias aaaa.com
8     ErrorLog /var/www/aaa/error_log
9     CustomLog /var/www/aaa/access_log common
10 </VirtualHost>
11  
12 <VirtualHost *:80>
13     DocumentRoot /var/www/bbb
14     ServerName www.bbb.com
15     ServerAlias bbbe.com
16     ErrorLog /var/www/bbb/bbb_error_log
17     CustomLog /var/www/bbb/bbb_access_log common
18 </VirtualHost>

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

⚠️ **GitHub.com Fallback** ⚠️