Skip to content

Instantly share code, notes, and snippets.

@hustjiangtao
Last active April 13, 2019 09:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hustjiangtao/b5ba4d27f0bcae2c23f8785f1d9bdf15 to your computer and use it in GitHub Desktop.
Save hustjiangtao/b5ba4d27f0bcae2c23f8785f1d9bdf15 to your computer and use it in GitHub Desktop.
all config for aliyun-hk

Aliyun HK Config

To see more:

Guide

  • 目录结构
  • Docker
  • Nginx
  • MySQL
  • WordPress
  • Typecho

目录结构

使用 docker-compose 部署,采用系统 Nginx + docker MySQL + docker WordPress 方案 系统 Nginx 作为反向代理服务,转发对应域名下的服务至对应的 docker 化的 WordPress 服务,采用 docker-compose 部署单独的 MySQL 服务和多个 WordPress 服务。不同 WordPress 站点的数据库连接同一个 MySQL 服务,利用数据库名做区分,对应不同数据库,WordPress 单独部署,利用挂载目录对应不同站点,所有 WordPress 挂载目录统一集中至 docker-compose 服务下的 ./wwwroot/ 目录下。

采用和 https://github.com/helloMJW/docker-lnmp 类似的目录结构

./
├── LICENSE
├── README.md
├── app
│   └── nginx
│       ├── vhost
│       │   └── www.zfou.net.conf
│       └── wordpress.conf
├── data
│   ├── mysql
│   └── mysql_init
│       └── 01-databases.sql
├── docker-compose.yml
└── wwwroot
    ├── www.demo1.com
    └── www.demo2.com

Docker

  • docker-compose.yml
# ./docker-compose.yml
version: "3"
services:
  nginx:
    image: nginx:1.12.1-alpine
    container_name: wordpress_nginx
    ports:
      - "8000:80"
    links:
      - wordpress_1:wordpress
    volumes:
      - ./app/nginx/vhost:/etc/nginx/conf.d
  db:
    image: mysql:5.7
    container_name: wordpress_mysql
    command: mysqld --performance_schema=0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./data/conf:/etc/mysql/conf.d
      - ./data/mysql_init:/docker-entrypoint-initdb.d
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: love1314
      MYSQL_DATABASE: wordpress_www_zfou_net
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
  wordpress_1:
    image: wordpress:latest
    container_name: wordpress_www.zfou.net
    volumes:
      - ./wwwroot/www.zfou.net:/var/www/html
    depends_on:
      - db
    links:
      - db:mysql
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress_www_zfou_net
  • docker 命令
# login to database by docker-compose
docker-compose exec db mysql -uroot -p -e 'show databases;'

Nginx

wordpress.conf 配置文件需要写入系统 Nginx 配置中,作为反向代理,转发请求至 docker 服务中的 Nginx

# ./app/nginx/wordpress.conf
upstream wordpress-host {
    server 127.0.0.1:8000 fail_timeout=10s;
    #server 127.0.0.1:8001 fail_timeout=10s;
}
server {
    listen       80;
    server_name  zfou.net www.zfou.net m.zfou.net;
    #client_max_body_size 10M;

    location / {
        proxy_pass  http://wordpress-host;
        proxy_http_version 1.1;
        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   Connection       "";
    }

    # config for gzip
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 4;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_types text/plain application/javascript application/x-javascript
text/css application/xml text/javascript image/jpeg image/gif image/png;
    gzip_vary on;
}
cp ./app/nginx/wordpress.conf /etc/nginx/conf.d/wordpress.conf

vhost 配置文件挂载到 docker 服务中的 Nginx 配置下

# ./app/nginx/vhost/www.zfou.net.conf
server {
    listen       80;
    server_name  zfou.net www.zfou.net;

    location / {
        #proxy_pass  http://127.0.0.1:8000;
        proxy_pass  wordpress_1:80;
        #proxy_http_version 1.1;
        #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   Connection       "";
    }

    #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;
    }

    # config for gzip
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 4;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_types text/plain application/javascript application/x-javascript
text/css application/xml text/javascript image/jpeg image/gif image/png;
    gzip_vary on;
}

MySQL

  • mysql_init

docker 创建 mysql 容器时,会初始化数据库,初始化文件依赖于此

  • 01-databases.sql
# 01-databases.sql

# create databases if it doesn't exist
# CREATE DATABASE IF NOT EXISTS `wordpress_www_zfou_net`;

# create wordpress user and grant rights
# CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress';
# GRANT ALL ON wordpress_*.* TO 'wordpress'@'%';

Typecho

暂采用 docker image + sqlite3 方案,站点不大,暂时不使用 MySQL 故,数据全部在 ./wwwroot/m.zfou.net/ 目录下,sqlite数据库文件在 ./wwwroot/m.zfou.net/usr/m.zfou.net.db

  • nginx

调整 nginx wordpress.conf 配置文件 增加 nginx vhost 配置文件

  • docker-compose.yml

增加 typecho 片段

services:
  nginx:
    ...
    links:
      - wordpress_1:wordpress
      - typecho_1:typecho
    ...
  ...
  typecho_1:
    image: yangxuan8282/typecho
    container_name: typecho_m.zfou.net
    restart: "always"
    volumes:
      - "./wwwroot/m.zfou.net:/var/www/html"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment