这一年干的很多事都是为了 升高 我的开源我的项目音讯推送平台 austin应用门槛。
如果想学 Java 我的项目的,强烈推荐 我的开源我的项目 音讯推送平台 Austin(8K stars),能够用作 毕业设计 ,能够用作 校招 ,能够看看 生产环境是怎么推送音讯 的。开源我的项目音讯推送平台 austin 仓库地址:
音讯推送平台🔥推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等音讯类型。
- https://gitee.com/zhongfucheng/austin/
- https://github.com/ZhongFuCheng3y/austin
明天想跟大家聊的是 austin 的部署体验问题,很多人可能 MySQL 和 Redis 都不想手动装,就想把我的项目给启动起来体验下,看看无能些什么。我想了一下,要想达到这个成果,那当初应该 docker-compose 部署是比拟适合的了。
但因为当初 austin 还在继续更新,近期应该还没有一个稳固的版本,所以目前我是基于”源码打包“的形式去做的。把我的服务器给重装下,让大家感触下。
所需的必要依赖
基于零碎:Centos 7.6 x86_64
1、JDK 1.8
2、Maven
3、Git
4、docker
5、docker-compose
6、npm(前端依赖)
这些必要的依赖,个别开发机器上都会有的把?什么?还没有?那我只能把服务器给重装一遍,手把手 带着大家来一遍吧。
JDK8 装置
查看能够装的 JDK 版本:
yum search java|grep jdk
下载 JDK 1.8
(装置目录在:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64)
(默认只有 JRE)
yum install java-1.8.0-openjdk.x86_64
为了后续装置 Maven,所以要把 JDK 也装置上:
yum install java-1.8.0-openjdk-devel.x86_64
设置环境变量
vi /etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
source /etc/profile
查看是否装置胜利:
java -version
装置 Git
间接应用 yum 装置:
yum install git
查看是否胜利:
git
装置 Maven
间接应用 wget 装置:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz --no-check-certificate
解压装置失去的 maven
tar -zxvf apache-maven-3.6.3-bin.tar.gz
配置环境变量:
(我的装置目录就在 /root/apache-maven-3.6.3)
vi /etc/profile
MAVEN_HOME=/root/apache-maven-3.6.3
export PATH=${MAVEN_HOME}/bin:${PATH}
source /etc/profile
查看是否装置胜利:
mvn -v
顺带把 maven 的镜像也改掉吧,不然官网默认的下载很慢:
(我的装置目录就在 /root/apache-maven-3.6.3)
vim /root/apache-maven-3.6.3/conf/settings.xml
退出镜像配置:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
装置 Docker
首先咱们须要装置 GCC 相干的环境:
yum -y install gcc
yum -y install gcc-c++
装置 Docker 须要的依赖软件包:
yum install -y yum-utils device-mapper-persistent-data lvm2
设置国内的镜像(进步速度)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 软件包索引:
yum makecache fast
装置 DOCKER CE(留神:Docker 分为 CE 版和 EE 版,个别咱们用 CE 版就够用了.)
yum -y install docker-ce
启动 Docker:
systemctl start docker
下载回来的 Docker 版本::
docker version
运行以下命令以下载 Docker Compose 的以后稳固版本:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
将可执行权限利用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose
创立软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否装置胜利:
docker-compose --version
装置 NPM
下载 npm 包:
wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz
解压:
tar -xvf node-v10.14.1-linux-x64.tar.gz
增加环境变量:
(我的装置目录在:/root/node-v10.14.1-linux-x64)
vi /etc/profile
export NODE_HOME=/root/node-v10.14.1-linux-x64
export PATH=$NODE_HOME/bin:$PATH
source /etc/profile
看看装置胜利了没有:
node -v
下载 pm2 来启动前端我的项目:
npm install -g pm2
DOCKER-COMPOSE 启动 AUSTIN
先新建一个文件夹寄存 austin 的我的项目吧:
mkdir 3y
进入到文件夹中:
cd 3y
克隆 austin 后端的代码:
git clone https://gitee.com/zhongfucheng/austin.git
克隆 austin 前端的代码:
git clone https://gitee.com/zhongfucheng/austin-admin.git
进入到 austin 后端的我的项目里:
cd austin/
用 mvn 命令打包
mvn clean package
通过一顿的包依赖下载之后,咱们就能看到打包曾经胜利了
到这,咱们就能够应用 docker-compose 来启动 Austin:
docker-compose up --build
docker-compose 把 mysql/flink/redis/xxl-job/kafka/nacos 等我的项目用到的依赖都曾经打进去了,一键就会把各种环境启动起来!
version: '3'
services:
austin-mysql:
environment:
TZ: Asia/Shanghai
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: "root123_A"
restart: always
container_name: austin-mysql
image: mysql:5.7
hostname: mysql
command: --init-file /docker-entrypoint-initdb.d/init.sql
volumes:
- ./sql/austin.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "3306:3306"
networks:
- app
austin-redis:
image: redis:3.2
ports:
- "6379:6379"
restart: always
container_name: austin-redis
volumes:
- ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw
command:
/bin/bash -c "redis-server /usr/local/etc/redis/redis.conf"
networks:
- app
austin-zookeeper:
image: wurstmeister/zookeeper
container_name: austin-zookeeper
volumes:
- "/etc/localtime:/etc/localtime"
ports:
- "2181:2181"
networks:
- app
austin-kafka:
image: wurstmeister/kafka
container_name: austin-kafka
volumes:
- "/etc/localtime:/etc/localtime"
environment:
KAFKA_BROKER_ID: 0
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://austin-kafka:9092
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ZOOKEEPER_CONNECT: austin-zookeeper:2181
KAFKA_CREATE_TOPICS: "austinBusiness:1:1,austinRecall:1:1,austinTraceLog:1:1"
KAFKA_HEAP_OPTS: -Xmx512M -Xms256M
ports:
- "9092:9092"
depends_on:
- austin-zookeeper
networks:
- app
jobmanager:
image: flink:latest
ports:
- "8081:8081"
command:
- jobmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
- SET_CONTAINER_TIMEZONE=true
- CONTAINER_TIMEZONE=Asia/Shanghai
- TZ=Asia/Shanghai
volumes:
- ./austin-stream/target/austin-stream-0.0.1-SNAPSHOT.jar:/opt/austin-stream-0.0.1-SNAPSHOT.jar:rw
depends_on:
- austin-zookeeper
- austin-kafka
networks:
- app
taskmanager:
image: flink:latest
depends_on:
- jobmanager
- austin-zookeeper
- austin-kafka
command: taskmanager
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 2
- SET_CONTAINER_TIMEZONE=true
- CONTAINER_TIMEZONE=Asia/Shanghai
- TZ=Asia/Shanghai
networks:
- app
austin-xxl-job:
image: xuxueli/xxl-job-admin:2.3.0
container_name: austin-xxl-job
ports:
- "8080:8080"
environment:
PARAMS: '--spring.datasource.url=jdbc:mysql://austin-mysql:3306/xxl_job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=root --spring.datasource.password=root123_A'
networks:
- app
depends_on:
- austin-mysql
austin-nacos:
container_name: austin-nacos-server
image: nacos/nacos-server:v2.1.0
environment:
- MODE=standalone
- PREFER_HOST_MODE=hostname
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=austin-mysql
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=root123_A
- MYSQL_SERVICE_DB_NAME=nacos_config
- JVM_XMS=128m
- JVM_XMX=128m
- JVM_XMN=128m
volumes:
- /home/nacos/single-logs/nacos-server:/home/nacos/logs
- /home/nacos/init.d:/home/nacos/init.d
ports:
- 8848:8848
- 9848:9848
- 9849:9849
depends_on:
- austin-mysql
restart: on-failure
networks:
- app
austin:
build:
context: ./
ports:
- "7777:7777"
restart: always
container_name: austin
environment:
- SET_CONTAINER_TIMEZONE=true
- CONTAINER_TIMEZONE=Asia/Shanghai
- TZ=Asia/Shanghai
depends_on:
- austin-redis
- austin-mysql
- austin-zookeeper
- austin-kafka
- austin-xxl-job
- austin-nacos
networks:
- app
networks:
app:
启动前端 AUSTIN-ADMIN
去到 austin-admin 的目录下
cd /root/3y/austin-admin
装置必要的依赖:
npm i
把后端的申请链接改为本人的地址:
vim index.html
改完之后,间接启动:
pm2 start server.js
(如果端口 3000 曾经存在了,能够批改 server.js 的配置)
验证性能有无问题
咱们就以邮件为例,先建个邮件账号:
建个音讯模板:
点个测试按钮看看后端的日志是否失常:
后话
看着文章的内容很多,实际上当咱们领有了这些开发环境了之后,部署只是一行简略的 docker-compose 命令,要实现这个玩意依赖的就俩个文件:docker-compose.yml和Dockerfile
这两个文件写起来倒是简略,预先看完也感觉简略,然而中途还是遇到了不少的坑的。至于坑嘛,这玩意还是得本人一步一步踩才有意思,我即使写了,你没遇到也不会有啥感触的。
有了当初这个环境了当前,前面等我更新内容,你们就能够间接 pull 下最新的代码,编译打包一下,用 docker-compose 启动就完事啦。
如果想学 Java 我的项目的,强烈推荐 我的开源我的项目 音讯推送平台 Austin(8K stars),能够用作 毕业设计 ,能够用作 校招 ,能够看看 生产环境是怎么推送音讯 的。开源我的项目音讯推送平台 austin 仓库地址:
音讯推送平台🔥推送下发【邮件】【短信】【微信服务号】【微信小程序】【企业微信】【钉钉】等音讯类型。
- https://gitee.com/zhongfucheng/austin/
- https://github.com/ZhongFuCheng3y/austin