欢迎访问我的博客,你的支持,是我最大的动力!

WordPress博客迁移到阿里云并使用Docker驱动

Docker 小马奔腾 16072℃ 评论
目录:
[显示]

将本地的wordpress博客程序迁移到阿里ECS云服务器,并使用docker来驱动。通常,在博客建立的初期,通常会在本地电脑上先跑一个测试版本,当把样式、版式等调试好了之后,便会将代码部署到服务器上。那么,如何进行迁移呢?这里,我说说我的经验。

wordpress程序对环境的要求如下:

  1. PHP 5.2.4或更新版本
  2. MySQL 5.0或更新版本
  3. Apache mod_rewrite模块(可选,用于支持“固定链接”和“站点网络”功能)

要满足这个条件还是很容易的,常用的是使用LAMP这样的集成环境,阿里云也有PHP的集成环境镜像。LAMP有一键安装包,有兴趣可以去了解下,安装也很简单。如果要自己一个一个安装,也可以,不过就是麻烦一点。我这里不使用这种方法。我使用的方法是使用Docker。Docker是一个开源的应用容器引擎,可以让我们将需要运行的程序部署到可移植的容器中,类似于虚拟机,但是更轻量,性能也非常不错,并且可以非常灵活且快速的部署到任何流行的Linux主机上。容器之间使用沙箱机制,不同的容器之间相互独立。使用Docker的优点是,我觉得是可以让服务器更干净一点,不用因安装各种程序把服务器弄得乱七八糟。

在CentOS7.2上部署Docker环境

前期准备

因为是新的CentOS7.2,这里先更新一下系统,并开启SELinux,并优化一下sshd参数。当然,这几个项目不是Docker部署的必要条件,但是这几个是我需要的,所以这里我操作一下。

更新系统

更新系统可以使所有软件保持最新版本,减少老软件存在bug和漏洞的风险。命令如下:

yum update -y

开启SELinux

开启SELinux会让你的系统更加的安全,它默认采取的是最小化权限的设计理念,让进程只能访问在任务中所需要的文件。这种强制访问控制是由美国国家安全局开发出来的,可以极大的提升系统安全性,但是开启这个功能后,在系统使用中经常会遇到权限不足的问题,不是很方便,所以通常都是关闭的。阿里云提供的CentOS中默认也是关闭的。

先检查一下当前系统中SELinux是否开启:

getenforce

如果返回的是Enforcing,则说明是开启的。

要开启SELinux,需要修改配置文件/etc/selinux/config

vim /etc/selinux/config

将SELINUX=disabled修改为SELINUX=enforcing

再切换到根目录

cd /

touch /.autorelabel

这句的意思是重启后新建标签,然后重启系统

reboot

调整sshd参数

阿里的服务器ssh连接时,如果不操作,很快就会断开连接,再输入命令就要重新连接,这一点很不方便,所以这里调整一下超时的时间。

vim /etc/ssh/sshd_config

找到:

#ClientAliveInterval 0          //超时时间,单位为秒,表示不操作键盘多少秒后超时

#ClientAliveCountMax 3     //超时次数,单位为次,允许超时的次数,如果客户端没有响应,则判断一次超时

并修改为:

ClientAliveInterval 30

ClientAliveCountMax 20

这样,超时时间为30秒,超时次数为10次,这样最长可以有30*20=600秒(10分钟),即10分钟没有键盘超作即断开连接。

配置CentOS防火墙

systemctl start firewalld      //启动防火墙

systemctl enable firewalld       //配置开机启动防火墙

firewall-cmd --permanent --zone=public --add-service=http       //在外网网口(默认为public区域)开放http服务

firewall-cmd --zone=trusted --change-interface=docker0 --permanent     //将docker的网桥添加到可信区域,对docker0的流量不做限制,因为他是私网IP

firewall-cmd --reload     //让配置生效

至此,防火前配置完成

前置条件

安装Docker需要系统为64位系统,且内核(kernel)版本需要大于3.10,并且运行安装需要root权限。

 

uname -i     //查看系统架构

x86_64

uname -r     //查看内核版本

3.10.0-514.26.2.el7.x86_64

 

添加yum仓库

执行命令:

 

 

这条命令实际是在/etc/yum.repos.d/目录下生成一个文件docker.repo,使用vim手动输入也是可以的。

安装Docker

yum install -y docker-engine

这条命令会安装Docker,由于Docker的官网在国外,所以国内安装会比较慢。

启动Docker

Docker分客户端和服务端,安装完成后,需要手动启动并设置为开机启动Docker服务

systemctl start docker     启动Docker

systemctl enable docker    设置开机启动

docker version

Client:
Version: 17.05.0-ce
API version: 1.29
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 22:06:25 2017
OS/Arch: linux/amd64

Server:
Version: 17.05.0-ce
API version: 1.29 (minimum version 1.12)
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 22:06:25 2017
OS/Arch: linux/amd64
Experimental: false

 

看到类似的输入,则说明Docker已经安装完成。

迁移Wordpress文件并上传到服务器

在服务器建立网站及数据库目录

