Nginx安装

所有中间件的 IP:PORT 均使用 ngxin 进行代理为 domain,无法完全代理 IP:PORT 的中间件则只代理 IP地址,使用 domain:PORT 的方式进行访问。

目录结构

.
├── conf
│   ├── conf.d
│   │   ├── emqx.conf
│   │   ├── mariadb.conf
│   │   ├── fastdfs.conf
│   │   └── rabbitmq.conf
│   └── nginx.conf
├── docker-compose.yml
├── log
│   ├── access.log
│   └── error.log

docker-compose.yaml 文件

version: '2.0'
services:
  nginx:
    container_name: nginx
    image: nginx:1.17.4
    restart: always
    ports:
      - 80:80
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf
      - ./conf/conf.d:/etc/nginx/conf.d
      - ./log:/var/log/nginx
      - /mnt/vue:/var/www

注意事项:

  • ./conf/nginx.conf:/etc/nginx/nginx.conf 这个配置必须提前编写好,其他文件可不比建立,系统会自动生成。具体 nginx.conf 文件配置后面给出。
  • /mnt/vue:/var/www 这个配置对应静态文件部署位置,前后端分离时,前端 vue 打包的代码需放置 /mnt/vue 这个目录下

nginx.conf 文件

user  nginx;
worker_processes  1;
 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
 
