最近,把自己的几个网站从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 服务器的安全等问题,在下一篇文章中再写吧。
Digital Ocean和Bluehost相比速度怎么样?你用的是5美元的吗?
比bluehost快很多! 用的是10美元的那个
楼主,想请问一下,或是用512M 内存方案的DO VPS来做外贸站,不用交易类的,会不会很慢很卡?
我使用1G的, 512用起来应该勉强也可以,但服务一多就不行了