服務器之家:專注于服務器技術及軟件下載分享
分類導航

DEDECMS|帝國CMS|Discuz|PHPCMS|Wordpress|ZBLOG|ECSHOP|

服務器之家 - 建站程序 - Wordpress - Wordpress 容器化、HTTPS化全攻略

Wordpress 容器化、HTTPS化全攻略

2019-10-22 22:35今日頭條蟲蟲安全 Wordpress

大家可能都在用Wordpress寫博客,之前都都是買個VPS部署一個一鍵L/WAMP程序完成整個部署,部署可能也容易但是操作比較費勁。

大家可能都在用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

yuminstallvim

掛載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"/dataext4defaults00'>>/etc/fstab

mount –a測試fstab配置,如果沒提示表示正確,如果有錯誤會顯示,比如我們給UUID前面加個1,測試信息如下:

Wordpress 容器化、HTTPS化全攻略

更換防火墻關閉selinux

系統其默認的防火墻firewalld,先將其修改為比較熟悉稱手的iptables:

yuminstalliptablesiptables-services

systemctldisablefirewalld

systemctlstopfirewalld

systemctlenableiptables

systemctlstartiptables

selinux配置太復雜,我們先暫時關閉(在正式生產環境不建議該操作):

setenforce0

為了一直關閉,需要修改其配置文件,這樣重啟后就不會再加載。方法

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

更改ssh安全配置

為了VPS已經修改掉系統默認的ssh 22端口,并且禁止root登陸,方法修改/etc/ssh/sshd_config,查找Port去掉其前面的注釋#號,并把22修改為其他端口,比如12322:

Port12322

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

Wordpress 容器化、HTTPS化全攻略

事先添加證書登陸,然后禁止密碼登錄方式"PasswordAuthentication no":

Wordpress 容器化、HTTPS化全攻略

防火墻開啟新sshd端口,并刪掉22端口

iptables-IINPUT-ptcp-mstate--stateNEW-mtcp-dport12322-jACCEPT

重啟sshd服務

systemctlrestartsshd.service

用新端口證書方式訪問服務器,如果沒有問題:

刪掉22端口

iptables-DINPUT-ptcp-mstate--stateNEW-mtcp-dport22-jACCEPT

保存防火墻規則

systemctlsavesshd.service

添加epel和源管理工具

yuminstallepel-releaseyuminstall-yyum-utils

docker和容器部署

添加docker源

Wordpress 容器化、HTTPS化全攻略

安裝docker服務

yuminstalldocker-cedocker-compose

systemctlenabledocker

systemctlstartdocker

啟用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應用鏡像

dockerpullwordpress

dockerpullmysql:5.7.25

遷移docker數據目錄

systemctlstopdocker.service

mv/var/lib/docker/data/docker

vim /usr/lib/systemd/system/docker.service 查找ExecStart給其參數增加:

"--graph /data/docker":

Wordpress 容器化、HTTPS化全攻略

重新加載配置文件

systemctldaemon-reload

重啟docker服務

systemctlrestartdocker.service

創建應用數據目錄

首先是數據庫mysql目錄:

mkdir-p/data/web/data

chown-R999:999/data/web/data

網站目錄:

mkdir/data/web/webapps

chown-R33:33/data/web/webapps

啟動應用容器

mysql容器:

dockerrun--namemysql-hmysql

--restart=always

-eMYSQL_ROOT_PASSWORD=wp12345

-p127.0.0.1:13306:3306

-v/data/web/data:/var/lib/mysql

-dmysql:5.7.25

注意上面加重的參數表示mysql的root初始化密碼,需要根據實際修改。

wordpress應用容器

dockerrun-hwordpress--namewordpress

--restart=always

--linkmysql:mysql

-p2880:80

-v/data/web/webapps:/var/www/html

-dwordpress

注意上面黑體表示連接到mysql容器,注意兩個服務啟動順序,現有mysql,wordpress放棄才能連接到這個數據庫,在宿主機上映射的端口為2880。

數據遷移

以上兩個個容器啟動后,wordpress部署就完全完成,現在通過瀏覽器訪問

http://ip:2880就可以訪問到wordpress安裝界面了。

就可以通過web安裝wordpress和配置了。

Wordpress 容器化、HTTPS化全攻略

有可能報錯數據庫連接錯誤:

Wordpress 容器化、HTTPS化全攻略

提示信息表示數據庫服務沒有創建wordpress數據庫,這時候需要連接到mysql容器:

dockerexec-itmysql/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化存在的問額和解決。

延伸 · 閱讀

精彩推薦
法甲赛程积分