原文地址: https://blog.csdn.net/u011781521/article/details/79056974

一、框架简介

AG-Admin是基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。核心技术采用Eureka、Fegin、Ribbon、Zuul、Hystrix、JWT
Token、Mybatis等主要框架和中间件,前端采用vue-element-admin组件。

模块说明:

二、环境搭建

(一)、导入源码

首先下载源码到本地,这里下载的2.2版本,最新的有可能有问题。。。

然后导入到IDEA中,并更新maven依赖,由于项目中使用了lombok,所有需要安装lombok插件,否则你的IDE会报代码缺失。

项目结构如下

├─ace-security

│  │  

│  ├─ace-admin----------------管理端服务层

│  │ 

│  ├─ace-auth-----------------鉴权中心

│  │ 

│  ├─ace-gate-----------------网关负载中心

│  │ 

│  ├─ace-center---------------服务注册中心

│  │   

│  ├─ace-monitor--------------统一监控中心

│  │

│  ├─ace-config---------------统一配置中心

│  │

│  ├─ace-api------------------公共服务接口包

│  │

│  ├─ace-demo-----------------示例服务代码

│  │

│  └─ace-sidebar--------------调用第三方语言

(二)、安装Redis与rabbitmq和node

Redis安装可参考我先前的zheng环境搭建篇,node安装也很简单一直下一步下一步,就行了,安装好之后,更换成淘宝源就行了。

2.1、rabbitmq安装

Rabbit MQ 是建立在Erlang OTP平台上,所以在安装rabbitMQ之前,需要先安装Erlang ,下载地址为http://www.erlang.org/downloads

下载好之后,双击进行安装

安装完成之后创建一个名为ERLANG_HOME的环境变量,其值指向erlang的安装目录

同时将%ERLANG_HOME%\bin加入到Path中

最后打开命令行,输入erl

如果出现erlang的版本信息就表示erlang语言环境安装成功;

然后下载Rabbitmq,下载地址为:http://www.rabbitmq.com/download.html

下载好之后,双击进行安装

默认安装的RabbitMQ 监听端口是5672,默认用户名:guest,密码:guest。

2.2、RabbitMQ-Plugins插件安装

这个插件相当于是一个管理界面,方便我们在浏览器界面查看RabbitMQ各个消息队列以及exchange的工作情况,安装方法是:打开命令行cd进入rabbitmq的sbin目录(我的目录是:C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.2\sbin),输入:

  1. rabbitmq-plugins enable rabbitmq_management

命令,稍等会会发现出现plugins安装成功的提示

然后重启服务,使用命令(此时最后以管理员运行CMD):

  1. net stop RabbitMQ && net start RabbitMQ

插件安装完之后,在浏览器输入http://localhost:15672进行验证

(三)、初始化数据

分别导入ace-admin/db/init.sql、ace-auth-server/db/init.sql 这两个脚本,导入成功之后,会创建ag_admin和ag_auth两个数据库以及以下一些表:

表竟然没有中文注释。。。。

