基于solo;從0開始搭建個(gè)人博客系統(tǒng)(小白級(jí)保姆教程)

下面的文檔為上面的視頻筆記;可以配合視頻教程使用。
建議查看個(gè)人博客中的筆記,更加清晰,持續(xù)更新
https://blog.lupf.cn/articles/2020/11/29/1606664585380.html
教程介紹
個(gè)人博客
個(gè)人博客:https://lupf.cn
CSDN : https://lupengfei.blog.csdn.net/
為什么要有自己的博客?
記錄學(xué)習(xí)、開發(fā)心得;解決的問題、學(xué)習(xí)的知識(shí);寫出來和單純裝在腦子里是完全不一樣的;記錄一遍,影響更加深刻;
分享精神(開源精神),幫助其他人解決相同的問題,分享有趣的知識(shí);
提升自身的level,擴(kuò)大自己的影響力,結(jié)識(shí)更多的朋友;
云服務(wù)降低了門檻;不需要自己搞機(jī)器、辦固定IP;入門級(jí)別的阿里云、騰訊云幾百塊錢一年;成本很低,但是足夠個(gè)人博客的使用了。
審核機(jī)制的問題;某一些特殊的筆記,沒辦法發(fā)到共有的博客環(huán)境,那我們就可以放在主機(jī)的博客下面;
面試、找工作的加分項(xiàng)
搭建面臨的問題
問題太多帶來的恐懼
搭建的過程中不可避免的會(huì)出現(xiàn)問題,很多時(shí)候因?yàn)檫@些問題得不到有效的解決而被迫放棄;我想說的是,不要畏懼,直面問題剛一波,其實(shí)很多時(shí)候往往就是堅(jiān)持一下,下一秒可能就找到解決方案了。
了解的知識(shí)面不夠全面
麻雀雖小,五臟俱全;一個(gè)博客平臺(tái),雖然支持的功能就那么多,但是包含了一整套業(yè)務(wù)流程;數(shù)據(jù)庫、前端、后臺(tái)都有,然而并不是所有開發(fā)人員這些都是了解的;因此,因?yàn)橐恍┎粫?huì)的因素,給整個(gè)搭建帶來了一些障礙。
教程的目的
本教程的最終目的,就是帶大家解決搭建過程中的會(huì)遇到的問題;從0開始的一步步去構(gòu)建;詳細(xì)的講解每一個(gè)步驟的創(chuàng)建過程。不管你是在校大學(xué)生、前端開發(fā)、后端開發(fā)。都可以輕松的將個(gè)人博客搭建起來。
為什么選SOLO
gitbub地址:https://github.com/88250/solo
docker倉庫地址: https://hub.docker.com/r/b3log/solo
solo是一個(gè)很輕量級(jí)的博客框架,搭建起來容易,一個(gè)服務(wù),一個(gè)mysql就夠了;
個(gè)人用了一年多,使用起來也比較的方便;
項(xiàng)目從10年開源,且作者對(duì)外宣稱的是永久免費(fèi)維護(hù)下去。所以也不用擔(dān)心,用著用著,項(xiàng)目死了。
筆記
本教程所有的筆記,我會(huì)在個(gè)人博客里面整理成一篇文章;大家通過: https://lupf.cn 進(jìn)入到博客;搜索 “ solo ”關(guān)鍵詞即可看到;下面涉及到的每行指令;都會(huì)整理進(jìn)去,方便大家自行搭建的時(shí)候使用。
教程的幾個(gè)簡(jiǎn)單的章節(jié)

