AG-Admin微服務框架入門

 

AG-Admin微服務框架入門html

 @qq羣:一羣: 837736451  二羣 169824183前端

 

一 概要介紹

AG-Admin後臺地址:https://gitee.com/minull/ace-securityvue

AG-Admin前端地址:https://gitee.com/minull/AG-Admin-v2.0java

要想玩兒轉spring cloud必須進行一大波兒的學習哦,先有個心理準備。node

AG-Admin基於Spring Cloud微服務化開發平臺,具備統一受權、認證微服務雲框架。其中包含了服務註冊與發現、用戶管理、資源權限管理、網關API管理等多個模塊,支持多業務系統並行開發,是一個完整的微服務腳手架開發框架。mysql

AG-Admin採用先後端分離架構,前端基於vue-admin-element框架,項目地址:https://github.com/PanJiaChen/vue-element-adminreact

 

二 基礎安裝

1 下載安裝git

對git必要的熟練使用,由於現有的開源項目都是在git開源中國或者github上。你應具備熟練的項目拉取,提交代碼能力。說了那麼多來一個簡單的教程:https://backlog.com/git-tutorial/cn/nginx

2 下載安裝idea

請使用IDEA集成工具開發Spring應用,什麼eclipse,myeclipse仍是別了,來一個IDEA安裝教程git

http://www.javashuo.com/article/p-fhowitlg-ee.htmlgithub

 

3 下載安裝Maven,

安裝教程

https://www.cnblogs.com/yyiou/archive/2017/08/22/7411409.html

想進一步瞭解Maven:

http://www.javashuo.com/article/p-thrlmzag-hu.html

 

4 下載安裝nodejs

你應對前端框架Vue有所瞭解,或者對前端三大框架react,angular,vue任意一個框架有所瞭解,或者最低要求可以對nodejs有所瞭解。由於AG-Admin前端是基於vue的vue-admin-element一個 開源項目。來一個nodejs的入門教程:

http://www.javashuo.com/article/p-mpdcimfc-hw.html

5 下載並配置nginx

首先去Nginx官網下載一個最新版本的Nginx,下載地址:http://nginx.org/en/download.html。我這裏下載的版本是:nginx/Windows-1.11.6。下載完成以後,獲得一個.zip的壓縮包,把壓縮包解壓到D盤根目錄。

 

 

1) 修改配置文件。打開「conf」文件夾下的「nginx.conf」文件,使用以下配置所有覆蓋

 

#user  nobody;

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;

 

    #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;#長鏈接超時時間,單位秒

 

    #gzip  on;#啓用Gzip壓縮

 

   

    server{

        listen       8104;#監聽8020端口,能夠改爲其餘端口

        server_name  localhost;#當前服務的域名

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            if ($request_method = 'OPTIONS') {

                add_header 'Access-Control-Allow-Origin' 'http://localhost:9527';

                add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

                add_header 'Access-Control-Allow-Credentials' 'true';

                #

                # Custom headers and headers various browsers *should* be OK with but aren't

                #

                add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

                #

                # Tell client that this pre-flight info is valid for 20 days

                #

              

                return 204;

             }

            proxy_pass http://localhost:8765;

            proxy_redirect default;

            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_cookie_path /nginx/ /;

            proxy_set_header Cookie $http_cookie;

            proxy_cookie_domain domino.server localhost;

            include  uwsgi_params;

            add_header 'Access-Control-Allow-Origin' 'http://localhost:9527';

            add_header 'Access-Control-Allow-Credentials' 'true';

            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

            add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

        }

    }

 

 

}

 

 

 

2)打開命令行,定位到Nginx當前目錄,使用「start nginx」命令啓動nginx

6瞭解Spring boot

由於Ag-Admin是基於Spring Cloud,而Spring Cloud是基於Spring boot,所以他是基礎你必須有所瞭解。

來一個簡單的教程:

http://www.javashuo.com/article/p-gvdaraqu-hx.html

 

三 啓動AG-Admin

3.1 把AG-Admin弄到本身家裏來

克隆到本地

  

 

3.2 AG-Admin組成結構

使用idea打開

 

 

在這裏先認識一下API網關就能夠了,API網關是全部服務對外暴露API接口的惟一有效入口,也就是前端訪問後臺都是走API網關就能夠了,至於API網關具體怎麼回事先不要捉急去深究。其餘沒有標註的暫時不用去關心,咱們先入門,別急。

3.3 安裝Rabbit MQ

1)因爲Rabbit MQ是基於erlang所以先把erlang裝上,下載地址

http://www.erlang.org/downloads

安裝完成以後建立一個名爲ERLANG_HOME的環境變量,其值指向erlang的安裝目錄,同時將%ERLANG_HOME%\bin加入到Path中

 

 

 

進入cmd輸入:erl出現下圖說明安裝配置ok,若是不行請檢查上行步驟

 

下載安裝Rabbit MQ,地址:http://www.rabbitmq.com/download.html

 

 

 

默認安裝的RabbitMQ 監聽端口是5672,默認用戶名:guest,密碼:guest。

2)、RabbitMQ-Plugins插件安裝

這個插件至關因而一個管理界面,方便咱們在瀏覽器界面查看RabbitMQ各個消息隊列以及exchange的工做狀況,安裝方法是:打開命令行cd進入rabbitmq的sbin目錄(個人目錄是:C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.2\sbin),輸入:

 

rabbitmq-plugins enable rabbitmq_management

 

