Blog顺利完成搬家之Bandwagonhost VPS

搬家之前的一些感受

在Hostgator上顺利用了6年了,我是3年一续费,每次续费都贵一大截,这是欺负老客户么?!太蛋疼了,而且动态ip,什么功能都没有,真是心灰意冷:
痛定思痛,弃用Hostgator!经同事推荐,Bandwagonhost 速度不错,便宜,稳定,而且还是VPS,自由度很大,最好的是每年续费不涨钱:-) 所以我买了他们比较便宜的那款,年费在29美金/year(CN2),比 Hostgator便宜,速度还快!

Basic VPS - Self-managed - SPECIAL 10G KVM PROMO V3 - LOS ANGELES - CN2
SSD: 10 GB RAID-10
RAM: 512 MB
CPU: 1x Intel Xeon
Transfer: 500 GB/mo
Link speed: 1 Gigabit

Location: Los Angeles
Direct route via CN2 and China Unicom

VPS technology: KVM/KiwiVM
OS: 32 or 64 bit Centos, Debian, Ubuntu
Instant OS reload
IPv4: 1 dedicated address
IPv6 support: **No**
Full root access
Instant RDNS update from control panel
No contract, anytime cancellation
Strictly self-managed, no support
99.9% uptime guarantee

这是我第一次用VPS,整体感觉很酷,跟我自己搭建Server没什么区别,想装什么装什么!为了方便日后查阅,在这片文章里总结下整个搬家过程以及注意事项

备份WP和数据库

两种方法:

1. 直接把整个html的文件夹压缩donwload下来,这是Wordpess的备份;然后把Mysql的数据库通过Phpmyadmin导出备份

2. 通过Wordpress的插件来备份,BackUpWordPress,这个备份会包含Wordpress和Mysql,它只能备份,不会恢复,需要手动恢复

迁移Domain

这个VPS可以提供独立IP,我需要把原来的域名从Hostgator指向这个地址,进入我的域名 -> 管理DNS -> 在域名服务器中移除原来的配置并使用默认配置 -> 在记录里,设置A记录,指向IP就可以了。完成这样的设置后,你在用nslookup查看域名时,对应的地址就会是这个了


Server的基本配置

1. 为了SSH管理方便,可以把私钥导出来,然后在MacOS上安装,这样以后登录可以免认证,可以参考这篇文章:为VPS设置SSH Key并修改SSH端口

[root@host ~]# ssh-keygen -t rsa
......
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
[root@host:~root@host ~]# mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
[root@host:~root@host ~]# chmod 600 /root/.ssh/authorized_keys

-----copy id_rsa to macos and install-----
xxxx-M-Q4TL:xxxx$ ssh-add id_rsa

2. 安装必要的软件和配置,可以参考这篇文章:Add Existing SSH Key To OSX

[root@host ~]# hostnamectl set-hostname frank-vps
[root@host ~]# yum install net-tools #-> include ifconfig cmd
[root@host ~]# yum install bind-utils #-> include nslookup cmd

通过Docker部署Wordpress

由于这个VPS是全新的,什么也没有,所以我需要自己安装Wordpress和Mysql。那么采用什么方法比较方便?按常规来说可以通过安装LAMP,但要安装一堆东西,既然VPS比较自由,又加上我之前用Docker安装过OpenBMP,所以索性就选择了Docker,下面是总结,另外你也可以参考我在 stackoverflowdocker forums

1. 安装docker和docker-compose

不推荐独立用docker run xxx来部署了,由于我们需要多个docker,如wordpress,mysql和phpmyadmin,因此用docker-compose,这个工具可以方便的对多个docker进行管理,可以参考这边官方文档 Install Docker Compose

[root@frank-vps ~]# yum install docker-engine
[root@frank-vps ~]# curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@frank-vps ~]# chmod +x /usr/local/bin/docker-compose
[root@frank-vps ~]# systemctl start docker && systemctl enable docker <<< auto enable after reboot
[root@frank-vps ~]# docker-compose up -d

2. 注意关于docker里的“-p”参数

如果不配置端口映射,那么意思是不向外暴露端口,那么只能container自己用,即使你的宿主主机也不能用,这点一定要注意。另外如“-p 8080:80”,前面的8080是container的,也就是宿主主机要想访问container的80端口,要用8080来替代

3. 安装Wordpress,Mysql和Phpmyadmin

