2018.11.08更新:
代碼更新已提交github深员,更新如下:
1.Elasticsearch全文檢索——之前說(shuō)過(guò)的Elasticseach,現(xiàn)在終于加上了粥鞋,附帶Logstash定時(shí)增量導(dǎo)入Mysql中的數(shù)據(jù)。
2.增加和完善了用戶收藏、評(píng)論區(qū)創(chuàng)建討論和點(diǎn)贊的功能
3.個(gè)人中心查看已收藏文章的功能贱勃、個(gè)人中心上傳圖片(按時(shí)間線排列的照片墻)的功能
下一步要做的事:
1.完善功能、修改bug和代碼谤逼;
2.完善一下Spring和數(shù)據(jù)庫(kù)的事務(wù)實(shí)現(xiàn)贵扰。譬如刪除一篇文章時(shí)要批量刪除該文章下的所有感謝、收藏和評(píng)論信息流部;同時(shí)刪除評(píng)論下的點(diǎn)贊和討論信息戚绕。此處打算用多線程+編程式事務(wù)來(lái)實(shí)現(xiàn)一下。
3.添加消息中間件枝冀,考慮高并發(fā)條件下的安全問(wèn)題(雖然并不會(huì)有那么多人訪問(wèn)...)舞丛。譬如多人同時(shí)點(diǎn)贊怎么處理......
4.部署上線
這是在第一版的【個(gè)人博客系統(tǒng)】的基礎(chǔ)上開(kāi)發(fā)的第二版?zhèn)€人博客系統(tǒng),基于SSM框架的Java8果漾、Maven構(gòu)建球切,github地址:**https://github.com/Flowingsun007/LyonBlog
這個(gè)項(xiàng)目是個(gè)人學(xué)java時(shí)自己做的,從前端-到后端-數(shù)據(jù)庫(kù)都是100%原創(chuàng)的绒障;第一版的項(xiàng)目是jsp+servlet寫(xiě)的吨凑,學(xué)了SSM后重構(gòu)了一次才有的這個(gè)項(xiàng)目,里面代碼寫(xiě)的比較水户辱,勿噴鸵钝;新人學(xué)習(xí)玩耍還是可以的~P.S.后面有時(shí)間會(huì)不斷重構(gòu)和優(yōu)化里面的代碼_
1.項(xiàng)目展示
外觀:
【功能】:
用戶登錄注冊(cè)、MD5加密焕妙、郵箱驗(yàn)證蒋伦。 博客文章前臺(tái)展示、文章點(diǎn)贊焚鹊、評(píng)論痕届、收藏韧献,支持對(duì)評(píng)論進(jìn)行點(diǎn)贊和討論。 后臺(tái)admin管理研叫,支持文章的新增锤窑、修改、刪除嚷炉、文章和標(biāo)簽批量管理渊啰。 個(gè)人中心,查看收藏的文章申屹、用戶上傳圖片绘证、照片墻。
2.技術(shù)棧
開(kāi)發(fā)環(huán)境:
macOS/Win10系統(tǒng)+Idea開(kāi)發(fā)+Maven構(gòu)建+Git版本控制
前端:
html+css+javascript;bootstrap+jquery+ajax;
模板引擎:
velocity
開(kāi)源彈框組件:
sweetalert
Markdown編輯器:
Editor.md
容器:
Tomcat9
權(quán)限:
Apache Shrio
后端:
Spring+SpringMVC+Mybatis+Mysql+Druid
緩存+session管理:
Redis哗讥。由于2個(gè)Tomcat可能部署在不同的服務(wù)器上嚷那,故涉及到session共享的問(wèn)題,此處用redis來(lái)管理所有session,同時(shí)redis兼緩存一些文章分類信息杆煞、標(biāo)簽信息等魏宽。
反向代理+動(dòng)靜分離:
Nginx。Nginx作為統(tǒng)一入口决乎,靜態(tài)資源請(qǐng)求如js队询、圖片、css文件等直接由nginx處理构诚,動(dòng)態(tài)請(qǐng)求轉(zhuǎn)發(fā)至Tomcat中處理蚌斩。 目前配置了2個(gè)Tomcat,Nginx采取默認(rèn)的輪訓(xùn)處理請(qǐng)求范嘱。
全文檢索:
ElasticSearch是流行的全文檢索服務(wù)器凳寺,主要用于博客搜索。Logstash設(shè)定了簡(jiǎn)單的增量導(dǎo)入彤侍,從Mysql中定時(shí)查詢文章內(nèi)容放入Elasticsearch中肠缨,從而提供博客文章全文檢索的功能,避免直接查數(shù)據(jù)庫(kù)帶來(lái)較大的開(kāi)銷盏阶。
架構(gòu)圖:
3.項(xiàng)目部署
由于主項(xiàng)目是在Mac上開(kāi)發(fā)的晒奕,所以對(duì)Linux系統(tǒng)比較友好。Github地址:Flowingsun007/LyonBlog 名斟,歡迎點(diǎn)贊~
【分支】
- master:本地mac上開(kāi)發(fā)脑慧,同步更新的分支
- centOS:用于在阿里云服務(wù)器上的分支,基本和master分支類似砰盐,有個(gè)別配置如jdbc.properties闷袒、log4j.properties、EmailService.java(發(fā)送注冊(cè)郵件)有些許不同
- windows:僅僅是為了跑起來(lái)而新建的此分支岩梳,不保證及時(shí)更新囊骤。BTW:我發(fā)現(xiàn)mac上看的前端效果比較好看晃择,到windows上就比較丑了....我也很無(wú)奈~
【項(xiàng)目標(biāo)準(zhǔn)配置】
- 0.JDK1.8
- 1.Mysql5.7
- 2.Tomcat9(2個(gè))
- 3.Nginx1.14.0
- 4.Redis4.0.10
- 5.Elaticsearch、Logstash——6.4.2
Mysql配置
- a.數(shù)據(jù)庫(kù)連接:resources文件夾下的jdbc.properties
- b.數(shù)據(jù)庫(kù)的sql包括ddl和dml也物,放在項(xiàng)目resources文件夾下宫屠。
Tomcat配置
只需要改server.xml文件中的幾個(gè)地方即可,這里提供我本地的配置文件做參考滑蚯。
log4j配置
主要是log4j.properties里修改幾種類別日志存放路徑
Nginx浪蹂、Redis配置
同樣,提供本地參考告材,所有的關(guān)鍵配置文件都放在resources/conf文件夾下坤次。
靜態(tài)資源配置
由于項(xiàng)目用的是Nginx,動(dòng)靜分離的斥赋,所以靜態(tài)資源全部放置在Nginx下的html文件夾下浙踢,可以在百度網(wǎng)盤(pán)下載: 鏈接:https://pan.baidu.com/s/1K2Ahz_L4cYR04YtgdCmSGA 提取碼:bdbb
【啟動(dòng)和運(yùn)行】
項(xiàng)目啟動(dòng)標(biāo)準(zhǔn)配置:
Nginx+Redis+2個(gè)Tomcat+Elasticsearch+Logstash
項(xiàng)目啟動(dòng)最簡(jiǎn)配置:
Nginx+Redis+1個(gè)Tomcat
啟動(dòng)順序:
首先安裝好Mysql,Mysql的表和數(shù)據(jù)建好灿渴、安裝和配置Tomcat、Nginx胰舆、Redis骚露,然后就可以啟動(dòng)了。 Nginx和Redis先啟動(dòng)缚窿,然后啟動(dòng)Tomcat棘幸,在Idea中可以直接啟動(dòng)Tomcat、或者手動(dòng)打war包放入Tomcat中運(yùn)行倦零。
Tomcat啟動(dòng)完成后再啟動(dòng)Elasticsearch+logstash误续。Elasticsearch+logstash是可選項(xiàng),可以不啟動(dòng)扫茅。