二哥的小破站終于上線了,顏值賊高!

原來(lái)的《Java 程序員進(jìn)階之路》網(wǎng)站是托管在碼云 Pages 上的,而碼云 Pages 沒(méi)辦法自定義域名,這樣就很不利于小伙伴們直接通過(guò)網(wǎng)址去訪問(wèn)。

碼云 Pages:https://itwanger.gitee.io/tobebetterjavaer

怎么解決這個(gè)問(wèn)題呢?

。。。。。。

讓我先來(lái)給大家鋪墊一下這個(gè)碼云 Pages 是如何服務(wù)的,搞清楚了狀況后,我們就容易想到解決辦法。

首先,《Java 程序員進(jìn)階之路》專欄的源頭是 GitHub 上的一個(gè)開(kāi)源倉(cāng)庫(kù)。

GitHub 地址:https://github.com/itwanger/toBeBetterJavaer

里面除了 md 文檔和圖片之外,還有代碼示例,以及 docsify 的基礎(chǔ)環(huán)境文件。

  • index.html 入口文件
  • README.md 會(huì)做為主頁(yè)內(nèi)容渲染
  • .nojekyll 用于阻止 GitHub Pages 忽略掉下劃線開(kāi)頭的文件
  • _sidebar.md 會(huì)做為側(cè)邊欄內(nèi)容渲染
  • _coverpage.md 會(huì)做為封面圖渲染

docsify 是一個(gè)神奇的文檔網(wǎng)站生成器,不同于 GitBook、Hexo 的是,它不會(huì)生成靜態(tài)的 .html 文件,所有轉(zhuǎn)換工作都是在運(yùn)行時(shí)發(fā)生的。只需要一個(gè) index.html 文件以及一些基礎(chǔ)配置文件就可以開(kāi)始編寫(xiě)文檔,并直接托管在 GitHub Pages 上(省去了服務(wù)器的錢(qián))。

不過(guò),由于 GitHub 的網(wǎng)絡(luò)訪問(wèn)原因,我就將 《Java 程序員進(jìn)階之路》專欄同步到了碼云,用碼云 Pages 來(lái)替代 GitHub Pages,這樣的網(wǎng)絡(luò)訪問(wèn)速度會(huì)快很多。

碼云地址:https://gitee.com/itwanger/toBeBetterJavaer

同時(shí),碼云 Pages 也支持 Jekyll、Hugo、Hexo、docsify 等靜態(tài)網(wǎng)站的服務(wù)。當(dāng) GitHub 倉(cāng)庫(kù)有更新后,直接在 GitHub Pages 上點(diǎn)一下刷新圖標(biāo)就會(huì)立即完成網(wǎng)站服務(wù)的同步工作。

通過(guò)碼云 Pages 提供的網(wǎng)址就可以訪問(wèn)《Java 程序員進(jìn)階之路》網(wǎng)址了。

但由于種種原因,碼云 Pages 沒(méi)有提供自定義域名+ HTTPS 的服務(wù),Pro 版支持,但也因?yàn)闃I(yè)務(wù)調(diào)整,關(guān)閉了個(gè)人用戶的購(gòu)買(mǎi)入口。

這就很扯了。

解決方案一

這是最容易想到的辦法,也是最笨的辦法:將本地倉(cāng)庫(kù)上傳到云服務(wù)器,通過(guò) Nginx 部署靜態(tài)網(wǎng)站。

在上傳服務(wù)器之前,讓我們先來(lái)確認(rèn)一下本地的 docsify 目錄是否是完整的。因此我們需要在本地運(yùn)行起來(lái) docsify 服務(wù)。

進(jìn)入本地《Java 程序員進(jìn)階之路》的倉(cāng)庫(kù)目錄,執(zhí)行 docsify serve 啟動(dòng)服務(wù)。

在瀏覽器地址欄訪問(wèn) http://localhost:3000

可以確認(rèn)是沒(méi)有問(wèn)題的。

