• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    主机Nginx + Docker WordPress Mysql搭建的详细步骤

    环境

    安装

    安装 docker 所需依赖

    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

    安装 docker-ce

     $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
     $ sudo yum install docker-ce
     $ sudo systemctl start docker
     $ docker --version
     $ sudo docker run hello-world

    安装 docker-compose

    $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
    $ sudo chmod +x /usr/bin/docker-compose
    $ docker-compose --version

    编写 docker-compose.yml

    $ mkdir ./blog
    $ cd blog
    $ sudo vim docker-compose.yml
    version: '3'
    
    services:
     db:
      image: mysql:5.7
      volumes: # 数据卷,映射本地文件夹
      - db_data:/var/lib/mysql
      ports: # 如果不写端口映射的话,外部无法连接该mysql(下方WordPress连接没问题)
      - "3306:3306"                       
      restart: always
      environment:
      MYSQL_ROOT_PASSWORD: xxx
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
     wordpress:
      depends_on: # 依赖上方的 db service
      - db
      image: wordpress:latest
      volumes:
      - wp_site:/var/www/html
      ports:
      - "8000:80"
      restart: always
      privileged: true
      environment:
      # 可以直接使用 上方 service 名 + 端口来获得链接 
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      # 定义域名
      WORDPRESS_CONFIG_EXTRA: "define('WP_HOME','https://blog.amoyiki.com'); define('WP_SITEURL','https://blog.amoyiki.com');"
    
    volumes:
     db_data:
     wp_site:
    
    

    运行容器

    # 启动
    $ sudo docker-compose up -d
    # 关闭 
    $ sudo docker-compose down

    现在可以用 http://ip:port 来访问。如果发现无法访问,可以 查看容器日志寻找错误

    $ sudo docker-compose ps
     Name    Command      State        Ports    
    
    blog_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
    blog_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8000->80/tcp 
    # 主要后面的 WordPress 是服务的名字 这和 docker 查看日志使用容器名不同
    $ sudo docker-compose logs -f --tail=10 wordpress 
    $ sudo docker-compose logs -f --tail=10 db
    

    使用主机 Nginx 反代 docker wordpress

    nginx 的配置文件如下(省略不相干内容)

    user root; # 这是由于 docker 容器内 WordPress 文件用户为 www-data
    
    server {
     listen 80;
     server_name *.amoyiki.com;
     return 301 https://$host$request_uri;                
    }
    upstream wordpress-workhorse {
     server 127.0.0.1:8000 fail_timeout=10s;
    }
    server { 
     server_name blog.amoyiki.com;
     listen 443 ssl;
     ssl on;
     ssl_certificate /ssl/path/fullchain.pem;
     ssl_certificate_key /ssl/path/privkey.pem;
     access_log /var/log/nginx/access.log main;
     # 主机中 WordPress 数据卷位置
     root /var/lib/docker/volumes/blog_wp_site/_data;
    
    
     location / {
      proxy_pass http://wordpress-workhorse;
      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-Proto https;
     }
     
     location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
      expires 7d;
      access_log off;             
     }
    
     error_page 500 502 503 504 /50x.html;
     location = /50x.html {
      root html;
     }
    } 
    
    

    错误合集

    nginx error Permission denied

    "/var/lib/docker/volumes/myblog_wp_site/_data/wp-includes/css/dashicons.min.css" failed (13: Permission denied)

    之前我 nginx.conf user 使用的是默认的 nobody 无法读取 docker 中 wp 的 www-data 这个用户组数据,所以直接将 nginx 用户提到 root,这个之后可以优化

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:CentOs下手动升级node版本的方法
    下一篇:Linux低电量自动关机的实现方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    主机Nginx + Docker WordPress Mysql搭建的详细步骤 主机,Nginx,Docker,WordPress,