1.本文测试环境:
Debian 11
Nginx 1.24
MySQL 5.7
Docker 24
2.部署MySQL
点击查看记录Mysql容器的IP,假设为172.18.0.3
3.安装wordpress
#参数说明: # -v /docker/wordpres:/var/www/html :/docker/wordpress宿主机持久化目录
# 8080:80 :将docker 80端口映射到宿主机8080端口
docker run -d --restart always --name wordpress --net bridge -v /docker/wordpress:/var/www/html -p 8080:80 wordpress:latest
3.1不配置SSL直接用http访问:
此时your_domain:5555访问即可。注意在主机商控制台的防火墙开放端口
3.2配置SSL,https访问:
若需要开启SSL,在wordpress配置数据库完成前最好不要开启SSL,原因如下:
wordpress连接数据库后会在wordpress根目录生成wp-config.php配置文件,需要添加一下参数才可以顺利用HTTPS访问,否则会导致静态资源无法加载。
如下所示,样式并没有正确加载。也可以在配置完数据库后再添加参数。

安装过程中填写数据库信息:
数据库名:worpress
用户名:root
密码 :your_passwd
数据库主机:172.18.0.3 (上文提到的要记录的数据库IP)
tips:为什么数据库主机不是127.0.0.1或者localhost?因为wordpress在docker内, 127.0.0.1/localhost是wordpress容器的本机环回地址,并不是宿主机的。
连接好数据库后,在wordpress根目录会生成wp-config.php配置文件,需要添加一下参数才可以顺利用HTTPS访问。在wp-config.php中加入如下代码:
但是要确保你的修改在 require_once(ABSPATH . 'wp-settings.php'); 这一行之前
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on';
然后在nginx配置好https,刷新页面,样式即可成功加载

我的nginx配置如下:
注意修改:
两处 server_name your_domain;
SSL证书和私钥的位置
部署wordpress时映射的端口
日志文件名
# HTTP服务器块,对80端口的请求进行重定向到HTTPS
server {
listen 80 ;
server_name your_domain;
# 重定向所有HTTP请求到相同的HTTPS地址
return 301 https://$host$request_uri;
}
# HTTPS服务器块
server {
gzip on;
listen 443 ssl;
server_name your_domain;
# SSL证书和私钥的位置
ssl_certificate /home/SSL/your_domain.pem;
ssl_certificate_key /home/your_domain.key;
# SSL会话缓存
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# SSL协议和密码套件的配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
# 优先使用服务器端的密码套件
ssl_prefer_server_ciphers on;
# 配置反向代理
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:8080; #部署wordpress时映射的端口
# 设置上传文件的最大大小
client_max_body_size 200m;
}
# 访问日志和错误日志的路径
access_log /var/log/nginx/your_domain.access.log;
error_log /var/log/nginx/your_domain.error.log;
# 启用OCSP Stapling的相关配置
ssl_stapling off;
ssl_stapling_verify off;
# 启用HTTP严格传输安全性(HSTS)
add_header Strict-Transport-Security "max-age=31536000" always;
}

4.修改wordpress上传大小
wordpress容器默认上传限制为2M,实在是太太太少啦,修改上传限制。
命令如下:
#进入wordpress容器:
docker exec -it wordpress /bin/bash
wordpress容器中的这个路径/usr/local/etc/php/,是存放 php.ini 的地方,但是默认是没有 php.ini 这个文件的,所以我们要通过复制一份php.ini-production文件,来生成 php.ini 文件。
cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
正常情况下,我们就可以使用Vim编辑器编辑php.ini文件了,但是不幸的是,官方的Wordpress容器中并没有预装vim编辑器。更新及安装vim,使用如下代码:
apt-get update
apt-get install vim
安装完成vim,现在就可以对php.ini进行编辑了。
vim /usr/local/etc/php/php.ini
一般情况下我们修改这几个变量,当然根据自己需求修改。
memory_limit = 500M #内存占用限制
upload_max_filesize = 200M #文件大小限制
post_max_size = 250M #post大小限制
退出docker容器
exit
重启容器
docker restart wordpress
Comments NOTHING