然后將本地的文件上傳到云服務(wù)器上,再通過(guò) Nginx 部署靜態(tài)網(wǎng)站就 OK 了。

不過(guò),這樣做會(huì)存在一個(gè)很嚴(yán)重的問(wèn)題,就是云服務(wù)器和本地、GitHub 倉(cāng)庫(kù)之間沒(méi)辦法進(jìn)行同步。

解決方案二

這是比較完善一點(diǎn)的解決方案:在服務(wù)器上搭建一個(gè) Git 倉(cāng)庫(kù),從 GitHub 上拉取,再通過(guò) Nginx 部署靜態(tài)網(wǎng)站。

這樣就很容易解決掉倉(cāng)庫(kù)之間不同步的問(wèn)題,因?yàn)?GitHub 倉(cāng)庫(kù)提交的一定是正式版本,也是最新版本,從上面拉取是最方便和穩(wěn)妥的。本地會(huì)做一些測(cè)試工作,比如說(shuō)調(diào)整 docsify 的配置等等,不適合作為云服務(wù)器拉取的對(duì)象。

關(guān)于 Git 環(huán)境的搭建,我在《Java 程序員進(jìn)階之路》專欄的「Git」篇里已經(jīng)詳細(xì)的講解了。

搭建過(guò)程我這里簡(jiǎn)單演示下。

第一步,安裝 Git

CentOS 上可以直接通過(guò) yum install git 命令來(lái)安裝 Git 環(huán)境。

第二步,初始化 Git

執(zhí)行 git init 初始化 Git 目錄。

第三步,克隆 GitHub 倉(cāng)庫(kù)到云服務(wù)器

為了使 GitHub 相信所有的操作都是“你本人”操作的,所以在 clone 之前需要先配置 SSH 密鑰。具體的步驟可參考:崩潰!實(shí)習(xí)生把小組的代碼倉(cāng)庫(kù)搞得一團(tuán)糟。。。這篇中的「遠(yuǎn)程倉(cāng)庫(kù)」小節(jié)。

這里就不再演示了。

在 GitHub 倉(cāng)庫(kù)上點(diǎn)擊「Code」菜單,復(fù)制 SSH 地址。

然后執(zhí)行 git clone 命令就可以從遠(yuǎn)程倉(cāng)庫(kù)上拉取到最新內(nèi)容了。

第四步,通過(guò) Nginx 部署靜態(tài)網(wǎng)站

Nginx 非常適合用來(lái)部署靜態(tài)網(wǎng)站,只需要將服務(wù)器的訪問(wèn)目錄設(shè)定為 index.html 文件就可以了。

OK,此時(shí)再訪問(wèn)域名 https://tobebetterjavaer.com 就可以看到《Java 程序員進(jìn)階之路》的內(nèi)容了。

用這種方案的話,本地、GitHub、云服務(wù)器之間的同步就完全打通了。

當(dāng) GitHub 上有更新的時(shí)候,再將內(nèi)容拉取到云服務(wù)器上。

舉例來(lái)說(shuō),我們?cè)凇禞ava 程序員進(jìn)階之路》專欄的 GitHub 倉(cāng)庫(kù)中修改 _sidebar.md 文件,追加一個(gè)感嘆號(hào)的標(biāo)點(diǎn)符號(hào)。

有兩種辦法拉取。

第一種,先執(zhí)行 git fetch,再執(zhí)行 git merge

9909f82..7f4b815 master -> origin/master 就表示內(nèi)容有變動(dòng)。

第二種,直接執(zhí)行 git pull 命令。

不過(guò),這有一點(diǎn)不盡善盡美,每當(dāng) GitHub 上有更新的時(shí)候,還要手動(dòng)在云服務(wù)器上拉取更新,能不能做到自動(dòng)化呢?

可以利用寶塔面板的計(jì)劃任務(wù),添加一個(gè) Shell 腳本。

腳本內(nèi)容很簡(jiǎn)單,就兩行內(nèi)容:

