内容简介:大家可能都在用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协议以最大程度提高性能,本文虫虫就给大家介绍整个部署的全过程供大家参考优化。
概述
站点采用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个月更新。整个架构结构如下:
VPS和容器环境准备
基础VPS环境是centos 7.2,默认是vi我们先将它换成vim
yum install vim
挂载VPS数据盘
初始化VPS数据盘,注意该盘为外挂的盘VPS变化重新初始化时候数据不会丢失,一般为sdb,比如虫虫的盘,60G
创建分区并格式化
fdisk /dev/sdb mkfs.ext4 /dev/sdb1
挂载,挂载目录我们设为/data
mkdir /data mount /dev/sdb1 /data
修改/etc/fstab实现重启自动挂载:
通过dumpe2fs或者blkid查看磁盘UUID
d179868b-6fb9-414c-8901-b990f7c586bd
echo 'UUID="d179868b-6fb9-414c-8901-b990f7c586bd" /data ext4 defaults 0 0' >>/etc/fstab
mount –a测试fstab配置,如果没提示表示正确,如果有错误会显示,比如我们给UUID前面加个1,测试信息如下:
更换防火墙关闭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登陆:
事先添加证书登陆,然后禁止密码登录方式"PasswordAuthentication no":
防火墙开启新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源
安装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
还有一个典型错误如下:
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":
重新加载配置文件
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数据库,这时候需要连接到mysql容器:
docker exec -it mysql /bin/bash
在容器中执行mysql -uroot -p 输入上面我们设置mysql密码,wp12345
在mysql命令行创建一个数据库wordpress
create database wordpress;
然后再访问就可以了
注意该处保存好系统给你设置的密码,或者修改为自己的密码。
进过以上步骤,一个全新版本的wordpress服务就可以:
安装好后需要迁移历史数据,最主要是两部分数据:数据库数据和上传的文件数据。
上传文件数据迁移:
这部分迁移很简单把以前保存的目录中的wp-content下的uploads目录复制过来所有上传数据就ok了。
数据库迁移:
数据库迁移,如果wordpress版本相同,可以直接把以前保存的数据文件导入到新数据库就可以。如果版本不同需要注意版本差异,否则会导致错误,可以只导入wp-post和wp-comments这两个表的数据。
通过wordpress导入导出功能:
如果你以前通过wordpress的导出插件导出过历史数据,就可以利用它导入所有数据信心,结合uploads目录导入文件就可以完美恢复历史数据。具体方法:
点击"工具"-"导入":
在该页面点击WordPress下的现在安装,先安装该插件。安装后点击"插件":
点击"启用"。
然后再返回"工具"-"导入":
点击"运行导入器"。
弹出页面选择以前保存的xml文件,然后点击"上传并导入"按钮,
选择好需要迁移的用户,点解"Submit"按钮。
根据保存文件大小,该步骤需要比较长的时间。最后会显示如下页面,表示导入过程已经完成:
文章页面:
迁移问题
迁移目前遇到问题有些插件不好使用,最主要是代码高亮插件"Crayon Syntax Highlighter"在最新版本中不能用了,启用该插件后,前台不能显示文章列表和内容,目前还未知道解决方案,暂时安装了另一个代码高亮插件"Enlighter"来代替。
总结:
本文我们使用部署中docker容器方式重新部署和迁移了Wordpress站点,涉及了VPS基础设置、docker容器环境和安装、应用容器的安装和Wordpress历史数据的迁移。限于篇幅我们总体文章分两篇来介绍,本文第二篇将介绍nginx编译安装支持TLS 1.3,站点https设置和wordpress https化存在的问额和解决。
以上所述就是小编给大家介绍的《Wordpress 容器化、HTTPS化全攻略》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- XXE萌新进阶全攻略
- 运维进阶:文件共享服务全攻略
- 浏览器缓存机制全攻略 - 前端
- Spark Streaming应用与实战全攻略
- 图数据库 TigerGraph 使用全攻略
- 少女风vue组件库制作全攻略~~
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!