命令,稍等會會發現出現plugins安裝成功的提示

 

 

而後重啓服務,使用命令(此時最後以管理員運行CMD):

net stop RabbitMQ && net start RabbitMQ

 

 

插件安裝完以後,在瀏覽器輸入http://localhost:15672進行驗證

 

 

3.4 安裝redies

地址:https://github.com/MSOpenTech/redis/releases

 

 

啓動resies-server

 

 

 

3.5 數據庫

分別執行ace-admin/db/init.sql、ace-auth-server/db/init.sql 這兩個腳本,執行成功以後,會建立ag_admin_v1和ag_auth_v1兩個數據庫以及如下一些表:

 

 

配置hosts文件

進入:C:\Windows\System32\drivers\etc

將hosts拷貝到桌面而後使用記事本打開,加入如下2句,保存將後將桌面上的hosts文件複製,到原來系統路徑下的hosts粘貼覆蓋

127.0.0.1 ace-admin

127.0.0.1 ACE-ADMIN

3.6 修改配置

修改ace-admin/src/main/resources/application.yml、ace-auth/src/main/resources/application.yml這兩個配置文件中鏈接數據庫的一些信息:

 

 

同時注意Rabbit MQ連接配置檢查一遍

 

 

修改項目裏全部的defaultZone參數,他默認用的是docker,可是咱們是這本地開發的,因此改爲本地的

 

 

 

3.7 啓動

1)啓動ace-center,是註冊發現服務他是全部服務的中心

 

 

2)啓動ace-auth,是認證中心

 

 

3)啓動ace-admin,他在ace-modules下面是指向ag_admin_v1數據庫的基礎數據服務

 

 

4)啓動ace-gate,網關

 

 

5)啓動前端項目,AG-Admin-v2.0

找到該目錄下將base_api地址 修改成:http://localhost:8104

 

 

取消如圖文件的註釋保存

 

 

在cmd中進入項目目錄:個人是E:\git\vue\AG-Admin-v2.0

輸入:npm install --registry=https://registry.npm.taobao.org

若是已經安裝了cnpm,則直接輸入cnpm install

 

 

等待安裝完成後輸入npm run dev便可在瀏覽器打開:localhost:9527

若是是非H5瀏覽器請下載使用chrome瀏覽器而後把地址粘貼過來

 

 

使用postman登陸

 

 

四 常見問題FAQ

4.1 ace-auth,或者ace-admin啓動過程當中控制檯有異常輸出,控制檯輸出非mysql鏈接錯誤。或者一些類找不到

這個應該是spring cloud版本問題,請將本身maven本地倉庫下全部文件刪除,C:\Users\Administrator\.m2

 

 

而後在ag-admin下面找到pom.xml隨便修改一下內容,而後等到ideam提示導入修改,而後再次撤銷剛纔的修改,再次應用修改,這樣作的目的是爲了讓maven再次下載spring cloud所有依賴,這個過程可能須要等待個10多分鐘,等再次下載完成而後按照啓動順序啓動。

 

 

 

 

4.2 提示數據庫datasource異常

請檢查各自項目下的application.yml文件中的mysql配置是否正確

4.3 提示mq鏈接異常

請檢查application.yml文件中mq配置是否正確,能夠經過http://localhost:15672/,guest,guest查看mq可否能夠用

4.4 提示redies鏈接異常

請檢查application.yml文件中redies配置是否正確,或者redies是否啓動

4.5 登陸過程當中提示ace-admin相關鏈接超時

首先應檢查ace-admin啓動過程當中控制檯有無異常輸出,若是異常輸出請檢查是否屬於上面的問題,若是不是能夠嘗試修改application.yml裏面的超時設置單位爲微秒

 

 

 

 

4.6 ace-gate 部署後運行報找不到main類異常

這個是由於ace-gate的maven配置沒有加入spring boot的緣故所以在pom.xml加入一下配置從新編譯 部署。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <kotlin.version>1.1.51</kotlin.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
        <groupId>org.isomorphism</groupId>
        <artifactId>token-bucket</artifactId>
        <version>1.7</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib</artifactId>
        <version>${kotlin.version}</version>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-reflect</artifactId>
        <version>${kotlin.version}</version>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-sleuth-zipkin</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.amqp</groupId>
        <artifactId>spring-rabbit</artifactId>
    </dependency>

    <dependency>
        <groupId>com.github.wxiaoqi</groupId>
        <artifactId>ace-interface</artifactId>
        <version>2.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.github.wxiaoqi</groupId>
        <artifactId>ace-auth-client</artifactId>
        <version>2.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.github.wxiaoqi</groupId>
        <artifactId>ace-common</artifactId>
        <version>2.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.0.4.RELEASE</version>
    </dependency>
</dependencies>
<build>
    <finalName>ace-gate</finalName>
    <plugins>
        <!-- 此插件用來生成通用mapper的代碼 -->
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.2</version>
            <configuration>
                <configurationFile>${basedir}/src/main/resources/builder/generatorConfig.xml</configurationFile>
                <overwrite>true</overwrite>
                <verbose>true</verbose>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.30</version>
                    <scope>runtime</scope>
                </dependency>
                <dependency>
                    <groupId>tk.mybatis</groupId>
                    <artifactId>mapper</artifactId>
                    <version>${mapper.version}</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

 

五 更多交流

 @qq羣:一羣: 837736451  二羣 169824183

相關文章
相關標籤/搜索