(四)、配置hosts文件

    1. 127.0.0.1 ace-admin
      1. 127.0.0.1 ACE-ADMIN
    1.  

    修改项目里所有的defaultZone参数,他默认用的是docker,但是我们是这本地开发的,所以改成本地的

    (五)、修改数据库配置文件

    修改ace-admin/src/main/resources/application.yml、ace-gate/src/main/resources/application.yml这两个配置文件中连接数据库的一些信息:

    (六)、按顺序运行main类:CenterBootstrap(ace-center)、ConfigServerBootstrap(ace-config)、AuthBootstrap(ace-auth-server)、AdminBootstrap(ace-admin)、GateBootstrap(ace-gate)

    如果报以下错误MQ超时:

    1. Caused by: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:62) at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:368) at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:565) at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1430) at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1411) at org.springframework.amqp.rabbit.core.RabbitTemplate.send(RabbitTemplate.java:712) at org.springframework.integration.amqp.outbound.AmqpOutboundEndpoint.send(AmqpOutboundEndpoint.java:134) at org.springframework.integration.amqp.outbound.AmqpOutboundEndpoint.handleRequestMessage(AmqpOutboundEndpoint.java:122) at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:109) at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:127) ... 55 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:50) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:907) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:859) at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:799) at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:352) ... 63 more

    基本上就是MQ配置有问题。

    如果报以下错误:

      1. Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
        1. 2018-01-14 17:25:15.447 ERROR [bootstrap,,,] 16896 --- [ main] o.s.boot.SpringApplication : Application startup failed
            1. java.lang.IllegalStateException: Failed to execute CommandLineRunner
              1. at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:735)
                1. at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:716)
                  1. at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:703)
                    1. at org.springframework.boot.SpringApplication.run(SpringApplication.java:304)
                      1. at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134)
                        1. at com.github.wxiaoqi.security.admin.AdminBootstrap.main(AdminBootstrap.java:31)
                          1. Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: ServiceAuthFeign#getUserPublicKey(String,String) timed-out and no fallback available.
                            1. at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:819)
                              1. at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:804)
                                1. at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:140)
                                  1. at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)
                                    1. at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)
                                      1. at com.netflix.hystrix.AbstractCommand$DeprecatedOnFallbackHookApplication$1.onError(AbstractCommand.java:1472)
                                        1. at com.netflix.hystrix.AbstractCommand$FallbackHookApplication$1.onError(AbstractCommand.java:1397)
                                          1. at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)
                                            1. at rx.observers.Subscribers$5.onError(Subscribers.java:230)
                                              1. at rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:44)
                                                1. at rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:28)
                                                  1. at rx.Observable.unsafeSubscribe(Observable.java:10211)
                                                    1. at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:51)
                                                      1. at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:35)
                                                        1. at rx.Observable.unsafeSubscribe(Observable.java:10211)
                                                          1. at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
                                                            1. at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
                                                              1. at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
                                                                1. at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
                                                                  1. at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
                                                                    1. at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
                                                                      1. at rx.Observable.unsafeSubscribe(Observable.java:10211)
                                                                        1. at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
                                                                          1. at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
                                                                            1. at rx.Observable.unsafeSubscribe(Observable.java:10211)
                                                                              1. at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
                                                                                1. at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
                                                                                  1. at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
                                                                                    1. at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
                                                                                      1. at rx.Observable.unsafeSubscribe(Observable.java:10211)
                                                                                        1. at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41)
                                                                                          1. at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30)
                                                                                            1. at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
                                                                                              1. at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
                                                                                                1. at rx.Observable.unsafeSubscribe(Observable.java:10211)
                                                                                                  1. at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:142)
                                                                                                    1. at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)
                                                                                                      1. at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)
                                                                                                        1. at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$1$1.run(AbstractCommand.java:1154)
                                                                                                          1. at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:45)
                                                                                                            1. at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable$1.call(HystrixContextRunnable.java:41)
                                                                                                              1. at org.springframework.cloud.sleuth.instrument.hystrix.SleuthHystrixConcurrencyStrategy$HystrixTraceCallable.call(SleuthHystrixConcurrencyStrategy.java:154)
                                                                                                                1. at com.netflix.hystrix.strategy.concurrency.HystrixContextRunnable.run(HystrixContextRunnable.java:61)
                                                                                                                  1. at com.netflix.hystrix.AbstractCommand$HystrixObservableTimeoutOperator$1.tick(AbstractCommand.java:1159)
                                                                                                                    1. at com.netflix.hystrix.util.HystrixTimer$1.run(HystrixTimer.java:99)
                                                                                                                      1. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
                                                                                                                        1. at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
                                                                                                                          1. at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
                                                                                                                            1. at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
                                                                                                                              1. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                                                                                                                                1. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                                                                                                                                  1. at java.lang.Thread.run(Thread.java:748)
                                                                                                                                    1. Caused by: java.util.concurrent.TimeoutException: null
                                                                                                                                      1. at com.netflix.hystrix.AbstractCommand.handleTimeoutViaFallback(AbstractCommand.java:997)
                                                                                                                                        1. at com.netflix.hystrix.AbstractCommand.access$500(AbstractCommand.java:60)
                                                                                                                                          1. at com.netflix.hystrix.AbstractCommand$12.call(AbstractCommand.java:610)
                                                                                                                                            1. at com.netflix.hystrix.AbstractCommand$12.call(AbstractCommand.java:601)
                                                                                                                                              1. at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:140)
                                                                                                                                                1. ... 16 common frames omitted
                                                                                                                                              1.  

                                                                                                                                              版本问题。。

                                                                                                                                              全部启动之后

                                                                                                                                              (七)、启动前端项目

                                                                                                                                              首先下载UI:https://gitee.com/geek_qi/AG-Admin-v2.0 下载下来之后,解压如下

                                                                                                                                              然后在该目录下执行以下命令安装依赖,用的是淘宝的源,不清楚地朋友可以百度node更换淘宝源:

                                                                                                                                              1. cnpm install

                                                                                                                                              安装成功之后,会多出一个node_modules目录

                                                                                                                                              然后启动服务

                                                                                                                                                1. # 本地开发 开启服务
                                                                                                                                                  1. npm run dev
                                                                                                                                                1.  

                                                                                                                                                他会自动打开浏览器,访问该页面

                                                                                                                                                然后点击登陆。

                                                                                                                                                登陆成功之后如上。。

                                                                                                                                                (八)、部署nginx配置参考

                                                                                                                                                nginx配置如下:

                                                                                                                                                  1. location / {
                                                                                                                                                    1. # 指向我们打包后上传的前端文件
                                                                                                                                                      1. root /opt/nginx/dist;
                                                                                                                                                        1. index index.html;
                                                                                                                                                          1. }
                                                                                                                                                            1. location /jwt/ {
                                                                                                                                                              1. # 转发请求到后端服务网关
                                                                                                                                                                1. proxy_pass http://127.0.0.1:8765/jwt/;
                                                                                                                                                                  1. }
                                                                                                                                                                    1. location /api/ {
                                                                                                                                                                      1. proxy_pass http://127.0.0.1:8765/api/;
                                                                                                                                                                        1. }
                                                                                                                                                                      1.  

                                                                                                                                                                      很简单,不会的可参考我前两篇文章的配置。。

                                                                                                                                                                      开源项目学习之------AG-Admin环境搭建的更多相关文章

                                                                                                                                                                      1. [原]项目进阶 之 持续构建环境搭建(三)Maven环境搭建

                                                                                                                                                                        上次的博文项目进阶 之 持续构建环境搭建(二)Nexus私服器中,我们搭建了一个Nexus的maven私服,这次我们来重点讲解一下Maven的安装和配置.这里说明一下这次的环境搭建,比较基础,但却非常 ...

                                                                                                                                                                      2. [原]项目进阶 之 持续构建环境搭建(二)Nexus私服器

                                                                                                                                                                        上一篇博文项目进阶 之 持续构建环境搭建(一)架构中,我们大致讲解了一下本系列所搭建环境的基本框架,这次开始我们进入真正的环境搭建实战.重点不在于搭建的环境是否成功和完善,而是在搭建过程中充分认识到每 ...

                                                                                                                                                                      3. [置顶] 项目进阶 之 持续构建环境搭建(二)Nexus私服器

                                                                                                                                                                        上一篇博文项目进阶 之 持续构建环境搭建(一)架构中,我们大致讲解了一下本系列所搭建环境的基本框架,这次开始我们进入真正的环境搭建实战.重点不在于搭建的环境是否成功和完善,而是在搭建过程中充分认识到每 ...

                                                                                                                                                                      4. Nutch1.7学习笔记:基本环境搭建及使用

                                                                                                                                                                        Nutch1.7学习笔记:基本环境搭建及使用 作者:雨水,时间:2013-10-31博客地址:http://blog.csdn.net/gobitan 说明:Nutch有两个主版本1.x和2.x,它们 ...

                                                                                                                                                                      5. opengl基础学习专题 (一 )编程环境搭建

                                                                                                                                                                        题外话: 第一次在博客园上同大家分享博文.水的的地方,错别字的地方.环境交流.批评.知道了马上改. 以前在百度空间中写技术分享博文,后来百度啥也没说就把整个空间封了.当时感觉 还是有点寒心.只想黑一下 ...

                                                                                                                                                                      6. Koa2学习(一)环境搭建

                                                                                                                                                                        Koa2学习(一)环境搭建 koa2脚手架 koa2服务安装 koa2-generator目录结构 什么是 Koa2 koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更 ...

                                                                                                                                                                      7. GJM : 用JIRA管理你的项目(一)JIRA环境搭建 [转载]

                                                                                                                                                                        感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

                                                                                                                                                                      8. 转:从开源项目学习 C 语言基本的编码规则

                                                                                                                                                                        从开源项目学习 C 语言基本的编码规则 每个项目都有自己的风格指南:一组有关怎样为那个项目编码约定.一些经理选择基本的编码规则,另一些经理则更偏好非常高级的规则,对许多项目而言则没有特定的编码规则,项 ...

                                                                                                                                                                      9. MyBatis学习系列一之环境搭建

                                                                                                                                                                        目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 学习一个新的知识,首先做一个简单的例子使用一下,然后再逐步深入.MyBat ...

                                                                                                                                                                      10. 项目进阶 之 集群环境搭建(三)多管理节点MySQL集群

                                                                                                                                                                        上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点 ...

                                                                                                                                                                      随机推荐

                                                                                                                                                                      1. 【2017中国大学生程序设计竞赛 - 网络选拔赛 && hdu 6154】CaoHaha's staff

                                                                                                                                                                        [链接]点击打开链接 [题意] 给你一个面积,让你求围成这个面积最少需要几条边,其中边的连线只能是在坐标轴上边长为1的的线或者是两个边长为1 的线的对角线. [题解] 找规律题 考虑s[i]表示i条边 ...

                                                                                                                                                                      2. Mysql学习总结(14)——Mysql主从复制配置

                                                                                                                                                                        mysql主从复制 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:   1.1.版本一致   1.2.初始化表,并在后台启动mysql   1.3. ...

                                                                                                                                                                      3. 重写ajax方法实现异步请求session过期时跳转登录页面(转)

                                                                                                                                                                        一般我们会在过滤器里判断登录状态,如果没登录就跳转登录页面,过滤器java核心代码如下: UserItem loginUser = (UserItem)request.getSession().get ...

                                                                                                                                                                      4. 利用动态图层实现数据的实时显示(arcEngine IDynamiclayer)

                                                                                                                                                                        marine 原文利用动态图层实现数据的实时显示(arcEngine IDynamiclayer) 说明:最近一个项目用到这方面知识,文章主要来至网络,后期会加入自己的开发心得.(以下的代码实例中,地 ...

                                                                                                                                                                      5. C/C++ 程序的跟踪和分析工具 uftrace

                                                                                                                                                                        uftrace 用于跟踪和分析 C/C++ 编写的程序的执行情况,它受到 Linux 内核的 ftrace 框架的启发(特别是 function graph tracer),支持 userspace ...

                                                                                                                                                                      6. DOCKER学习心得

                                                                                                                                                                        原文:DOCKER学习心得   前言: Docker的主要学习心得来源于<docker技术入门与实战> --2019.1.1->2019.1.5 la 着重从基础部分--实例分析-- ...

                                                                                                                                                                      7. embed-it_Integrator memory compile工具使用之二

                                                                                                                                                                        embed-it_Integrator memory compile工具使用之二 主要内容 使用ish接口自动加载memory的cfg文件运行生成memory 脚本内容 打开Integrate &am ...

                                                                                                                                                                      8. 对象模型图(OMD)阅读指南

                                                                                                                                                                        樱木 原文 对象模型图(OMD)阅读指南(转载) 补充几个名词概念: UML:Unified Modeling Language 统一建模语言,是用来对软件密集系统进行可视化建模的一种语言.UML为面 ...

                                                                                                                                                                      9. 【奇葩笔试】—— printf() 作为函数的参数及其返回值

                                                                                                                                                                        int f(int a, int b, int c){ return 0; } int main(int, char**){ f(printf("a"), printf(" ...

                                                                                                                                                                      10. MHA 一主两从搭建-脚本VIP-自动切换

                                                                                                                                                                        环境介绍:主机名 IP MHA角色 MySQL角色node1 192.168.56.26 Node MySQL Master node2 192.168.56.27 Node MySQL Master ...