这些都可以在Compose的配置文件里列出,详细可以参考官方文档 Quickstart: Compose and WordPressDocker Hub Phpmyadmin,你可以看到我把mysql的数据库文件和wordpress的根目录都mapping到了宿主主机上,这样方便我后期维护

[root@frank-vps my_wordpress]# more docker-compose.yml
version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - ./mysql_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: xxxx
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - ./wordpress_data:/var/www/html
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_NAME: wordpress
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress

#   phpmyadmin:
#     depends_on:
#       - db
#     image: phpmyadmin/phpmyadmin
#     ports:
#       - "8080:80"
#     restart: always
#     environment:
#       PMA_HOST: db
#       PMA_USER: wordpress
#       PMA_PASSWORD: wordpress
volumes:
    db_data:

4. 注意Wordpress的配置

官方install guide中是没有“WORDPRESS_DB_NAME”的,为什么我要加一个这个参数,那是应为wordpress默认会找叫“wordpress”的数据库,如果你的数据库名字不是“wordpress”,那么一定要在这里指定

5. 在wordpress的container中装软件

不同container安装方法不同(因为不同的container可能用不同的linux),官方出的wordpress docker可以通过下面方法安装软件,zip(安装插件用)和mail(恢复密码用)功能

[root@frank-vps my_wordpress]# docker exec -it xxxxxxx bash
[root@xxxxxxx:/var/www/html# apt-get update
[root@xxxxxxx:/var/www/html# apt-get install zip
[root@xxxxxxx:/var/www/html# apt-get install mailutils

6. 关于Container的操作

由于我对container的文件做了映射,所以通过“docker-compose down” 是不能删除这些映射文件的,可以通过“docker-compose down –volumes”来移除这些信息。如果你用down来关闭container,那么除了映射文件不会丢失外,你对container进行的所有变更都会重置,所有你可以用stop

7. 对Container进行troubleshooting

这个很简单,启动如上所说,用“docker-compose up -d”,去掉“-d”,你就会看到所有container的启动过程及服务状态

恢复Wordpress

通过docker部署,环境已经就绪,那么接下来就是要恢复wordpress和mysql了。这个过程很简单,根据“./wordpress_data:/var/www/html”,直接删掉wordpress_data中的所有文件,然后把原有的wordpress系统文件解压到这个目录下,就可以了。对于mysql,可以用phpmyadmin来管理并导入恢复数据库,这个操作就不在这里阐述了。但有一点需要在这里强调下,当你恢复完后,游览没有任何问题,但更新插件和升级主题时遇到了下面的问题:

1. 升级插件需要zip和ftp,zip前面我们装过了,那么把ftp装上并设置下就可以了,下面是主要vsftp的配置信息

anonymous_enable=NO # 匿名和ftp账号都不能用,本地账号默认允许
local_root=/opt/my_wordpress/wordpress_data/ #根目录

2. 按照ftp后,需要告诉wp,他要找的目录在哪里,可以把下面这段配置放到“wp-config.php”的末尾,具体也可以参考这篇文章

define('FTP_BASE', '.');
define('FTP_CONTENT_DIR', './wp-content');
define('FTP_PLUGIN_DIR', './wp-content/plugins/');
define('FTP_THEMES_DIR', './wp-content/themes/');
define('FS_METHOD', 'direct');

3. 文件夹的权限和用户组的问题,Wordpress的权限不是随便设置的,文件和文件夹的权限是不同的,具体可以参考 WordPress 安装,文件夹权限设置,用docker安装后,我们可以看到docker里的用户和组是33:

root@xxxxxx:/var/www/html# ls -l
total 157864
drwxr-xr-x  2 www-data www-data      4096 Oct 10  2011 cgi-bin
-rw-r--r--  1 www-data www-data  27640326 Oct 17 10:19 database-zhaocs-info-1508235393.sql
-rw-r--r--  1 www-data www-data   1449522 Dec  8  2016 error_log
......

root@xxxxxx:/var/www/html# cat /etc/passwd |grep www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

所以在mapping后的文件和文件夹中,最好也是这个,通过下面命令来改变所有者

chown -R 33:33 wordpress_data

所有者改后,我们需要纠正文件和文件夹的权限

chmod 755 wordpress_data
find wordpress_data -type d -exec chmod 755 {} \;
find wordpress_data -iname “*.php” -exec chmod 644 {} \;

VPS 安全策略

。。。

anyShare分享到:
你可以留言,或者trackback 从你的网站

留言哦