#pid        logs/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 200M;
 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    #access_log  logs/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
 
    include /etc/nginx/conf.d/*.conf;
}

使用 nginx 做域名代理

  • 在代理之前,请在阿里云将 `*.test.domain 域名解析至具体IP 下
  • 只有HTTP连接需要配置,tcp连接(例如数据库)不用配置
  • 具体配置

只举例一个 rabbitmq.conf

server {
    listen       80;
    server_name  mq.test.domain;
 
    location / {
       proxy_pass http://ip:port/;
    }
}

nginx 启动

##进入nginx根目录
cd /mnt/docker/nginx
##启动docker
docker-compose up -d

mariadb 安装

目录结构

.
├── mysql
├── docker-compose.yaml
├── builds
│   └── mysql
│       └── my.conf
└── data

docker-compose.yaml 文件

version: '2.0'
services:
  mysql:
    container_name: mariadb
    image: mariadb:10.4.8
    restart: always
    ports:
    - 3306:3306
    environment:
    - MYSQL_ROOT_PASSWORD=password
    - TZ=Asia/Shanghai
    volumes:
      - ./mysql:/var/lib/mysql
      - ./builds/mysql/my.cnf:/etc/mysql/my.cnf
      - ./data:/data

注意事项:

  • ./builds/mysql/my.cnf:/etc/mysql/my.cnf 中的 my.cnf 需要自己手动新建

my.cnf 文件

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

mariadb 启动

##进入mariadb根目录
cd /mnt/docker/mariadb
##启动docker
docker-compose up -d

rabbitmq 安装

目录结构

.
├── data
└── docker-compose.yml

docker-compose.yaml` 文件

version: '3'
services:
  rabbitmq:
    container_name: rabbitmq
    image: rabbitmq:3.7.7-management
    environment:
      - RABBITMQ_DEFAULT_USER=username
      - RABBITMQ_DEFAULT_PASS=password
    restart: always
    ports:
      - 15672:15672
      - 5672:5672
    volumes:
      - ./data:/var/lib/rabbitmq
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"

rabbitmq 启动

##进入rabbitmq根目录
cd /mnt/docker/rabbitmq
##启动docker
docker-compose up -d

rabbitmq 延时队列插件安装

  • 进入 rabbit 目录
`cd /mnt/docker/rabbitmq`
  • 下载插件包,因为我们的 RabbitMQ 版本为 3.7.7 所以我们安装 3.7.x 版本的延迟队列插件
`wget https:``//dl.bintray.com/rabbitmq/community-plugins/3.7.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171201-3.7.x.zip`
  • 解压
`unzip rabbitmq_delayed_message_exchange-``20171201``-``3.7``.x.zip`
  • 将插件放入容器中
`docker cp ./rabbitmq_delayed_message_exchange-``20171201``-``3.7``.x.ez rabbitmq:/plugins`
  • 进入容器
`docker exec -it rabbitmq /bin/bash``cd /plugins`
  • 启动延迟队列插件
`rabbitmq-plugins enable rabbitmq_delayed_message_exchange`
  • 退出容器
`exit`
  • 重启 Mq 服务
`docker restart rabbitmq`

nacos 安装

目录结构

.
├── docker-compose.yml
├── init.d
│   └── application.properties
└── logs

此结构中并非所有文件都需要手动新建,后续会提到,请继续看下文。

docker-compose.yaml 文件

version: '2.0'
services:
  nacos:
    container_name: nacos
    image: nacos/nacos-server
    restart: always
    ports:
      - 8848:8848
    environment:
      - MODE=standalone
      - TZ=Asia/Shanghai
    volumes:
      - ./logs/:/home/nacos/logs
      - ./init.d/application.properties:/home/nacos/init.d/custom.properties

注意事项:

  • ./init.d/application.properties:/home/nacos/init.d/custom.properties 中的 application.properties 需要自己手动新建

application.properties 文件

server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848
 
spring.datasource.platform=mysql
 
db.num=1
db.url.0=jdbc:mysql://ip:3306/nacos_devtest_prod?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=username
db.password=password
 
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
 
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false

nacos 启动

##进入nacos根目录
cd /mnt/docker/nacos
##启动docker
docker-compose up -d

redis 安装

目录结构

> .
├── docker-compose.yml
├── slave1
│   ├── Dockerfile
│   └── redis.conf
├── slave2
│   ├── Dockerfile
│   └── redis.conf
├── slave3
│   ├── Dockerfile
│   └── redis.conf
├── slave4
│   ├── Dockerfile
│   └── redis.conf
├── slave5
│   ├── Dockerfile
│   └── redis.conf
└── slave6
    ├── Dockerfile
    └── redis.conf

此结构中并非所有文件都需要手动新建,后续会提到,请继续看下文。

docker-compose.yaml 文件

redis-slave1:
  build: ./slave1
  ports:
    - 6061:6061
    - 16061:16061
redis-slave2:
  build: ./slave2
  ports:
    - 6062:6062
    - 16062:16062
redis-slave3:
  build: ./slave3
  ports:
    - 6063:6063
    - 16063:16063
redis-slave4:
  build: ./slave4
  ports:
    - 6064:6064
    - 16064:16064
redis-slave5:
  build: ./slave5
  ports:
    - 6065:6065
    - 16065:16065
redis-slave6:
  build: ./slave6
  ports:
    - 6066:6066
    - 16066:16066

Dockerfile 文件

#基础镜像
FROM redis
 
#将自定义conf文件拷入
COPYredis.conf/usr/local/etc/redis/redis.conf
 
#修复时区
RUNln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
RUNecho'Asia/Shanghai'>/etc/timezone
 
#修改文件权限,使之可以通过configrewrite重写
RUNchmod777/usr/local/etc/redis/redis.conf
 
#Redis客户端连接端口
EXPOSE6061
#集群总线端口:redis客户端连接的端口+10000
EXPOSE16061
 
#使用自定义conf启动
CMD["redis-server","/usr/local/etc/redis/redis.conf"]

redis.conf 文件


# bind 127.0.0.1 //加上注释#
protected-mode no //关闭保护模式
port 6061  //绑定自定义端口
#daemonize yes //禁止redis后台运行
pidfile /var/run/redis_6061.pid
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_6061.conf //集群的配置 配置文件首次启动自动生成

注意事项:

  • 此处 conf 只标注出需要改动的地方,并非完整的 conf 文件
  • 配置中,portpidfilecluster-config-file 三处 的端口号要根据节点对应的修改,从 6061-6066 六个节点,每个节点的配置文件都不一致。详情请看开头处文章内说明。

redis 启动

`##进入redis根目录``cd` `/mnt/docker/redis``##启动docker``docker-compose up -d`

集群绑定

docker run --rm -it zvelo/redis-trib create --replicas 1 120.78.69.151:6061 120.78.69.151:6062 120.78.69.151:6063 120.78.69.151:6064 120.78.69.151:6065 120.78.69.151:6066

设置密码

config set masterauth password
config set requirepass password
auth password
config rewrite

此处设置密码需依次进入每个 redis 内部执行命令,六个节点均需复制上述命令执行一次。并且密码必须一致。

FastDFS 安装

目录结构

.
├── data
│   ├── conf
│   │   └── cfg.json
│   ├── data
│   │   ├── fileserver.db
│   │   ├── log.db
│   │   └── stat.json
│   ├── files
│   ├── log
│   └── static
│       └── uppy.html
├── docker-compose.yaml
└── web
    ├── config
    │   ├── application-dev.properties
    │   ├── application-prod.properties
    │   ├── application.properties
    │   └── log4j.properties
    ├── db
    │   └── go-fastdfs.db
    ├── go-fastdfs-web-1.3.4.tar.gz
    ├── go-fastdfs-web.jar
    ├── goFastDfsWeb.sh
    ├── logs
    ├── README.md
    └── start.bat

此结构中并非所有文件都需要手动新建,后续会提到,请继续看下文。

docker-compose.yaml 文件

version: '3'
services:
  rabbitmq:
    container_name: fastdfs
    image: sjqzhang/go-fastdfs
    environment:
      - GO_FASTDFS_DIR=/data
    restart: always
    ports:
      - 22122:8080
    volumes:
      - ./data:/data

cfg.json 会自动生成,一般无需配置,但如若要使用控制台,请将 cfg.json 中的 admin_ips 加入服务器本身的内网地址。

FastDFS 服务启动

##进入FastDFS根目录
cd /mnt/docker/fastdfs
##启动docker
docker-compose up -d