基于Docker和Nginx的WordPress搭建指南

本文详细介绍了如何在阿里云轻量应用服务器上,使用DockerCompose部署WordPress,配置Nginx进行反向代理,并获取及安装SSL证书,以实现网站的HTTPS安全访问。同时,文章提及了在配置过程中可能遇到的问题及其解决方案,如重定向错误和上传限制。
摘要由CSDN通过智能技术生成

本文只说明具体的配置过程,具体的原理可参考其他文章

0. 涉及的原理

开始前,先尽可能搞清楚一些原理,可以在之后的实践中debug更有方向感,而是不是一顿狂乱的搜搜搜

  • Docker容器技术
  • Nginx反向代理
  • SSL证书

1. 环境说明

  • 阿里云轻量应用服务器
  • CentOS 7.6
  • 已备案域名一个:blog.wgexplorer.com
  • nginx/1.20.1
  • Docker version 24.0.2
  • 工具
    • xshell
    • xftp

2. 创建容器

  1. 说明

    这里使用docker compose创建容器

  2. 配置文件

    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"]
    
    
  3. 文件目录说明

    image-20230623120614633

    • mysql和wordpress分别是配置文件中对应的映射文件路径

       ["./mysql:/var/lib/mysql"]
      ["./wordpress:/var/www/html"]
      
    • ssl是之后暂时用来放SSL证书相关的文件的

  4. docker-compose up -d创建并启动容器

    • 在.yml文件所在的路径下使用命令

3. 安装

  • 访问:服务器IP+8080 (之前.yml文件中配置的映射端口)

    ports:
         - "0.0.0.0:8080:80"
    
  • 根据提示正常安装即可

    img

    • 注意: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. 遇到的问题

8. 参考

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值