1. 程式人生 > >個人建站過程全記錄(工具層)

個人建站過程全記錄(工具層)

   本節,我將介紹下此次我的網站在工具層面做的工作,也會介紹下基礎概念。這裡面會側重廣度的展示,在深度上不會花太多時間。因為在初學階段,瞭解原理不是最重要的,最重要的是瞭解怎麼用,在熟悉了怎麼用之後再去深究原理。請相信我,你不會想去深究JDK9為什麼和15版本的IDEA不相容這樣的問題。許多框架對JAR包的版本,配置檔案的格式都有嚴格的要求,寫錯一個字母都執行不起來。所以不要去鑽牛角尖,這樣會節省你不少的時間。

   由於我本身水平不高,寫的這幾篇雜文對高手來說也都是很簡單的,所以我瞄準的目標讀者是跟我一樣的初學者。所以下面說得都是會很基礎的東西,這一點我想有必要說明一下。在介紹工具之前,我先講一下一個標準的WEB軟體架構。我們應該常能夠聽到B/S,C/S架構,這裡說得就是前後臺工作的模式。簡單的來講,軟體可以理解為:"程式碼+資料庫"。資料庫用來存放我們需要的資料,而程式碼規定了我們對資料操作的邏輯。講個例子,我們常見的登入功能,使用者需要有自己的賬戶密碼,才能登入系統。而使用者所登陸的網站,必須要能夠驗證這個賬戶密碼是否正確,甚至是更為嚴格的驗證。在這個例子裡,使用者的賬戶密碼就是資料,它需要儲存在資料庫裡。而驗證賬密是否正確,就由我們的程式碼來負責。資料庫管理系統(DBMS)是計算機系統裡的支撐軟體,它是位於作業系統之上的底層軟體,這個屬於計算機組成原理的內容。感興趣的可以看《計算機組成原理》,詳細瞭解計算機的硬體結構,工作機制,推薦南京大學袁春風老師的書。最簡單的程式是單機版的,資料庫在本機,也只有本機訪問,只需要本機連線下資料庫就行了。這種程式的架構很簡單。

   但是實際應用的程式不會這樣。我們手機上的,瀏覽器裡的,桌面的軟體,都是需要給客戶用的,我們必須支援遠端訪問。那麼遠端訪問,一定會有客戶機,一定會有伺服器,我們把接受訪問的機器叫做伺服器,訪問伺服器的機器叫做客戶機,這個時候就要介紹B/S,C/S架構了。B/S是Browser/Server的縮寫,意思是瀏覽器/伺服器模式,客戶通過瀏覽器來登入訪問系統。C/S是Client/Server的縮寫,意思是客戶機/伺服器模式,客戶呢,通過專門編寫的客戶端程式來登入訪問系統。這裡舉兩個栗子:常見的B/S架構是各種教務管理系統,各個學校學生用來選課查分的系統,就是典型的B/S架構。客戶用瀏覽器,訪問某個URL,然後登入使用系統。B/S架構的前端目前有成熟的Html+JS+CSS的語言選型,基本都通過這個實現前端頁面的功能。還有常見的C/S架構就是QQ了,在移動端未興起的時候,05,06年,我記得QQ都是用客戶端登入,隨後才有了網頁登入。這個也許記不太準確,總之QQ客戶端就是常見的C/S架構產品。

   介紹完了這些,我們就知道了這個電子商城的軟體架構了。這是採用的B/S架構,客戶通過瀏覽器來登入使用系統。為了開發這個系統,我們需要開發環境用的工具,生產環境用的工具,測試用的工具。總的來說,我們選用了以下工具來搭建開發環境:IDEA+Mysql+Nginx+Tomcat+Git+Maven.我們下面詳細講一下各個工具的概念和大概用途。

  IDEA:是一個IDE,即Integrated Development Enviroment,就是整合開發環境。它集成了很多工具,比如Git,Maven,Tomcat,讓你在一個軟體裡使用多種工具,所以叫整合開發環境。簡單地說,這就是我們寫程式碼的地方。它的介面像下面這樣:

  

  2.Mysql

  Mysql是一個數據庫軟體,它適用於中小型網站。Mysql可以粗略的分為社群版和企業版,社群版開源免費,功能較少,企業版收費,功能也更為強大。我們安裝資料庫,是為了儲存我們網站的資料,網站的一切資料都會放在資料庫裡,所以資料庫很重要。資料庫有欄位,表,庫,事務,鎖,儲存過程,正規化等概念,詳細瞭解這個需要看一本叫《資料庫系統概論》的書,王珊薩師煊。SQL是必須要會的,這本書裡都會講。

 3.Git

  Git是一個程式碼版本管理工具,或者說程式碼同步工具。為什麼要用Git呢?Git怎麼用呢?要回答這些問題,需要想象一個場景。之前說過網站是一種C/S架構的系統,這意味著有一臺伺服器,我們寫的程式碼最終要放在伺服器上。但是我們不能直接在伺服器上面寫程式碼。伺服器大多是用的Linux系統,命令列介面,沒法用IDE,因為寫程式碼要各種除錯,沒有IDE是不方便操作的。

  那麼面對這種情況,該怎麼辦呢?我們寫的程式碼在自己的電腦上,怎麼把它放到伺服器上呢?用U盤拷嗎?這個是行不通的。現在很多伺服器都是雲伺服器,就是你手上只有伺服器的IP地址,真實的伺服器都在某地的雲端計算倉庫裡。所以用U盤拷是行不通的。

  這時候就要說明了,假如有一個地方,給你放程式碼,你可以上傳,也可以下載。就跟網盤差不多,這樣會不會很方便?

  答案是肯定的。我們把儲存程式碼的地方叫程式碼託管平臺,也可以叫遠端倉庫。Git是用來上傳下載程式碼的工具,事實上,GIt的功能可不止上傳下載這麼簡單。GIt還提供分支,提供標籤,方便開發者協同開發,並進行版本管理。許多的開源專案,都是將程式碼託管在遠端倉庫上的,常見的有Github,碼雲。選擇託管平臺建議碼雲,速度快,Github是美國的站點,國內訪問慢,而且有時候連不上,比較麻煩。而且碼雲是中文網站,對中國程式設計師更友好。

