Wordpress 容器化、HTTPS化全攻略

栏目: 服务器 · 发布时间: 6年前

内容简介:大家可能都在用Wordpress写博客,之前都都是买个VPS部署一个一键L/WAMP程序完成整个部署,部署可能也容易但是操作比较费劲。前两天虫虫的博客VPS出问题导致数据丢失,需要重新部署,在这次部署中为了追求完美使用了docker容器方式并对网站升级使用全站HTTPS的方式进行部署,站点支持TLS 1.3协议以最大程度提高性能,本文虫虫就给大家介绍整个部署的全过程供大家参考优化。站点采用Docker方式部署,使用两个容器一个是mysql 5.7数据库容器,一个是apache(2.4.25)、php(7.3

大家可能都在用Wordpress写博客,之前都都是买个VPS部署一个一键L/WAMP程序完成整个部署,部署可能也容易但是操作比较费劲。前两天虫虫的博客VPS出问题导致数据丢失,需要重新部署,在这次部署中为了追求完美使用了 docker 容器方式并对网站升级使用全站HTTPS的方式进行部署,站点支持TLS 1.3协议以最大程度提高性能,本文虫虫就给大家介绍整个部署的全过程供大家参考优化。

Wordpress 容器化、HTTPS化全攻略

概述

站点采用Docker方式部署,使用两个容器一个是 mysql 5.7数据库容器,一个是apache(2.4.25)、php(7.3.6),Wordpress(5.2.2)容器,容器部件都是最新版本。为了安全连个容器都映射到宿主机127.0.0.1端口不直接对外提供服务。宿主机上部署nginx最新版本1.17反向代理到容器,nginx对外提供https服务:使用TLS 1.3协议,证书是从Let's Encrypt申请免费SSL,可以一键申请证书并且免费3个月更新。整个架构结构如下:

Wordpress 容器化、HTTPS化全攻略

VPS和容器环境准备

基础VPS环境是centos 7.2,默认是vi我们先将它换成vim

yum install vim 

挂载VPS数据盘

初始化VPS数据盘,注意该盘为外挂的盘VPS变化重新初始化时候数据不会丢失,一般为sdb,比如虫虫的盘,60G

Wordpress 容器化、HTTPS化全攻略

创建分区并格式化

fdisk /dev/sdb 
mkfs.ext4 /dev/sdb1 

挂载,挂载目录我们设为/data

mkdir /data 
mount /dev/sdb1 /data 

修改/etc/fstab实现重启自动挂载:

通过dumpe2fs或者blkid查看磁盘UUID

d179868b-6fb9-414c-8901-b990f7c586bd 
Wordpress 容器化、HTTPS化全攻略
echo 'UUID="d179868b-6fb9-414c-8901-b990f7c586bd" /data ext4 defaults 0 0' >>/etc/fstab 

mount –a测试fstab配置,如果没提示表示正确,如果有错误会显示,比如我们给UUID前面加个1,测试信息如下:

Wordpress 容器化、HTTPS化全攻略

更换防火墙关闭selinux

系统其默认的防火墙firewalld,先将其修改为比较熟悉称手的iptables:

yum install iptables iptables-services 
systemctl disable firewalld 
systemctl stop firewalld 
systemctl enable iptables 
systemctl start iptables 

selinux配置太复杂,我们先暂时关闭(在正式生产环境不建议该操作):

setenforce 0 

为了一直关闭,需要修改其配置文件,这样重启后就不会再加载。方法

perl -i -lpe 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 

更改ssh安全配置

为了VPS已经修改掉系统默认的ssh 22端口,并且禁止root登陆,方法修改/etc/ssh/sshd_config,查找Port去掉其前面的注释#号,并把22修改为其他端口,比如12322:

Port 12322 

增加一行" PermitRootLogin no"禁止root登陆:

Wordpress 容器化、HTTPS化全攻略

事先添加证书登陆,然后禁止密码登录方式"PasswordAuthentication no":

Wordpress 容器化、HTTPS化全攻略

防火墙开启新sshd端口,并删掉22端口

iptables -I INPUT -p tcp -m state --state NEW -m tcp -dport 12322 -j ACCEPT 

重启sshd服务

systemctl restart sshd.service 

用新端口证书方式访问服务器,如果没有问题:

删掉22端口

iptables -D INPUT -p tcp -m state --state NEW -m tcp -dport 22 -j ACCEPT 

保存防火墙规则

systemctl save sshd.service 

添加epel和源管理工具

yum install epel-releaseyum install -y yum-utils 

docker和容器部署

添加docker源

Wordpress 容器化、HTTPS化全攻略

安装docker服务

yum install docker-ce docker-compose 
systemctl enable docker  
systemctl start docker  

启用docker过程中报了一个错误"SELinux is not supported with the overlay2 graph drive...false",原因是 linux 的内核中的SELinux不支持 overlay2 graph drive,解决方法,修改docker配置文件/etc/sysconfig/docker修改--selinux-enabled为--selinux-enabled=false

Wordpress 容器化、HTTPS化全攻略

还有一个典型错误如下:

Wordpress 容器化、HTTPS化全攻略

fatal msg="Error starting daemon: error initializing graphdriver: "/var/lib/docker" contains several valid graphdrivers: devicemapper, overlay; Please cleanup or explicitly choose storage driver (-s )"是由于docker初始化数据有问题导致,只需清理/var/lib/docker/目录下文件

"rm -rf /var/lib/docker/",然后重启就OK了

拉取docker应用镜像

docker pull wordpress 
docker pull mysql:5.7.25 

迁移docker数据目录

systemctl stop docker.service 
mv /var/lib/docker /data/docker 

vim /usr/lib/systemd/system/docker.service 查找ExecStart给其参数增加:

"--graph /data/docker":

Wordpress 容器化、HTTPS化全攻略

重新加载配置文件

systemctl daemon-reload 

重启docker服务

systemctl restart docker.service 

创建应用数据目录

首先是数据库mysql目录:

mkdir -p /data/web/data 
chown -R 999:999 /data/web/data 

网站目录:

mkdir /data/web/webapps 
chown -R 33:33 /data/web/webapps 

启动应用容器

mysql容器:

docker run --name mysql -h mysql  
--restart=always  
-e MYSQL_ROOT_PASSWORD=wp12345  
-p 127.0.0.1:13306:3306  
-v /data/web/data:/var/lib/mysql  
-d mysql:5.7.25 

注意上面加重的参数表示mysql的root初始化密码,需要根据实际修改。

wordpress应用容器

docker run -h wordpress --name wordpress  
--restart=always  
--link mysql:mysql  
-p 2880:80  
-v /data/web/webapps:/var/www/html  
-d wordpress 

注意上面黑体表示连接到mysql容器,注意两个服务启动顺序,现有mysql,wordpress放弃才能连接到这个数据库,在宿主机上映射的端口为2880。

数据迁移

以上两个个容器启动后,wordpress部署就完全完成,现在通过浏览器访问

http://ip:2880就可以访问到wordpress安装界面了。

就可以通过web安装wordpress和配置了。

Wordpress 容器化、HTTPS化全攻略

有可能报错数据库连接错误:

Wordpress 容器化、HTTPS化全攻略

提示信息表示数据库服务没有创建wordpress数据库,这时候需要连接到mysql容器:

docker exec -it mysql /bin/bash 

在容器中执行mysql -uroot -p 输入上面我们设置mysql密码,wp12345

在mysql命令行创建一个数据库wordpress

create database wordpress;

然后再访问就可以了

Wordpress 容器化、HTTPS化全攻略

注意该处保存好系统给你设置的密码,或者修改为自己的密码。

进过以上步骤,一个全新版本的wordpress服务就可以:

Wordpress 容器化、HTTPS化全攻略

安装好后需要迁移历史数据,最主要是两部分数据:数据库数据和上传的文件数据。

上传文件数据迁移:

这部分迁移很简单把以前保存的目录中的wp-content下的uploads目录复制过来所有上传数据就ok了。

数据库迁移:

数据库迁移,如果wordpress版本相同,可以直接把以前保存的数据文件导入到新数据库就可以。如果版本不同需要注意版本差异,否则会导致错误,可以只导入wp-post和wp-comments这两个表的数据。

通过wordpress导入导出功能:

如果你以前通过wordpress的导出插件导出过历史数据,就可以利用它导入所有数据信心,结合uploads目录导入文件就可以完美恢复历史数据。具体方法:

点击"工具"-"导入":

Wordpress 容器化、HTTPS化全攻略

在该页面点击WordPress下的现在安装,先安装该插件。安装后点击"插件":

Wordpress 容器化、HTTPS化全攻略

点击"启用"。

然后再返回"工具"-"导入":

Wordpress 容器化、HTTPS化全攻略

点击"运行导入器"。

Wordpress 容器化、HTTPS化全攻略

弹出页面选择以前保存的xml文件,然后点击"上传并导入"按钮,

Wordpress 容器化、HTTPS化全攻略

选择好需要迁移的用户,点解"Submit"按钮。

根据保存文件大小,该步骤需要比较长的时间。最后会显示如下页面,表示导入过程已经完成:

Wordpress 容器化、HTTPS化全攻略

文章页面:

Wordpress 容器化、HTTPS化全攻略

迁移问题

迁移目前遇到问题有些插件不好使用,最主要是代码高亮插件"Crayon Syntax Highlighter"在最新版本中不能用了,启用该插件后,前台不能显示文章列表和内容,目前还未知道解决方案,暂时安装了另一个代码高亮插件"Enlighter"来代替。

总结:

本文我们使用部署中docker容器方式重新部署和迁移了Wordpress站点,涉及了VPS基础设置、docker容器环境和安装、应用容器的安装和Wordpress历史数据的迁移。限于篇幅我们总体文章分两篇来介绍,本文第二篇将介绍nginx编译安装支持TLS 1.3,站点https设置和wordpress https化存在的问额和解决。


以上所述就是小编给大家介绍的《Wordpress 容器化、HTTPS化全攻略》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Design for Hackers

Design for Hackers

David Kadavy / Wiley / 2011-10-18 / USD 39.99

Discover the techniques behind beautiful design?by deconstructing designs to understand them The term ?hacker? has been redefined to consist of anyone who has an insatiable curiosity as to how thin......一起来看看 《Design for Hackers》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试