使用Docker 搭建Halo bolg系统

说在前面的话,搭建Halo blog结束写第一篇文章,用以记录搭建步骤,其中不涉及各种原理, 相关原理请自己查阅相关文章
文章首发 https://blog.itren.net/

安装环境

ubuntu 16.04 LTS 版本

安装docker

  1. 使用脚本安装docker

    curl -fsSL get.docker.com -o get-docker.sh
    sh get-docker.sh --mirror AzureChinaCloud
    
  2. 执行成功结束以后可以看到版本号即表示 安装成功

安装docker-compose

安装docker-compose采用自己下载上传然后改权限的方式

  1. docker-compose下载地址 https://github.com/docker/compose/releases
  2. 上传服务器 存放地址 /usr/local/bin/ (切记放在次路径下可以)
  3. 修改下载的文件名称 sudo mv docker-compose-Linux-x86_64 docker-compose
  4. 赋予执行权限 sudo chmod +x docker-compose

设置docke修改r镜像加速

  1. 使用阿里云的镜像 https://cr.console.aliyun.com/

  2. 执行镜像加速中给到的内容

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
        "registry-mirrors": ["使用自己的地址"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

docker 安装Mysql

  1. 使用docker-compose安装mysql

  2. 创建目录 mkdir -p /usr/local/docker/mysql

  3. 进入目录 cd /usr/local/docker/mysql

  4. 创建 文件 touch docker-compose.yml 并写入以下内容

    version: '3'
    services:
      mysql:
        restart: always
        image: mysql:5.7.22
        container_name: mysql
        ports: 
          - 3306:3306
        environment:
          TZ: Asia/Shanghai
          MYSQL_ROOT_PASSWORD: 123456
        command:
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
          --lower_case_table_names=1
          --max_allowed_packet=128M
          --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
        volumes:
          - mysql-data:/var/lib/mysql
    
    volumes:
      mysql-data:
    
    
  5. 执行一下命令 docker-compose up -d

docker 安装 nginx

  1. 使用docker-compose安装mysql

  2. 创建目录 mkdir -p /usr/local/docker/nginx

  3. 进入目录 cd /usr/local/docker/nginx

  4. 创建 文件 touch docker-compose.yml 并写入以下内容

    version: '3'
    services:
      nginx:
        restart: always
        image: nginx
        container_name: nginx
        ports:
          - 80:80
          - 443:443
        volumes:
          - /etc/nginx/conf.d:/etc/nginx/conf.d
          - /etc/nginx/vhost.d:/etc/nginx/vhost.d
          - /usr/share/nginx/html:/usr/share/nginx/html
          - /etc/nginx/certs:/etc/nginx/certs:ro
    
    
  5. 执行一下命令 docker-compose up -d

docker 安装 halo

  1. 使用docker-compose安装mysql

  2. 创建目录 mkdir -p /usr/local/docker/halo

  3. 进入目录 cd /usr/local/docker/halo

  4. 创建 文件 touch docker-compose.yml 并写入以下内容

version: ‘3’
services:
halo:
restart: always
image: ruibaby/halo
container_name: halo
ports:
- 8090:8090
volumes:
- ~/.halo:/root/.halo
```

  1. 下载配置项目启动配置文件curl -o ~/.halo/application.yaml --create-dirs http://halo.ryanc.cc/config/application-template.yaml

  2. 修改文件使用mysql文件如下

    server:
      port: 8090
    spring:
      datasource:
        # MySQL 配置
        driver-class-name: com.mysql.cj.jdbc.Driver
        # 此处要注意, 如果使用docker 这里不能使用127.0.0.1 要使用宿主机的内网ip 
        url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
    
  3. 执行一下命令 docker-compose up -d

配置https证书

  1. 阿里云申请ssl证书个人版

  2. 在上面nginx docker-compose配置文件里面的配置的磁盘映射地址 如上/etc/nginx/conf.d 此文件启动文件容器以后已经自动创建。

  3. 往文件里面写下面的文件

    server {
        listen  80;
        server_name blog.50xr.com;
    
        rewrite ^(.*)$  https://$host$1 permanent;
    }
    
    server {
        listen 443 ssl;
        server_name blog.50xr.com;
    
        ssl_certificate /etc/nginx/certs/3201839.pem;
        ssl_certificate_key /etc/nginx/certs/3201839.key;
        ssl_session_timeout 5m;
    
    
        location / {
            proxy_set_header HOST $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
            proxy_pass http://宿主机内网ip:8090/;
        }
    }
    
  4. 执行一下命令

nginx -t 
nginx -s reload 

写在后面的话

  1. 如上所说文章只是记录搭建过程
  2. 搭建过程中遇到的问题就是 halo 的配置数据的ip 一定要写成宿主机的内网ip
  3. 如果是部署在阿里云一定要设置安全组,否者无法访问。

你可能感兴趣的:(其他)