基于Docker安装WordPress
内容目录

前言

为了记录自己平时折腾的一些东西,以防折腾完就忘,打算搭建一个个人博客,将平时一些折腾过程记录下来。

在网上找了许多方案,最后决定用WordPress的方案,WordPress作为一款应用广泛的开源网站构建工具,无疑是很适合作为我这种初学者的快捷建站工具的。

网上许多教程都是基于宝塔面板直接构建WordPress的方案。之前用过一段宝塔面板,觉得强制要求注册登录才能使用的方式不免让人怀疑是否会向宝塔发送数据。虽说自己的数据也没什么值钱的,但还是觉得不太妥。况且从一个爱折腾的角度出发,宝塔面板一键式安装也没了许多趣味。

由于自己的方案比较奇怪,我目前的方案网络上目前也没有完整的记录,因此将整个过程完整记录一下。

建站方案

参考了许多其他人的建站教程,混搭了一套基于Docker的WordPress建站方案,方案并没有选用LNMP一键安装,而是各自分别安装:

  • 整体基于阿里云ECS服务器,使用Alibaba Cloud Linux 3。
  • Nginx为使用官网源码手动make安装。
  • MySQL为Linux系统直装,因为还有些其他用处,并没有在Docker内安装。
  • WordPress使用Docker安装,省去了Linux安装php环境的麻烦,也算是一种偷懒。

操作过程

服务器选购

阿里云ECS实例,没什么特别的。

系统用的是Alibaba Cloud Linux 3.2,使用yum源,用下来和centos感觉没什么区别,还算顺手。

MySQL安装

Linux安装Mysql很方便,安装mysql8,一条命令即可:

yum install mysql-server

安装完成后,需要创建一个数据库 wordpress 。最好重新创建一个mysql用户,只拥有 wordpress 数据库的权限。同时root用户最好不要开远程访问,也不要设置太简单的密码,避免被攻击。(来自一个被攻击过的人的经验,通过mysql登录劫持了整个系统,还好没什么数据,重装了系统。)

登录mysql:

mysql -uroot -p

创建数据库:

create database wordpress;

创建用户 wordpress ,星号为自定义密码:

create user "wordpress"@"%" identified by "****";

给用户赋予数据库权限:

grant all on wordpress.* to wordpress;

刷新权限:

flush privileges;

WordPress安装

Docker安装

Docker安装直接参考了阿里云配置教程:https://help.aliyun.com/zh/ecs/use-cases/deploy-and-use-docker-on-alibaba-cloud-linux-2-instances

这里再次记录一下命令。部分命令可能仅适用于 Alibaba Cloud Linux 3 系统,请注意

sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
sudo dnf -y install docker-ce --nobest

Docker内部署wordpress

拉取WordPress镜像并部署

wordpress官方提供了镜像,直接拉取即可:

docker pull wordpress

启动容器,将容器内设置目录映射到主机,方便备份、查询、修改,端口映射到外部,避开80端口,以便后续nginx代理:

docker run -it --name wordpress -p 8001:80 --volume /home/wwwroot/wordpress:/var/www/html --volume /home/wwwroot/config/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini -d wordpress

/home/wwwroot/wordpress 目录可不创建或保持为空即可。

uploads.ini 是配置wordpress可上传文件大小的配置,方便后续上传主题等。内容如下:

upload_max_filesize=32M

wordpress连接mysql

由于mysql不是通过docker部署,docker内的wordpress访问宿主机的mysql,需要特殊处理,这里我使用的方式是通过docker虚拟局域网的地址来访问。首先查看宿主机ip信息:

ifconfig

结果中应当有一条docker0网卡:

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:47ff:fea7:2434  prefixlen 64  scopeid 0x20<link>
        ether 02:42:47:33:11:34  txqueuelen 0  (Ethernet)
        RX packets 171878  bytes 98962864 (94.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 163328  bytes 224353979 (213.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

其中的 172.17.0.1 即docker内可访问的宿主机ip,然后修改 /home/wwwroot/wordpress/wp-config.php 文件,修改数据库信息:

// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress') );

/** Database username */
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'wordpress') );

/** Database password */
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'wordpress') );

/**
 * Docker image fallback values above are sourced from the official WordPress installation wizard:
 * https://github.com/WordPress/WordPress/blob/1356f6537220ffdc32b9dad2a6cdbe2d010b7a88/wp-admin/setup-config.php#L224-L238
 * (However, using "example username" and "example password" in your database is strongly discouraged.  Please use strong, random credentials!)
 */

/** Database hostname */
define( 'DB_HOST', getenv_docker('WORDPRESS_DB_HOST', '172.17.0.1:3306') );

WORDPRESS_DB_HOST 即为数据库host,填入上一步获取的docker0网卡的ip以及mysql端口即可;WORDPRESS_DB_NAME WORDPRESS_DB_USER WORDPRESS_DB_PASSWORD 分别填入数据库名称、连接用户、数据库密码即可,我这里使用wordpress数据库,通过上面创建的wordpress用户连接。

此时,通过服务器ip以及设定的映射端口号 8001 即可访问wordpress了。初次访问需要创建用户,此用户即为管理员用户,初次直接跳转到 /wp-admin ,即wordpress管理后台,可以进行一些相关配置了。

Nginx安装

首先安装依赖项

yum install -y wget gcc-c++ pcre-devel zlib-devel openssl-devel

切换到 /user/local目录:

cd /usr/local

nginx通过官网下载nginx:https://nginx.org/en/download.html

wget https://nginx.org/download/nginx-1.24.0.tar.gz

解压文件:

tar -zxvf nginx-1.24.0.tar.gz

切换到目录:

cd nginx-1.24.0

配置ssl模块:

./config --with-http_ssl_module

安装,这里会自动安装到 /usr/local/nginx/ 文件夹下:

make && make install

这里 makemake install 可以分开执行。

完成后配置文件中添加server:

server{
    listen 80;
    server_name your_server_name;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8001;
    }

}

完成后即可通过域名访问WordPress。

七牛云图床配置

七牛云OSS配置

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