Docker部署WordPress开源项目
·
:::info
通过容器部署NGINX、MySQL、PHP容器,实现分布式部署站点WordPress
:::
1、拉取镜像
docker pull nginx:latest
docker pull mysql:5.7.32
docker pull php:7.4-fpm
2、创建需要的目录
mkdir -p /web/{mysql,nginx,php,www,conf} # 指定mysql、nginx、php、www目录,方便后续链接到容器中
docker network create wp-network #创建docker自定义桥接网络
3、部署MySQL
#1、提前新建好站点数据库SQL文件,并授权woadm用户
cat > /web/mysql/mysql-init.sql <<EOF
CREATE DATABASE wordpress;
grant all on wordpress.* to woadm@'%' identified by 'Wjx123.com';
FLUSH PRIVILEGES;
EOF
#2、运行MySQL容器
docker run -d -p 3306:3306\
--network wp-network \
--name mysql \
--restart always \
-e MYSQL_ROOT_PASSWORD=Wjx123.com \
-v /web/mysql/mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql \
mysql:5.7.32
4、部署PHP
#1、运行php容器,链接MySQL,挂载站点目录
docker run -d \
--restart always \
--name php-fpm \
--network wp-network \
-v /web/www/:/web/www/ \
php:7.4-fpm
#2、进入php的容器安装mysqli模块
docker exec -it php-fpm bash
debian 或 ubuntu的软件包安装
#3、变更debian的apt源
cat > /etc/apt/sources.list <<EOF
deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main
deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
EOF
#4、更新apt库
老版的ubuntu系统使用的apt-get命令,目前的所有基于Debian系列的系统用的都是apt命令
apt update
#5、加入上传限制到php配置文件中,后续柯根据需要调整
cat > /usr/local/etc/php/conf.d/php.ini <<EOF
upload_max_filesize = 50M
post_max_size = 50M
EOF
#6、安装gd模块依赖的软件
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev libzip-dev zlib1g-dev
#7、配置gd模块的支持的功能
docker-php-ext-configure gd --enable-gd --with-freetype --with-webp --with-jpeg
#8、安装mysql pdo_mysql gd模块
docker-php-ext-install gd mysqli pdo_mysql
exit
5、部署Nginx
#1、编写nginx配置文件
vim /web/conf/wordpress.conf
server {
server_name wordpress.wjx.com; # 配置站点的域名/主机名,访问该域名时匹配此虚拟主机
listen 80; # 配置 Nginx 监听 80 端口(HTTP 协议默认端口)
client_max_body_size 50M; # 设置客户端上传文件的最大体积为 50M,解决 WordPress 上传大文件(如图片、插件)时的大小限制
root /web/www/wordpress; # 指定 WordPress 站点的根目录(Nginx 查找网页文件的基础路径)
index index.php index.html; # 设置默认索引文件优先级:优先访问 index.php(PHP 动态文件),其次 index.html(静态文件)
# 正则匹配所有 .php 结尾的请求(处理 WordPress 的 PHP 动态脚本)
location ~ \.php$ {
fastcgi_pass php-fpm:9000; # 将 PHP 请求转发到名为 php-fpm 的 Docker 容器的 9000 端口(PHP-FPM 默认监听端口)
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 设置 PHP 脚本的真实物理路径:$document_root(即上面的 /web/www/wordpress) + $fastcgi_script_name(请求的 PHP 文件名)
include fastcgi_params;
}
}
#2、解压WordPress站点文件到文本目录
tar xf wordpress-zh_CN.tar.gz -C /web/www/
chmod -R 777 wordpress
#3、运行Nginx容器
docker run -d -p 80:80\
--restart always \
--name web01 \
--network wp-network \
-v /web/conf:/etc/nginx/conf.d \
-v /web/www/:/web/www/ \
-v /web/nginx/log/web01:/var/log/nginx \
nginx:latest
#4、查看docker网络是否正常,正常显示同网段IP说明网络正常
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' `docker ps -aq`
/web01 - 172.18.0.4
/php-fpm - 172.18.0.3
/mysql - 172.18.0.2
6、修改文件权限
chown -R 33.33 /web/www #避免上传和访问权限
chown -R 777 /web/www
7、访问站点地址

更多推荐
所有评论(0)