基于Ubuntu20.04+Docker+MariaDB+WordPress部署个人博客

头图参数:

parameters:
(cowboy shot:1.1), (public:1.331), (city:1.331), silver hair, yellow eyes, (sleepy:1.1), nun, solo, 1girl, teen, (masterpiece:1.2), best quality, masterpiece, highres, original, extremely detailed wallpaper, perfect lighting, (extremely detremely detailed CG:1.2),
Negative prompt: (large breasts,huge breasts:1.4), (mutation, poorly drawn :1.2), (long body :1.3), (mutation, poorly drawn :1.2) , liquid body, long neck, uncoordinated body,fused ears, (ugly:1.4), lowres, one hand with more than 5 fingers, one hand with less than 5 fingers, (worst quality, low quality:1.4)
Steps: 20, Sampler: Euler a, CFG scale: 5, Seed: 2885092513, Size: 960x540, Model hash: a1535d0a42, Model: AnythingV5Ink_v32Ink

我总觉得洋鬼子比中国人文明,货只管排,而那品性却很有可学的地方,
这种敢于指摘自己国度的错误的,中国人就很少。

— 一九二五年,鲁迅《两地书之廿九》
随机引文生成自fortunes-zh包

本文默认使用以下环境:

· Ubuntu 20.04 LTS

· Docker Engine – Community 20.10.17, build 100c701

· WordPress 6.0 with PHP 7.4.30

· MariaDB 1:10.8.3+maria~jammy

1. 部署Docker环境

首先更新现有安装包

sudo apt update

安装依赖包以使apt可以支持HTTPS

sudo apt install apt-transport-https ca-certificates curl software-properties-common 

将官方Docker库的GPG公钥添加到系统中

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

将Docker库添加到apt里

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

再次更新现有包列表

sudo apt update

执行docker安装

sudo apt install docker-ce 

安装后执行版本查看命令, 应该会得到对应的输出

docker --version
Docker version 20.10.17, build 100c701

2. 拉取MariaDB及WordPress镜像并运行

执行pull命令拉取对应版本MariaDB及WordPress镜像

docker pull mariadb:10.8.3-jammy
docker pull wordpress:6.0-php7.4-apache

配置镜像并运行,这里默认MariaDB使用默认root用户 / 3306端口,WordPress镜像中的Apache2配置8080端口,your_password改成你准备设置的密码,下同

docker run --name db --env MYSQL_ROOT_PASSWORD=<em>your_password</em> -p 3306:3306 -d mariadb
docker run --name wp --link db:mysql -p 8080:80 -d wordpress

3. 完成WordPress的安装操作

首先需要新增一个用于WordPress的数据库,进入正在运行的MariaDB镜像来操作,此处默认使用的数据库名为wordpress

docker exec -it db /bin/bash
mysql -u root -p
#input your_password
> create database wordpress;

打开http://your_ip:8080地址(将your_ip改为你服务器的ip地址,下同), 完成WordPress的安装,注意WordPress被安装在docker中, 因此其localhost地址并非your_ip地址,需要将安装时数据库地址修改为your_ip:3306

完成安装后,登陆控制台,在设置-常规中将WordPress地址(URL)与站点地址(URL)修改为你域名的地址,将以下的your_domain改为你使用的域名:https://your_domain

注意!此处操作后直到完成为止都不再可以使用IP地址访问博客,如果中间流程出了什么问题,可以修改数据库中wp_options(如果没有修改表前缀的话)表中option_id为1和2的字段为http://your_ip来挽回

4. 配置Nginx反向解析

由于Certbot在普通模式运行时能自动对Nginx配置文件进行修改,所以没必要现在就完整的设置Nginx反向解析文件,只要做一个能让外部访问80端口的配置即可。此处,我们将Nginx安装在服务器路径下

sudo apt install nginx
cd /etc/nginx/conf.d
vim {your_domain}.conf

在新建的配置文件中,新增下列行,保存即可

server {
    listen 80;
    server_name {your_domain};
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://{your_ip}:8080;
    }
}

5. 使用Certbot获取SSL证书并配置443端口

注意!若服务器属于中国大陆服务商且未备案时,会默认将境外访问重定向,致使Certbot无法验证。与此同时域名不转回中国大陆服务商则不可备案,因此请中国大陆用户使用服务商配套的服务以获取ssl证书并自行配置Nginx。

Certbot是一个用于获取并自动更新Let’s Encrypt免费SSL证书的开源工具,在页面上选择Ubuntu20.04及Nginx即可得到对应的安装配置方法。获取到Certbot后,执行Certbot命令,会让你先填入你的邮箱(用于在证书失效时通知你)并让你同意其使用协议/向你推送消息,然后Certbot会读取Nginx配置并将反向解析到your_ip的域名列出来。输入your_domain对应的编号,Certbot就会自动申请Let’s Encrypt证书并修改Nginx配置

6. 修改WordPress配置以完全适配https访问

在上一步中Certbot默认的配置会自动将80端口的访问自动重定向到443端口,但CSS,JS等静态文件仍会由http加载,致使页面无法正常渲染。需要修改WordPress镜像中wp-config.php文件来处理,将your_user改为你的用户名

mkdir -p /home/{your_user}/WordPress
sudo docker cp wp:/var/www/html/wp-config.php /home/{your_user}/WordPress/
vim /home/{your_user}/WordPress/wp-config.php
sudo docker cp /home/{your_user}/WordPress/wp-config.php wp:/var/www/html/

在修改wp-config.php文件时,在if ( ! defined( ‘ABSPATH’ ) )前添加如下配置

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

7. 完成

至此基于Ubuntu / Docker的MariaDB / WordPress已经全部安装配置完成,使用https://your_domian/wp-admin/地址去访问你的新博客吧!

2022-06-15 20:00UT+8:00 Kurenai.Dokukawa


已发布

分类

,

来自