mkdir -p /webdata/www     //用来存放网页文件

mkdir -p /webdata/db        //用来存放mysql数据库

将网站文件传到/webdata/www目录,并将本机数据库导出为sql文件,备用。

修改wordpress配置文件

wordpress的迁移,需要修改网站跟目录下的wp-config.php文件,主要是更改数据库连接参数。

 

这个文件里面自带中文注释,非常方便,这里将数据库用户名、数据库密码、数据库名、数据库主机等根据服务器的规划修改好。

注意:数据库主机我填的是'mysql',这里原本应该是IP地址,但是因为是使用Docker,所以,这里填mysql容易的标签。

另外,因为我的wordpress站使用了WP Super Cache,而这个插件还需要额外两处修改。第一个就是网站跟目录的wp-config.php文件,我这里是第24行,如上图,把路径修改为现在的(图中是错误的,不是宿主机的目录,而是容器内的目录,应为:/var/www/html/wp-content/plugins/wp-super-cache/);另外一个地方是/wp-content/wp-cache-config.php,位置在43行,修改为:

$cache_path =  '/var/www/html/wp-content/cache/';

修改完成,配置文件部分就OK啦。

导出数据库

将wordpress本机的数据库导出,这里,我用的是phpmyadmin,导出成一个sql文件。需要注意的是,导出的数据库文件需要修改两个值。就是网站的域名或者是IP,我因为是本机测试,写的是IP,所以需要把这个IP改成服务器的IP或者域名,否则还原后,后台会跳回原来那个IP的地址。

我这是这样的:

 

INSERT INTO wp_options (option_id, option_name, option_value, autoload) VALUES

(1, 'siteurl', 'http://192.168.10.19', 'yes'),

(2, 'home', 'http://192.168.10.19', 'yes'),

 

把这个地址改成服务器的。

这里,我将导出的数据库文件放到这里:/root/wordpress.sql

部署Docker容器

这里,我们在服务器上开始部署Docker容器。

拉取mysql和wordpress镜像

这里我需要使用到两个镜像,一个是mysql的镜像,一个是wordpress的镜像。因为直接从Docker官网拉镜像因为网速原因,基本拉不下来,这里使用163的镜像中心拉。163的镜像中心需要注册登录才能打开,所以提前先去163注册一个帐号。

在服务器中执行以下命令,拉取镜像。

docker pull hub.c.163.com/library/wordpress:4.8.0-php5.6-apache

docker pull hub.c.163.com/library/mysql:latest

docker images      //查看拉下来的镜像

将镜像跑起来

注意,需要先启动mysql,再启动wordpress,否则wordpress启动不了,因为wordpress是连接到mysql的。

查看运行中的容器:docker ps

可以看到,两个容器都跑起来了。

登录容器mysql还原数据库

将wordpress.sql复制到挂载目录/webdata/db

cp ~/wordpress.sql /webdata/db

登录到容器mysql内部,还原数据库wordpress:

docker exec -it mysql bash    //连接到容器的bash,

新建数据库wordpress:

mysql -uroot -p      //进入mysql命令行

mysql> create database wordpress;      //创建空数据库wordpress

exit         //退出mysql命令行界面

mysql -uroot -pmysqlpassword wordpress < /var/lib/mysql/wordpress.sql      //还原数据库

登录到容器wordpress修改网页文件属主

cd /var/www/html    //切换到网站跟目录

chown -R www-data:www-data *       //修改所有文件的用户及用户及用户组分别为www-data www-data

查看容器运行状态

1、查看运行状态及容器ID

docker ps        //查看运行中的容器

docker ps -a    //查看所有容器,包括未运行的

2、查看容器负载

docker stats +容器名/ID

此命令可显示容器CPU负载,内存使用/限额,内存占用率,网络IO,磁盘IO和总进程数:

 

CONTAINER  CPU %  MEM USAGE / LIMIT MEM % NET I/O              BLOCK I/O PIDS

mysql            0.04%   204.5MiB / 992.6MiB 20.61%  76.8kB / 846kB   1.96MB / 12.7MB 28

wordpress     0.00%   73.19MiB / 992.6MiB 7.37%    870kB / 198kB    2.63MB / 0B 9

 

3、查看容器配置信息

docker inspect +容器名/ID

4、查看容器网络连接情况

docker inspect -f '{{.State.Pid}}'  +容器名/ID        //获取容器Pid

nsenter -t 16575 -n netstat -ltuna      //其中16575为获取到的容器Pid,-n指的是进入容器的网络命名空间,后面是完整的netstat命令

停止/暂停/重启/启动/删除容器

docker stop/pause/restart/start +容器名/ID      //停止/暂停/重启/启动容器

docker rm +容器名/ID     //删除容器,未运行的

docker rm -f +容器名/ID      //强制删除容器,包括运行中的

docker rmi +镜像名      //这个是删除镜像文件

至此,操作完成!

 

 

 

转载请注明:轻风博客 » WordPress博客迁移到阿里云并使用Docker驱动

喜欢 (0)or分享 (0)