本文只说明具体的配置过程,具体的原理可参考其他文章
0. 涉及的原理
开始前,先尽可能搞清楚一些原理,可以在之后的实践中debug更有方向感,而是不是一顿狂乱的搜搜搜
- Docker容器技术
- Nginx反向代理
- SSL证书
1. 环境说明
- 阿里云轻量应用服务器
- CentOS 7.6
- 已备案域名一个:blog.wgexplorer.com
- nginx/1.20.1
- Docker version 24.0.2
- 工具
- xshell
- xftp
2. 创建容器
-
说明
这里使用docker compose创建容器
-
配置文件
version: "3" services: mysql: image: mysql:5.7 restart: always environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=wp_db - MYSQL_USER=my_wp_user - MYSQL_PASSWORD=123456 volumes: ["./mysql:/var/lib/mysql"] web: depends_on: - mysql image: wordpress restart: always links: - mysql environment: - WORDPRESS_DB_PASSWORD=123456 - WORDPRESS_DB_HOST=mysql:3306 - WORDPRESS_DB_USER=my_wp_user - WORDPRESS_DB_NAME=wp_db ports: - "0.0.0.0:8080:80" working_dir: /var/www/html volumes: ["./wordpress:/var/www/html"]
-
文件目录说明
-
mysql和wordpress分别是配置文件中对应的映射文件路径
["./mysql:/var/lib/mysql"] ["./wordpress:/var/www/html"]
-
ssl是之后暂时用来放SSL证书相关的文件的
-
-
docker-compose up -d创建并启动容器
- 在.yml文件所在的路径下使用命令
3. 安装
-
访问:服务器IP+8080 (之前.yml文件中配置的映射端口)
ports: - "0.0.0.0:8080:80"
-
根据提示正常安装即可
- 注意:WordPress管理者页面对应的路径是: ip+端口号/admin
4. 获取域名的SSL证书
- 使用ACME申请并管理证书
5. 使用Nginx反向代理
-
配置nginx.conf文件(文件位置:/etc/nginx/nginx.conf)
- 注意修改自己的域名,容器的映射端口,还有保存的ssl相关文件的位置
# WordPress server { listen 80; server_name blog.wgexplorer.com; rewrite ^(.*) https://$host$1 permanent; } server { # 服务器端口使用443,开启ssl, 这里ssl就是上面安装的ssl模块 listen 443 ssl http2; # 域名,多个以空格分开 server_name blog.wgexplorer.com; # ssl证书地址 ssl_certificate /etc/nginx/ssl/blog.crt; # crt文件的路径 ssl_certificate_key /etc/nginx/ssl/blog.key; # key文件的路径 # ssl验证相关配置 ssl_session_timeout 5m; #缓存有效期 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议 ssl_prefer_server_ciphers off; #使用服务器端的首选算法 location / { proxy_pass http://127.0.0.1:8080; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Forwarded-Proto https; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; } }
-
配置wp-config.php文件 (文件位置,就是在之前映射的那个文件夹下:…/WordPress/wordpress/wp-config.php)
- 在文件中添加如下代码段即可
/*add_6/22*/ # 用于控制文件访问权限,适用于上传、更新插件 define('FS_METHOD', "direct"); define("FS_CHMOD_DIR", 0777); define("FS_CHMOD_FILE", 0777); # 用于配置ssl define( 'FORCE_SSL_ADMIN', true ); if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false){ $_SERVER['HTTPS'] = 'on'; $_SERVER['SERVER_PORT'] = 443; } if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST']; }
-
重新启动NGINX,并加载配置文件
- 启动:nginx
- 重新加载:nginx -s reload
6. 主题相关配置
- 自己慢慢摸索就行
- 不要沉迷于各种花里胡哨的主题,更加重要的是内容,主题之类的可以之后慢慢调整
7. 遇到的问题
-
重定向次数过多(我似乎是因为站点地址弄错了 多了’/')
-
wordpress 修改头像
-
安装主题遇到:wordpress 413 Request Entity Too Large
-
选主题
8. 参考
- 配置SSL
- Docker