# 切換到 git 目錄
cd /home/www/git/toBeBetterJavaer
# 執(zhí)行g(shù)it命令
git pull

保存后我們來(lái)測(cè)試下。

我們?cè)凇禞ava 程序員進(jìn)階之路》專欄的 GitHub 倉(cāng)庫(kù)中修改 _sidebar.md 文件,修改中文的感嘆號(hào)為英文的感嘆號(hào)。

點(diǎn)擊計(jì)劃任務(wù)的「執(zhí)行」按鈕。

查看云服務(wù)器上的文件是否發(fā)生了變化。

到此為止,我們就完成了《Java 程序員進(jìn)階之路》網(wǎng)站從碼云 Pages 到 VPS(Virtual private server,虛擬專用服務(wù)器)遷移的整個(gè)工作。

最后,再帶著大家使用不蒜子給網(wǎng)站加一個(gè)總訪問(wèn)次數(shù)和總訪客數(shù)吧,看看一個(gè)月后《Java 程序員進(jìn)階之路》的 PV 有多少。

<script async src="http://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<span id="busuanzi_container_site_pv">本站總訪問(wèn)量<span id="busuanzi_value_site_pv"></span>次</span>

兩行代碼,一行引入 JS 文件,一行展示數(shù)據(jù)。

刷新網(wǎng)頁(yè),發(fā)現(xiàn)已經(jīng)有了哈,我是第一個(gè)。

緊接著,可以把 GitHub/碼云上的預(yù)覽鏈接從碼云 Pages 修改為 https://tobebetterjavaer.com 了。

簡(jiǎn)單總結(jié)一波:為了搭建這個(gè)網(wǎng)站,真的是能學(xué)到非常多的實(shí)戰(zhàn)知識(shí),比如說(shuō):

  • HTTP 升級(jí)為 HTTPS
  • Nginx 配置靜態(tài)資源
  • 域名解析
  • SSL 證書(shū)生成
  • Git 的基本使用
  • 寶塔面板的基本使用
  • Tabby 終端的基本使用
  • 域名備案
  • 等等等等

如果大家有時(shí)間的話,強(qiáng)烈建議大家動(dòng)手去搭一個(gè),尤其是之前白票過(guò)阿里云服務(wù)器的小伙伴,動(dòng)過(guò)手后你才會(huì)真正地學(xué)到實(shí)戰(zhàn)經(jīng)驗(yàn)。

2022 年,二哥一定會(huì)繼續(xù)肝出更多優(yōu)質(zhì)的原創(chuàng),豐富《Java 程序員進(jìn)階之路》的內(nèi)容,希望這個(gè)專欄日后成為大家學(xué)習(xí) Java 的第一選擇!


本篇已收錄至 GitHub 上星標(biāo) 1.0k+ star 的開(kāi)源專欄《Java 程序員進(jìn)階之路》,該專欄風(fēng)趣幽默、通俗易懂,對(duì) Java 愛(ài)好者極度友好和舒適??,內(nèi)容包括但不限于 Java 基礎(chǔ)、Java 集合框架、Java IO、Java 并發(fā)編程、Java 虛擬機(jī)、Java 企業(yè)級(jí)開(kāi)發(fā)(Git、SSM、Spring Boot)等核心知識(shí)點(diǎn)。

star 了這個(gè)倉(cāng)庫(kù)就等于成為了一名更優(yōu)秀的 Java 程序員。可以點(diǎn)擊下面的鏈接跳轉(zhuǎn)過(guò)去 star 見(jiàn)證一下這個(gè)令人激動(dòng)的時(shí)刻。

https://github.com/itwanger/toBeBetterJavaer

該專欄目前仍然排在 GitHub Trending 榜單(Java 類的周榜)上,這讓二哥終于體會(huì)到了霸榜的快樂(lè)!

image
image

沒(méi)有什么使我停留——除了目的,縱然岸旁有玫瑰、有綠蔭、有寧?kù)o的港灣,我是不系之舟

我們下期見(jiàn)~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容