回覆 PDF 領取資料 前端
這是悟空的第 96 篇原創文章java
做者 | 悟空聊架構node
來源 | 悟空聊架構(ID:PassJava666)mysql
轉載請聯繫受權(微信ID:PassJava)git
個人開源 Spring Cloud 項目 PassJava
一直是在 Windows 和 Ubuntu 上運行,最近不是換 Mac M1
了麼,想把這個項目在 M1 上也跑起來,畢竟個人那臺 Windows 用起來發燙,是該體驗下 M1 的性能了!github
由於 M1
的兼容性很差,因此從 0 開始跑這個項目的時候遇到了不少問題,好比 MySQL 工具常常打不開,前端 Vue 項目起不來,因此專門針對這些疑難雜症,我也作好了記錄,相信對使用 M1 的同窗有所幫助,另外想學習 Spring Cloud 的同窗也能夠參照個人開源項目學起來~面試
我把後端、前端、小程序都上傳到同一個倉庫裏面了,你們能夠經過 github
或 碼雲
訪問。地址以下:spring
Github: https://github.com/Jackson0714/PassJava-Platformsql
碼雲:https://gitee.com/jayh2018/PassJava-Platformchrome
配套教程:www.passjava.cn
總體的架構圖以下圖所示:
本文主要內容以下:
1、配置 Nacos
Nacos 做爲配置中心和註冊中心,是必需要啓動的。
1.1 下載地址
Nacos 下載地址:
https://github.com/alibaba/nacos/releases
最新版是 2.0.0-bugfix,我下載後,啓動成功了,可是沒法訪問 Nacos 後臺,懷疑是本地環境有問題,因此換了一個低版本的 1.4.1,能夠正常工做。另外我以前在 windows 機器上使用的 1.2.1 的版本,拷貝到 Mac 上也能正常運行。
1.2 啓動 Nacos
進入 nacos 根目錄,執行命令:
sh startup.sh -m standalone
執行後的結果以下圖所示:
看到 nacos is starting withi standalone 就表示啓動成功。注意:啓動成功不表明正常運行。
接下來訪問 nacos 的後臺管理系統:
http://127.0.0.1:8848/nacos/#/login
帳號和密碼都是 nacos
。
1.3 添加命名空間
添加 7 個微服務的命名空間:
新建命名空間時須要填寫的字段:
1.4 添加 question 微服務配置
在配置列表添加幾個微服務的配置,目前保證 question 微服務和 thirdparty 微服務有配置便可。
以下圖所示,添加三個配置項:數據源,mybatis 配置,其餘配置。詳細的配置參數參照這篇來配置:《SpringCloud 整合 Nacos 配置中心》。
1.5 添加 thirdparty 微服務配置
主要是配置阿里雲 OSS,用來保存圖片的。配置以下圖所示,key 須要你們到本身登錄到阿里雲並申請 OSS 才能獲取到。參照這篇《SpringCloud 實戰項目-整合 OSS 對象存儲》。
2、初始化數據
建立數據庫、表、初始化數據這些工做都須要作,下載一個 MySQL 客戶端仍是要方便點,而後找 Mac 上好用的客戶端軟件,下面是安裝軟件的艱辛歷程。
1.1 安裝 Mac 版 MySQL
首先須要安裝 mac 版的 MySQL,下載地址:
https://dev.mysql.com/downloads/mysql/
選擇第一個就能夠了,官網已經提示該版本兼容 Mac M1
Packages for Catalina (10.15) are compatible with Big Sur (11)
下載後點擊安裝,安裝成功後,到系統偏好配置裏面找到 MySQL,並單擊打開。
能夠看到運行的 MySQL 實例是 MySQL 8.0.23,且默認開機運行。
![]
2.2 安裝圖形化 MySQL 管理軟件
2.2.1 Workbench 在 M1 上不能運行
我試過安裝 workbench 後,不能運行。
2.2.2 Squel Pro 在 M1 上不能運行
安裝 Squel Pro 後,切換數據庫的時候程序崩潰。
2.2.3 Navicat
通過上面兩個軟件的崩潰後,我最後仍是下載了試用版的 Navicat,能夠免費用 14 天,對於初始化數據足夠了。
下載地址:
http://www.navicat.com.cn/download/navicat-for-mysql
下載 macOS 的最新版 15,它是兼容 M1 芯片的。
而後須要執行三個 SQL 文件,文件我已經上傳到倉庫上了,
/passjava-platform/data/sql
依次執行上面的三個文件後,會生成 6 個數據庫:一個系統數據庫,五個業務數據庫。
3、啓動微服務
主要啓動 4 個核心服務:網關微服務
、題目微服務
、第三方微服務
、系統管理微服務
。
架構圖以下所示:
目前這幾個微服務已經整合了 Nacos、OpenFeign、Gateway、統一異常處理、鏈路追蹤,Redis 等。
啓動都是基於 IDEA 開發工具直接啓動的,因此須要下載 IDEA。
3.1 下載安裝 IDEA
我安裝的 IDEA 是旗艦版 2020.3 的,試用版 30 天。你們能夠下載免費的社區版 Community,功能上也能知足。
性能很是快,個人 Windows 的配置:ThinkPad、 32 G 內存、1T 固態硬盤,啓動一個微服務須要 10 秒以上,而 Mac 只須要 3 秒
。
官網下載地址:
https://www.jetbrains.com/idea/download/#section=mac
3.2 啓動系統管理服務
個人開源項目的後臺框架用的人人框架,它的主要功能就是後臺的登錄、系統管理功能,因此必須啓動 renren-fast
服務才能使用後臺管理。
你們能夠啓動 RenrenApplication 這個 Service,啓動成功後,會提示如下信息:
renren-fast 服務暴露的端口是 8080,可是這個端口對前端是不可見的,前端 API 都是走網關的 8060 端口。將前端的請求轉發到 renren-fast 的 8060 端口,好比登錄請求。注意:必定要初始化完數據才能啓動成功。
3.3 啓動網關
網關微服務沒有什麼特殊要求,我都配置好了,直接啓動就行了。另外若是遇到端口被佔用的狀況,能夠經過以下命令解決:
lsof -i:8060
kill -9 <進程 id>
網關微服務暴露的端口是 8060,啓動後以下圖所示:
3.4 啓動題目服務
題目服務是核心模塊,不少實戰案例都是基於這個模塊進行講解的。啓動服務以前,須要配置數據庫 MySQL 的鏈接。
3.4.1 配置數據庫鏈接
文件路徑:/passjava-question/src/main/resources/application.yml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/passjava_qms?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT username: root password: xxx
另外咱們也能夠經過 nacos 來配置:
3.4.2 啓動題目服務
IDEA 工具中直接啓動就能夠了,暴露的端口是 11000,啓動後以下圖所示:
3.4.3 測試題目服務
用 postman 測試網關+題目微服務是否正常工做:
因爲個人數據庫中是有數據的,因此會返回不少數據,你們後面可自行添加數據。
3.5 啓動第三方服務
這個第三方不是指另一方的服務,而是我把與第三方中間件交互的服務都歸在這個服務裏面了,好比對阿里雲 OSS(對象存儲) 的操做。
這個服務的名字叫作:passjava-thirdparty
。另外須要注意,OSS 須要你們到阿里雲官網申請,有免費額度哦~配置方式能夠參照這篇:《SpringCloud 實戰項目-整合 OSS 對象存儲》。
啓動成功後,以下圖所示:
4、啓動 Admin 後臺
Admin 管理後臺的技術選型仍是用的 Vue,因此須要使用 npm 工具來安裝依賴。
4.1 安裝 npm、nvm
使用 homebrew 安裝 npm
brew install npm
使用 homebrew 安裝 nvm
brew install nvm
4.2 切換鏡像源
默認的 npm 使用的是官方的鏡像源,咱們切換爲國內的淘寶鏡像源。
npm install -g cnpm --registry=https://registry.npm.taobao.org --verbose
4.3 安裝 node_module
倉庫裏面並無將依賴包一塊兒上傳,由於依賴包太大了,因此可在本地經過以下命令安裝依賴包,這個是一次性的,後面不須要再執行。
進入到 passjava-platform/passjava-portal 目錄,執行以下命令來安裝依賴:
cnpm install
啓動前端portal
npm run dev
報錯,提示 Node Sass 不兼容當前的系統:
Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Unsupported runtime (88)
根據網上提供的解決方案,要先卸載 Node Saas
cnpm uninstall node-sass
可是又提示 chromedriver 安裝失敗(當前操做系統不兼容),根據網上的解決方案,單獨安裝,但依舊提示 64 位系統不兼容,因而我把 package.json 文件中的 "chromedriver": "2.27.2" 刪掉了,問題迎刃而解!(最新的代碼已刪除該依賴項配置)
咱們接着往下執行:
先刪除以前安裝的 node_modules:
rm -rf ./node_modules/
再次執行卸載 node-sass 的命令:
cnpm uninstall node-sass
卸載成功後,安裝 node-sass:
cnpm install node-sass --unsafe-perm --save-dev
從新安裝依賴:
cnpm install
4.4 啓動後臺
在根目錄執行以下命令就能夠啓動後臺了:
npm run dev
啓動成功後,會自動打開瀏覽器,訪問的地址是 http://localhost:8081
4.5 登錄後臺
帳號密碼都是 admin,輸入驗證碼便可登陸。注意:若是驗證碼沒有出現,說明 RenrenApplication 微服務有異常,請查看 IDEA 中打印出的 log。
登陸後臺界面以下圖所示:

PassJava 後臺
4.6 添加題目分類
首先須要給題目添加分類,在後臺點擊新增類型,以下圖所示:
注意:上傳圖片前須要啓動 thirdparty 微服務,且 OSS 配置正確。
4.7 添加面試題
5、其餘
5.1 未適配的鏡像
個人開源項目中要用 Elasticsearch 和 Kibana,且它們是運行在 docker 上的,但目前這些鏡像在 M1 上還未適配。因此用不了 ES 和 Kibana,難過😫
5.2 前端小程序
小程序的開發和測試在這裏也不演示了, M1 上開發小程序徹底沒問題~
5.3 未添加的中間件
因本篇只是出於核心功能的演示,因此還有些中間件未說起,好比配置 Redis、鏈路追蹤等,這些功能不影響 M1 上使用 Spring Cloud,因此會放在後續的文章中作進一步說明。
下一篇實戰 Redis 也安排上了,敬請期待。
- END -
寫了兩本 PDF,回覆 分佈式 或 PDF 下載。
個人 JVM 專欄已上架,回覆 JVM 領取
我是悟空,努力變強,變身超級賽亞人!
本文分享自微信公衆號 - 悟空聊架構(PassJava666)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。