第一次用博客,筆者大學畢業即將走向社會,從事Java開發,有個博客是很有必要的。博客用於記錄學習工作中遇到的問題,可以很好的總結經驗。同時我在遇到bug的時候也是通過他人博客解決的,我也想通過博客幫助到遇到同樣問題的人。
年前面試過幾家,現在企業都要求分布式,微服務springcloud的項目經驗,為了能找到更好的工作,我選擇了自學黑馬《學成在線》這個微服務項目,這個博客就用於記錄每天看視頻做這個項目遇到的問題和總結吧!
項目的功能架構
項目背景
學成在線借鑒了MOOC(大型開放式網絡課程,即MOOC(massive open online courses))的設計思想,是一
個提供IT職業課程在線學習的平台,它為即將和已經加入IT領域的技術人才提供在線學習服務,用戶通過在線學
習、在線練習、在線考試等學習內容,最終掌握所學的IT技能,並能在工作中熟練應用。
功能模塊


項目的技術架構
學成在線采用當前流行的前后端分離架構開發,由用戶層、UI層、微服務層、數據層等部分組成,為PC、App、
H5等客戶端用戶提供服務。下圖是系統的技術架構圖:

各模塊說明如下:


技術棧

重點了解微服務技術棧:
學成在線服務端基於Spring Boot構建,采用Spring Cloud微服務框架。
持久層:MySQL、MongoDB、Redis、ElasticSearch
數據訪問層:使用Spring Data JPA 、Mybatis、Spring Data Mongodb等
業務層:Spring IOC、Aop事務控制、Spring Task任務調度、Feign、Ribbon、Spring AMQP、Spring Data Redis
等。
控制層:Spring MVC、FastJSON、RestTemplate、Spring Security Oauth2+JWT等
微服務治理:Eureka、Zuul、Hystrix、Spring Cloud Config等
CMS 需求分析
什么是CMS
CMS是什么 ?
CMS (Content Management System)即內容管理系統,不同的項目對CMS的定位不同,比如:一個在線教育網
站,有些公司認為CMS系統是對所有的課程資源進行管理,而在早期網站剛開始盛行時很多公司的業務是網站制
作,當時對CMS的定位是創建網站,即對網站的頁面、圖片等靜態資源進行管理。
本項目CMS的定位是什么?
本項目作為一個大型的在線教育平台,對CMS系統的定位是對各各網站(子站點)頁面的管理,主要管理由於運營
需要而經常變動的頁面,從而實現根據運營需要快速進行頁面開發、上線的需求。
靜態門戶工程搭建
本項目CMS是對頁面進行管理,對頁面如何進行管理呢?我們首先搭建學成網的靜態門戶工程,根據門戶的頁面結
構來分析頁面的管理方案。
門戶,是一個網站的入口,一般網站都有一個對外的門戶,學成在線門戶效果圖如下:

導入門戶工程
1、安裝WebStorm
idea也行,再導入靜態工程。

2、安裝Nginx
下載nginx:http://nginx.org/en/download.html
本教程下載 nginx-1.14.0.zip(http://nginx.org/download/nginx-1.14.0.zip)
解壓nginx-1.14.0.zip到自己的計算機,雙擊nginx.exe即可運行。
訪問 :http://localhost

配置虛擬主機
在nginx中配置虛擬主機:
server{
listen 80;
server_name www.xuecheng.com;
ssi on;
ssi_silent_errors on;
location / {
alias F:/teach/xcEdu/xcEduUI/xc‐ui‐pc‐static‐portal/;
index index.html;
}
}
配置hosts文件
修改C:\Windows\System32\drivers\etc\hosts文件
127.0.0.1 www.xuecheng.com
進入瀏覽器,輸入http://www.xuecheng.com
在nginx虛擬主機中開通SSI
server{
listen 80;
server_name www.xuecheng.com;
ssi on;
ssi_silent_errors on;
CMS 服務端工程搭建
導入基礎工程
工程結構
CMS及其它服務端工程基於maven進行構建,首先需要創建如下基礎工程:
parent工程:父工程,提供依賴管理。
common工程:通用工程,提供各層封裝
model工程:模型工程,提供統一的模型類管理
utils工程:工具類工程,提供本項目所使用的工具類
Api工程:接口工程,統一管理本項目的服務接口。
工程結構如下:

安裝MongoDB
CMS采用MongoDB數據庫存儲CMS頁面信息,CMS選用Mongodb的原因如下:
1、Mongodb是非關系型數據庫,存儲Json格式數據 ,數據格式靈活。
2、相比課程管理等核心數據CMS數據不重要,且沒有事務管理要求。
MongoDB這里按照文檔安裝,死活找不到啟動服務,一定要管理員配置。
卸載重裝后,找到一篇博客完美解決。
根據網上安裝教程,簡單總結如下:
1.去mongodb官網下載電腦系統對應版本的軟件,比如我的是windows 64位的,就選擇64位的,可能下載下來之后文件夾上面顯示的是win32,這個不用理會;
2.把該目錄放到自己對應放軟件的盤下,我放在了d盤;
3.在mongodb文件夾目錄下新建data文件夾,data文件夾下新建log和db文件夾,作為存放數據庫和日志的地方;
4.在mongodb bin目錄下新建mongod.cfg 文件,寫入以下內容:
systemLog:
destination: file
path: D:\mongodb\data\log\mongod.log
storage:
dbPath: D:\mongodb\data\db
5.windows開始菜單搜索cmd ,找到之后右鍵點擊管理員運行,進入mongodb bin目錄下,
mongod --logpath "d:\mongodb\data\log\mongod.log" --logappend --dbpath "d:\mongodb\data\db" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
輸入以上命令,win+R,輸入Services.msc,查看服務,即可看到MongoDB 服務安裝成功!
6. 測試MongoDB服務已正常啟動:http://localhost:27017
原文 :https://cloud.tencent.com/developer/article/1388107
導入CMS數據庫
這里有個坑,有的資料里導入的mongoDB數據里的cms_page(1).json要改成cms_page.json,不然后面的測試json數據時會獲取不到數據,程序也不報錯。
創建CMS服務工程
這里如果復制pdf里面的pom內容到xc-service-manage-cms的pom.xml,則maven工程會出現unkonwn爆紅。
解決:先復制到word文檔里面,通過Ctrl+h,查找替換,將空格替換。“查找內容” 輸入空格, “替換”什么都不輸入。

然后,把復制過去的依賴,例如spring-boot-starter-web的所有的- 號重新在idea里再打一遍。pdf復制過去的符號有問題,識別不了。
還有Maven的spring-cloud-starter-feign,這里會爆紅,找不到unkown
解決:
改成spring-cloud-starter-openfeign

最后展示一下第1天運行成果:




學成在線資源:
鏈接:https://pan.baidu.com/s/1B4xXEYVgJh0A4j2IM2BAig
提取碼:48nn
