zoukankan      html  css  js  c++  java
  • Docker安装WordPress并添加https访问

    搭建个人博客

    一、安装WordPress

    安装docker-compose

    以二进制方式进行安装,首先在github中查看当前最新版本为1.29.2,如需更改版本,在下列代码中更改对应版号。

    [root@instance]# curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    [root@instance]# chmod +x /usr/local/bin/docker-compose
    [root@instance]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    [root@instance]# docker-compose --version
    

    安装好之后 docker-compose --version 查看信息

    安装docker

    1、官网下载,创建对应目录,下载docker最新包解压。

    [root@insta]# mkdir -p /root/download
    [root@insta]# cd /root/download
    [root@insta]# wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
    [root@insta]# tar -xvf docker-20.10.6.tgz
    

    2、分发二进制文件到所有 worker 节点:

    [root@insta]# mkdir -p /opt/docker/bin
    [root@insta]# cp docker/*  /opt/docker/bin/
    [root@insta]# chmod +x /opt/docker/bin/*
    

    编辑环境变量:

    [root@insta]# vim /etc/profile
     #添加变量   export PATH=/opt/docker/bin:$PATH
    [root@insta]# source /etc/profile
    

    3、创建和分发 systemd unit 文件

    注意更改WorkingDirectory目录,自行定义

    [root@insta]# cd /root/download
    [root@insta]# cat > docker.service <<"EOF"
    [Unit]
    Description=Docker Application Container Engine
    Documentation=http://docs.docker.io
    
    [Service]
    WorkingDirectory=/data/docker
    Environment="PATH=/opt/docker/bin:/bin:/sbin:/usr/bin:/usr/sbin"
    ExecStart=/opt/docker/bin/dockerd 
    ExecReload=/bin/kill -s HUP $MAINPID
    Restart=on-failure
    RestartSec=5
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    Delegate=yes
    KillMode=process
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    • EOF 前后有双引号,这样 bash 不会替换文档中的变量,如$DOCKER_NETWORK_OPTIONS;
    • dockerd 运行时会调用其它 docker 命令,如 docker-proxy,所以需要将 docker 命令所在的目录加到 PATH 环境变量中;
    • docker 需要以 root 用于运行;
    • docker 从 1.13 版本开始,可能将 iptables FORWARD chain的默认策略设置为DROP,从而导致 ping 其它 Node 上的 Pod IP 失败,遇到这种情况时,需要手动设置策略为 ACCEPT:
    [root@insta]# sudo iptables -P FORWARD ACCEPT
    

    并且把以下命令写入 /etc/rc.local 文件中,防止节点重启iptables FORWARD chain的默认策略又还原为DROP

    [root@insta]# vim /etc/rc.local
    /sbin/iptables -P FORWARD ACCEPT
    :wq
    

    分发 systemd unit 文件到宿主机器:

    [root@insta]# cp docker.service  /etc/systemd/system/
    

    4、使用国内的仓库镜像服务器以加快 pull image 的速度,同时增加下载的并发数 (需要重启 dockerd 生效,目录自行定义):

    [root@insta]# cd /root/download
    [root@insta]# mkdir -p /data/docker/data
    [root@insta]# mkdir -p /data/docker/exec
    
    [root@insta]# cat > daemon.json <<EOF
    {
        "registry-mirrors": [ "https://477njxek.mirror.aliyuncs.com", "https://registry.docker-cn.com/", "https://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn"],
        "insecure-registries": [],
        "max-concurrent-downloads": 20,
        "live-restore": true,
        "max-concurrent-uploads": 10,
        "debug": true,
        "data-root": "/data/docker/data",
        "exec-root": "/data/docker/exec",
        "log-opts": {
          "max-size": "100m",
          "max-file": "5"
        }
    }
    EOF
    

    分发 docker 配置文件到所有宿主机节点:

    [root@insta]# cd /root/download
    [root@insta]# mkdir -p  /etc/docker/
    [root@insta]# cp daemon.json /etc/docker/
    

    5、启动docker服务

    [root@insta]# systemctl stop firewalld && systemctl disable firewalld
    [root@insta]# /usr/sbin/iptables -F && /usr/sbin/iptables -X && /usr/sbin/iptables -F -t nat && /usr/sbin/iptables -X -t nat
    
    [root@insta]# /usr/sbin/iptables -P FORWARD ACCEPT
    [root@insta]# systemctl daemon-reload && systemctl enable docker && systemctl restart docker
    
    • 关闭 firewalld(centos7)/ufw(ubuntu16.04),否则可能会重复创建 iptables 规则;
    • 清理旧的 iptables rules 和 chains 规则;
    • 开启 docker0 网桥下虚拟网卡的 hairpin 模式;

    6、添加软连接

    [root@insta]# ln -s /opt/docker/bin/docker /usr/bin/docker
    

    7、检查docker服务状态:docker info
    docker info

    安装mysql、WordPress

    [root@instance]# docker pull mysql:5.7
    [root@instance]# docker pull wordpress:latest
    

    使用yml启动

    1、编写docker-wordpress.yml,部分参数解释,注意创建的数据库用户密码,数据库账户密码前都有空格符

    [root@instance]# vim docker-wordpress.yml
    version: '3.3'
    services:
      db:
         image: mysql:5.7
         container_name: "wordpress_mysql"
         ports:
           - "3307:3306"
         volumes:
           - $PWD/data:/var/lib/mysql
         restart: always
         environment:
           MYSQL_ROOT_PASSWORD: 自定义数据库root密码
           MYSQL_DATABASE: wordpress
           MYSQL_USER: laobai
           MYSQL_PASSWORD: 自定义laobai用户密码
      wordpress:
         depends_on:
           - db
         image: wordpress:latest
         container_name: "wordpress"
         ports:
           - "80:80" 
           - "443:443"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_USER: laobai
           WORDPRESS_DB_PASSWORD: 与上面相通的laobai用户密码
           WORDPRESS_DB_NAME: wordpress
           WORDPRESS_WPLANG: zh-CN
         volumes:
           - $PWD/wp-content:/var/www/html/wp-content
           - $PWD/ssl:/ssl
    
    • ports:映射端口
    • volumes:映射容器目录
    • restart: always 自动重启
    • – $PWD/ssl:/ssl 方便再容器外添加ssl证书

    2、启动yml

    [root@instance]# docker-compose -f docker-wordpress.yml up -d   #后台启动
    

    访问IP+80即可访问到博客,请注意服务器是否开放80/443端口。

    二、添加https协议

    效果示例

    1、进入wordpress容器,加载apache的ssl模块,修改证书和私钥路径。因为我已经按照过ssl模块,这里显示已存在。

    [root@instance]# docker exec -it wordpress bash
    root@cd5205193f22:/var/www/html# a2enmod ssl
    

    SSL模块

    编辑容器中的ssl文件

    root@cd5205193f22:/var/www/html# vim /etc/apache2/sites-available/default-ssl.conf
    

    找到SSLCertificateFile和SSLCertificateKeyFile这两个配置项,改成把私钥和证书(ssl证书我是在腾讯云申请的一年免费域名证书)挂载进容器里面后的路径,这里都在/ssl/目录下。修改后为:

    在容器中或许不能使用vi/vim,可以将文件从容器中拷贝出来改,再拷贝进去(docker cp…….)
    让ssl配置被apache加载

    root@cd5205193f22:/var/www/html# ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
    

    退出容器,并重启。

    [root@instance]# docker restart wordpress
    

    强制http请求转到https
    编辑 /etc/apache2/sites-available/000-default.conf,找到<VirtualHost *:80> 标签中增加下面的配置:

    <Directory "/var/www/html"> 
        RewriteEngine   on
        RewriteBase /
        # FORCE HTTPS
        RewriteCond %{HTTPS} !=on
        RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
    </Directory>
    

    退出容器,并重启。

    [root@instance]# docker restart wordpress
    

    最后,查看是否已更换成https协议访问。
    最终效果

    本篇文章篇幅较长,主要是设计到docker、docker-compose、ssl等安装配置。
    更多内容可进入我的博客,文章可转载,需标明原博地址。

  • 相关阅读:
    Quartus 16.1 signaltap问题
    黑金AX301开发板视频图像处理:探索
    YOLO算法学习
    Ubuntu 16.04运行altera opencl sdk(AOCL)
    Ubuntu下quartus发现不到usb blaster的问题
    Ubuntu 16.04安装altera opencl sdk(AOCL)
    ZYNQ术语及缩写
    BinaryNet: Training Deep Neural Networks with Weights and ActivationsConstrained to +1 or −1
    卷积神经网络优化方法
    FINN: A Framework for Fast, Scalable Binarized Neural Network Inference_2016_CSCV
  • 原文地址:https://www.cnblogs.com/liaokunhong/p/14888998.html
Copyright © 2011-2022 走看看