4、Tomcat

Tomcat是一個webserver,也就是說網頁伺服器,這裡說的伺服器不是指物理的硬體,而是從它的功能而言的。客戶端的請求,都被tomcat接收。它負責響應並返回資源。具體的細節得結合部署來講

5.Nginx

Nginx是一個代理軟體,這個必須結合伺服器的配置講。否則新手是沒法理解的。後面伺服器部署的時候講。

 6.Maven

Maven是一個專案管理工具,在我們開發的過程中,會引用各種各樣的JAR包,版本之間可能會有衝突,使用Maven可以有效的解決這個問題。這個會結合程式碼層來講。

  看到這裡,相信初次接觸的同學難免會有頭暈的感覺。有這樣的情況是正常的,我們在開發的過程中,一定得樹立一個觀念。即開發軟體是一個高度結構化的一個專案,寫程式碼只是工作內容的一部分。除此之外,環境的搭建,程式碼結構的設計,需求的分析,部署的過程,都是在寫程式碼之外要做的工作,這些工作是使用者所不知道的,而開發者是必須掌握的,因為這些底層的工作,恰恰是相當重要的工作。

  這裡,順便要說幾個程式設計師常說的術語,初學者剛聽到會迷糊,所以特定解釋下。
  開發環境:之前我們說過,我們寫程式碼最終是要放到伺服器上面的,但是程式碼在伺服器上面寫又不方便。所以我們在自己的電腦上,配置好各個軟體工具,然後在本機寫程式碼。我們把本機就叫開發環境。

  生產環境:相對於開發環境,生產環境就是真正的伺服器了。程式碼就在這個上面執行,客戶也直接訪問這臺伺服器。生產環境及其重要,對於它的每一項配置,任何一個改動都應該極其小心。如果因為錯誤的配置,導致伺服器宕機,那麼後果是十分嚴重的,這點在各種金融系統裡體現的尤為明顯。

  上線:是指將寫好的程式碼放到生產環境裡,然後讓使用者能正常訪問。比方說,網站需要新增評論功能,在開發環境,程式碼已經寫好了,上傳到了遠端倉庫。那麼我們需要拉取,編譯,重啟tomcat,重啟git,把之前釋出的流程重新來一遍,然後確保新功能可以使用,至此上線完成。

  部署:意思跟上線基本一樣。

  前端:前端後端的概念,是與MVC模式相對應。在軟體開發中,有個經典的設計模式叫MVC,也就是Model-View-Controller,這個概念要想理解必須實際敲出一個應用來才行。這裡簡單的講一下:MVC的意思是將一個軟體分為三個部分,分別是檢視層,專門負責展示資料,模型層負責進行相關的業務邏輯操作,控制層則決定檢視層和模型層如何互動。這是一種結構化的設計方法,這樣分了之後,軟體的各個部分各司其職。前端就是對應模型層的概念,前端負責的是資料的展示,當然現在一些業務邏輯也是放在前端,用JS實現,但這仍然是前端工作的一部分。舉個形象的例子:客戶輸入taobu.com,然後出來了一個頁面,包含了輪播圖,側拉列表,動畫等等,客戶點選登入,跳出來一個登入頁面,客戶點選一個連線,跳轉到相應的頁面,這個就是網站的前端。

  後端:後端相對於前端,所做的工作就是實現業務邏輯。比方說,我們點選前端的登入按鈕,使用者輸入資料,前端獲取資料,傳送給後端。這個時候,我們需要一個邏輯來認證這個登入是否成功,比如這個賬密是否存在於資料庫,這個密碼是否正確,等等。這個邏輯我們就放在後端實現。