Linux虛擬機(jī)搭建
本章面向的人群
沒有云服務(wù)器
沒有l(wèi)inux系統(tǒng)的物理機(jī)
單純想測(cè)試一下整個(gè)教程的可行性
搭建過程
詳細(xì)教程: https://lupf.cn/articles/2020/04/04/1586001434581.html
創(chuàng)建虛擬機(jī)
配置網(wǎng)絡(luò)
測(cè)試外網(wǎng)
關(guān)閉防火墻
修改主機(jī)名稱
安裝vim
修改時(shí)間
Docker安裝
為什么要用Docker
跨平臺(tái)性
安裝部署簡(jiǎn)單
方便遷移
資源隔離,服務(wù)與服務(wù)之間互不干擾
安裝
詳細(xì)教程: https://lupf.cn/articles/2019/11/23/1574503815568.html
安裝docker
安裝docker-compose
基礎(chǔ)的鏡像準(zhǔn)備
mysql
創(chuàng)建目錄
mkdir?-p?/opt/docker/mysql
下載鏡像
docker?pull?mysql:5.7.13
solo
創(chuàng)建目錄
mkdir?-p?/opt/docker/solo
下載鏡像
docker?pull?b3log/solo
nginx
由于后面配置ssl證書的時(shí)候需要使用到一個(gè)朋友定制增強(qiáng)的一個(gè)nginx
所以這里一并給下載下來
創(chuàng)建目錄
mkdir?-p?/opt/docker/nginx/conf/conf.d
mkdir?-p?/opt/docker/nginx/html
mkdir?-p?/opt/docker/nginx/logs
mkdir?-p?/opt/docker/ohttps-nginx/conf/conf.d
mkdir?-p?/opt/docker/ohttps-nginx/html
mkdir?-p?/opt/docker/ohttps-nginx/logs下載鏡像
docker?pull?nginx
docker?pull?ohttps/ohttps-nginx查看下載的鏡像
docker?images
博客部署
運(yùn)行服務(wù)
準(zhǔn)備nginx的默認(rèn)配置
docker?run?--name?my-nginx?-p?80:80?-d?nginx
docker?ps
docker?cp?f79:/etc/nginx/nginx.conf?/opt/docker/nginx/conf/nginx.conf
docker?cp?f79:/etc/nginx/conf.d?/opt/docker/nginx/conf
docker?cp?f79:/usr/share/nginx/html?/opt/docker/nginx
docker?cp?f79:/etc/nginx/nginx.conf?/opt/docker/ohttps-nginx/conf/nginx.conf
docker?cp?f79:/etc/nginx/conf.d?/opt/docker/ohttps-nginx/conf
docker?cp?f79:/usr/share/nginx/html?/opt/docker/ohttps-nginx
docker?stop?f79
docker?rm?f79準(zhǔn)備docker-compose.yml
version:?"2"
services:
??mysql:
????container_name:?solo-mysql
????image:?mysql:5.7.13
????restart:?always
????volumes:
??????-?/opt/docker/solo/mysql/data:/var/lib/mysql
??????-?/opt/docker/solo/mysql/logs:/logs
??????-?/opt/docker/solo/mysql/conf:/etc/mysql/conf.d
??????-?/etc/localtime:/etc/localtime:ro
????ports:
??????-?"3306:3306"
????environment:
??????MYSQL_ROOT_PASSWORD:?"123456"
??????TZ:?"Asia/Shanghai"
????command:?--max_allowed_packet=32505856
??solo:
????container_name:?solo
????image:?b3log/solo:latest
????restart:?always
????ports:
??????-?"8080:8080"
????environment:
??????RUNTIME_DB:?"MYSQL"
??????JDBC_USERNAME:?"root"
??????JDBC_PASSWORD:?"123456"
??????JDBC_DRIVER:?"com.mysql.jdbc.Driver"
??????JDBC_URL:?"jdbc:mysql://solo-mysql:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
????command:?--listen_port=8080?--server_port=?--server_scheme=http?--server_host=192.168.1.232
??nginx:?
????container_name:?solo-nginx
????image:?nginx:latest
????restart:?always
????ports:
??????-?"80:80"
??????-?"443:443"
????volumes:
??????-?/opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
??????-?/opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d
??????-?/opt/docker/nginx/html:/usr/share/nginx/html
??????-?/opt/docker/nginx/logs:/var/log/nginx啟動(dòng)服務(wù)
此時(shí)的啟動(dòng)肯定會(huì)報(bào)錯(cuò)
因?yàn)閿?shù)據(jù)庫還沒有,還沒有創(chuàng)建
docker-compose?-f?docker-compose.yml?up
創(chuàng)建數(shù)據(jù)庫
docker?ps?|?grep?mysql
docker?exec?-it?容器id?/bin/bash
mysql?-uroot?-p
create?database?solo?default?character?set?utf8mb4?collate?utf8mb4_general_ci;
create?user?'root'@'127.0.0.1'?identified?by?'123456';
grant?all?privileges?on?*.*?to?'root'@'127.0.0.1';
flush?privileges;調(diào)整服務(wù)為后臺(tái)進(jìn)程
docker-compose?-f?docker-compose.yml?up?-d
停止并關(guān)閉服務(wù)
docker-compose?-f?docker-compose.yml?down
測(cè)試本地方位
http://192.168.1.231:8080
配置nginx
上面運(yùn)行的服務(wù)通過自身監(jiān)聽的端口已經(jīng)可以訪問了;由于默認(rèn)是監(jiān)聽的8080端口;通常情況下我們是希望通過80或者443端口進(jìn)行訪問的;因此,在這里就部署一個(gè)nginx,并監(jiān)聽80或者443端口;然后通過反向代理代理到solo服務(wù)去;
進(jìn)入配置文件目錄
cd?/opt/docker/nginx/conf/conf.d
添加配置文件
vim default.conf
????location?/?{
????????proxy_set_header?X-Real-IP?$remote_addr;
????????proxy_set_header?Host?$http_host;
????????proxy_pass?http://solo:8080;
????}
https證書的配置
詳細(xì)的教程:https://lupf.cn/articles/2020/11/21/1605963949092.html
注冊(cè)賬號(hào)
官網(wǎng)地址:https://www.ohttps.com?invitationCode=dyq1zry5ew07lgn6
添加chame記錄
參考視頻
生成證書
配置域名解析
參考視頻
//?刷新dns指令
ipconfig?/flushdns添加部署節(jié)點(diǎn)(nginx)
調(diào)整docker-compose
第一處修改 solo服務(wù),--server_scheme修改為https;--server_host=blog.writee.cn
第二處修改;nginx的鏡像修改為ohttps/ohttps-nginx
第三處修改;設(shè)置nginx自動(dòng)更新證書的id和token;上面步驟申請(qǐng)到的
第四處修改;修改持久化文件映射的路徑
version:?"2"
services:
??mysql:
????container_name:?solo-mysql
????image:?mysql:5.7.13
????restart:?always
????volumes:
??????-?/opt/docker/solo/mysql/data:/var/lib/mysql
??????-?/opt/docker/solo/mysql/logs:/logs
??????-?/opt/docker/solo/mysql/conf:/etc/mysql/conf.d
??????-?/etc/localtime:/etc/localtime:ro
????ports:
??????-?"3306:3306"
????environment:
??????MYSQL_ROOT_PASSWORD:?"123456"
??????TZ:?"Asia/Shanghai"
????command:?--max_allowed_packet=32505856
??solo:
????container_name:?solo
????image:?b3log/solo:latest
????restart:?always
????ports:
??????-?"8080:8080"
????environment:
??????RUNTIME_DB:?"MYSQL"
??????JDBC_USERNAME:?"root"
??????JDBC_PASSWORD:?"123456"
??????JDBC_DRIVER:?"com.mysql.jdbc.Driver"
??????JDBC_URL:?"jdbc:mysql://solo-mysql:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
????command:?--listen_port=8080?--server_port=?--server_scheme=https?--server_host=blog.writee.cn
??nginx:?
????container_name:?solo-nginx
????image:?ohttps/ohttps-nginx
????restart:?always
????ports:
??????-?"80:80"
??????-?"443:443"
????environment:
??????PUSH_NODE_ID:?"push-1xlpm40g5p85n9gz"
??????PUSH_NODE_TOKEN:?"16d2e1584b25bf22888586a51ff86dcf"
????volumes:
??????-?/opt/docker/ohttps-nginx/conf/nginx.conf:/etc/nginx/nginx.conf
??????-?/opt/docker/ohttps-nginx/conf/conf.d:/etc/nginx/conf.d
??????-?/opt/docker/ohttps-nginx/html:/usr/share/nginx/html
??????-?/opt/docker/ohttps-nginx/logs:/var/log/nginx重啟服務(wù)
docker?exec?-t?容器id?nginx?-t
docker?exec?-t?容器id?nginx?-s?reload查看證書
docker?ps?|?grep?nginx
docker?exec?-it?容器id?/bin/bash
cd?/etc/nginx/certificates
lsnginx配置域名及證書
vim blog.conf
server?{
??listen???????80;
??server_name?blog.write.cn;
??return?301?https://$server_name$request_uri;
}
server?{
??server_name?blog.write.cn;
??listen?443?ssl?http2;
??ssl_stapling?on;
??ssl_stapling_verify?on;
??ssl_certificate_key?/etc/nginx/certificates/cert-9dxel0446w04j7o1/cert.key;
??ssl_certificate?/etc/nginx/certificates/cert-9dxel0446w04j7o1/fullchain.cer;
??ssl_session_timeout?5m;
??ssl_protocols?TLSv1.1?TLSv1.2;
??ssl_prefer_server_ciphers?on;
??ssl_ciphers?"EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
??ssl_session_cache?builtin:1000?shared:SSL:10m;
??location?/?{
????proxy_set_header?X-Real-IP?$remote_addr;
????proxy_set_header?Host?$http_host;
????proxy_pass?http://solo:8080;
??}
}
- END -