總結一下搭建個人網站《曼雲古籍線上識別》的完整流程

包建強發表於2023-03-03

繼2年前開發出一個標註工具PaddleOCRLabel之後,我就開始煉丹之旅,全面all in人工智慧,歷時一年,終於煉成了第一顆“丹”——針對於古籍的ocr識別模型。經過400萬圖片的驗證,目前對四庫全書版的古籍識別度較高,大約是99.8%。

以下連結是實際效果:https://www.ocr666.top

 

 

 

有了模型,接下來就是搭建上面這個網站,把成果展示給使用者。於是我大約花了三週時間,完成了一次個人建站的過程。整體原則是在不耽誤效能的前提下,花最少的( $ _ $ ),最終花了150元左右。我總結一下這次建站的心得,除了寫前端程式碼和後臺服務,其他都是第一次接觸,所以有很多心得分享:

 

1.購買伺服器

天翼雲。1核2G,40G硬碟,又額外買了40G硬碟。共計130元。好處是沒有流量限制。

注意,如果要域名備案,就一定是用自己的身份證實體驗證來購買伺服器。

不小心多買了一塊40G的硬碟,否則又能節省30元左右 。但好處是藉此學會了linux掛載新硬碟的技術。

 

2.購買域名

域名要和伺服器在一家廠商買,否則不能備案。這裡仍然旋轉天翼雲。top字尾的,24元。明年續費也便宜。

在域名解析頁面,配置伺服器ip和域名的對映,這裡第一次接觸cname和a。

 

3.備案

備案流程就是填寫幾個表格,然後用一個小程式人臉識別,就完事了,一小時左右完成。

但是稽核流程就很久了,大約花了2周時間。先後提交了2次,第一次被拒,花了一週。修改後,再次提交,又等了一週。

天翼雲的免費備案服務做得很到位。有任何問題直接打電話去問客服。有一次凌晨提交的工單,半夜12點半客服就打過來解決問題了。

 

4.製作網站

基於react,用了1周時間。後臺搭建nginx,把做好的react專案,直接上傳到伺服器,把80埠指向該目錄即可。

後臺有兩個服務。一個用nodejs,一個用python的flask+tornado。

資料庫用mysql,基於docker。

 

5.最佳化網站介面

一開始網站做的很low,後來找了一個高大上的網站模板,把模板塞進現有react專案中,用了一週時間。

 

6.申請https證照

1)申請免費https是個很麻煩的是

七牛雲有免費的,缺點是單域名的,優點是可以申請多個。

先申請一個。申請後要去買域名的網站,在域名解析頁面,填寫該證照對應的資訊。

 

2)在伺服器配置證照

下載https證照,上傳到伺服器。

nginx中配置。並把http的請求也轉發到443埠。

這裡注意,精簡版的nginx不支援https。要下載原始碼版本的nginx,重新編譯即可。

 

3)修改所有程式碼

把原先所有訪問ip:port的地方,全都改為https://域名 的方式。

注意:https網頁只能訪問https的介面。

 

7.網站統計

這裡使用umami這個開源專案,在伺服器搭建。有幾個坑:

1)初始化時,需要手動在mysql建立資料庫,然後去編寫那個.env指令碼,才能執行成功。

2)把監控程式碼植入到react網站專案中,放到html的header中。因為umami是ip:3000這樣的訪問url,放到https的網站中,不能訪問,為此需要為umami再次申請一個免費的https證照。

接下來就是著名的在nginx中反向代理配置二級域名的技術了,終於在這裡派上用場了。有了這個二級域名,就可以把他塞進html的header中。

 

8.安裝寶塔平臺。

寶塔的免費版,基本就夠用了。

1)使用其中的ftp服務,把400萬張圖片,大於40G,上傳到伺服器。因為家裡是千兆網路,速度很快。

2)不要使用其中的nginx,自己在本地搭建。因為我直接在nginx中,預設指定react專案為443介面,所以不需要額外在寶塔中建立網站了。

3)在寶塔的“軟體商店”選單中,下載免費的"程式守護管理器"。在裡面建立2個專案,分別指向nodejs後臺服務和python flask後臺服務。程式守護管理器的好處是,一旦介面因為不確定原因崩潰了,可以自動重啟。


9.網站SEO

這裡用到百度站長。

1)登入進入百度站長頁面,獲取屬於自己的token。然後把網站的所有連結url,推送到百度。

他提供了一個介面,每天可以推送3000個url。

為此我編寫了2個python指令碼,第一個指令碼生成網站8萬靜態頁的url,第二個指令碼負責每天推送3000個url到百度。

寶塔中有一個定時任務功能,在裡面配置第二個指令碼即可。

 2)因為react專案是按照SPA做的,頁面內點選按鈕切換內容,url不會發生變化。為此需要重構react專案,比如詳情頁,要讓他支援直接輸入詳情頁的url,引數中帶id,就可以跳轉到這個id對應的詳情頁面。只有這樣,才能把8萬多詳情頁的url推送到百度。

 

任重而道遠,接下來就不再花時間做網站了,而是把更多精力投入到ai上,對演算法進行最佳化。

與君共勉。

 

相關文章