相關推薦

個人過程記錄工具

   本節,我將介紹下此次我的網站在工具層面做的工作,也會介紹下基礎概念。這裡面會側重廣度的展示,在深度上不會花太多時間。因為在初學階段,瞭解原理不是最重要的,最重要的是瞭解怎麼用,在熟悉了怎麼用之後再去深究原理。請相信我,你不會想去深究JDK9為什麼和15版本的IDEA不

【Caffe2】Windows7下caffe2編譯配置記錄GPU版

caffe2跟老版caffe相比變化較大,更容易上手和使用。但caffe2的windows版配置比linux下要麻煩一些、且更容易出錯,把全過程記錄下,以供參考。 1. 準備工作 (1)安裝CUDA、cuDNN (

關於xampp整合包的使用完整版

1.在安裝之前,首先你得確定你沒有單獨裝過mysql(會衝突),裝過就卸了,去cmd裡面解除安裝(管理員身份執行,切換到bin目錄下 mysqld -remove),然後刪掉資料夾,還得確認一下服務裡面有沒有mysql,有的話,滑鼠右鍵屬性,然後選擇禁用(類似的如果裝過xampp不行的,先去xamp

Mac電腦 阿裏雲ECSContentOS Apache+vsftpd+nodejs+mongodb過程總結

制作 /dev/ 正常的 nodejs tps func apache div hub 簡介:我這裏采用的阿裏雲免費提供的6個月ECS服務器;制作了一個簡單的爬蟲程序;裏面很多功能還麽做;搜索裏面功能回去的數據未做處理會崩潰(大家不要點搜索功能);地址:http://lol

在CentOS6上編譯安裝實現LAMPphp-modules+phpMyAdmin安裝過程記錄

輸出 dev 補充 server log tab cif web 必須 php與apache協作有三種模式:CGI、modules、FastCGI。  在CGI模式下,用戶請求php文件時,apache會啟動響應進程,調用php處理器處理請求,然後將結果返回給客戶端。用

個人記錄

       沒想到困擾了我這麼久的一個問題,居然在短短的時間內就給解決了。一直在網上找免費的主機啊,免費的域名啊,可是就是弄來弄去都不行,謀劃已久的個人網站也遲遲沒能弄出來,這幾天在看一個很牛逼的同學的網站,他介紹了他之前建站的一些經歷,我突然發現,還有appfog這種東

工具Linux筆記之終端日誌記錄工具script

工具類 article 空間 post 令行 有時 可能 關於 edit 在學習Linux時,有時候終端的打印消息對於我們很重要,可是終端顯示也是有一定的緩沖空間的。當信息打印許多時,前面的信息就會被覆蓋掉。所以這裏網上搜索了一下這方面的介紹。現總結例如以下:

在CentOS7上通過RPM安裝實現LAMP+phpMyAdmin過程記錄

isp -s 管理工具 gpgcheck b2c link 5.5 art http 在CentOS7上通過RPM安裝實現LAMP+phpMyAdmin過程全記錄 時間:2017年9月20日 一、軟件環境: IP:192.168.1.71 Hostname:centos73

在CentOS7上配置MariaDB-Galera-Cluster過程記錄

base table inf replicat connect 全局 lec sig 5.5 在CentOS7上配置MariaDB-Galera-Cluster過程全記錄 MySQL or MariaDB Replication之Galera Cluster Galera

SAP S4HANA1610/Fiori安裝過程記錄

很好 license 進程 配置指南 命令 sin image windows com 經歷各種坑,從硬件到文件,終於安裝成功。有需要安裝或使用S4HANA(含Fiori)的同學可以參考。安裝文件分享給大家 鏈接:http://pan.baidu.com/s/1mi7LfI

Windows Server 批量創DNS區域及記錄使用bat腳本

watermark color rec alt window oss col server prim 1.添加DNS正向區域dnscmd /zoneadd Skills001.com /primary /file Skills001.com.zoned

個人,空間如何選擇

小夥伴 是否 原因 就是 很多 出現問題 機房 自己 程序 隨著互聯網的不斷普及深化,個人建站的難度也在不斷降低,越來越多的網民都希望能夠有一個屬於自己的個人網站,建站三要素:域名、空間、程序大家都不陌生,但是讓多數小夥伴們最傷腦筋的莫過於空間的選擇了,那麽我們該如何選擇一

DL之Attention-ED:基於TF NMT利用帶有Attention的 ED模型訓練、測試(中英文平行語料庫)實現將英文翻譯為中文的LSTM翻譯模型過程記錄

DL之Attention-ED:基於TF NMT利用帶有Attention的 ED模型訓練(中英文平行語料庫)實現將英文翻譯為中文的LSTM翻譯模型過程全記錄 測試輸出結果     模型監控 1、SCALARS clipp

Mysql學習過程中的一點記錄行列調換

兩個表  user.id   user.name   user.age  phones.id   phones.phone_num   phones.user_id 1. 簡單的左查詢

DL之RNN:人工智慧為你寫歌詞(林夕寫給陳奕迅)——基於TF利用RNN演算法實現【機器為你作詞】、訓練&測試過程記錄

DL之RNN:人工智慧為你寫歌詞(林夕寫給陳奕迅)——基於TF利用RNN演算法實現【機器為你作詞】、訓練&測試過程全記錄 輸出結果 1、test01 你的揹包 一個人過我 誰不屬了 不甘心 不能回頭 我的揹包載管這個 誰讓我們是要不可 但求跟你過一生 你把我灌醉 即使嘴角

DL之RNN:人工智慧為你寫周董歌詞——基於TF利用RNN演算法實現【機器為你作詞】、訓練&測試過程記錄

DL之RNN:人工智慧為你寫周董歌詞——基於TF利用RNN演算法實現~機器為你作詞~、訓練&測試過程全記錄 輸出結果 1、test01 夕海 而我在等待之光 在月前被畫面 而我心碎 你的個世紀 你的時間 我在趕過去 我的不是你不會感覺媽媽 我說不要不要說 我會愛你 我不要你不

NLP之WE之Skip-Gram:基於TF利用Skip-Gram模型實現詞嵌入並進行視覺化、過程記錄

NLP之WE之Skip-Gram:基於TF利用Skip-Gram模型實現詞嵌入並進行視覺化 輸出結果 程式碼設計思路     程式碼執行過程全記錄 3081 originated -> 12 as 3081 originated

TF之DCGAN:基於TF利用DCGAN測試自己的資料集並進行生成過程記錄

訓練的資料集部分圖片 以從網上收集了許多日式動畫為例 訓練過程全記錄 開始訓練…… {'batch_size': <absl.flags._flag.Flag object at 0x000002C943CD16A0>, 'beta1':

零基礎個人——混合模式開發之專案上線那些坑 、終結

最後說一下反向代理和域名解析。           首先說一下神魔叫反向反向代理,,你可以理解為系統的自我保護機制吧~~對外只開放一個埠,,然後電腦上的服務通過對映給代理伺服器在通過外網訪問。。是不是很拗口。 其實也很好理解 就說現

零基礎個人——混合模式開發之專案上線那些坑 、四

關於vue 打包 在開發完vue 專案後  實際上線的時候我們需要生產環境而不是開發環境  (這是句廢話 ) 這個時候  我們需要在專案下  執行 npm run build 會在專案下生成dist資料夾    然