Node.js 后端全程實(shí)戰(zhàn)
本書是《JavaScript 全棧開發(fā)》在后端開發(fā)方面的續(xù)作。后端開發(fā)(也稱服務(wù)端開發(fā))指的是創(chuàng)建Web 應(yīng)用在服務(wù)端的實(shí)現(xiàn),并對它進(jìn)行部署與維護(hù)的過程。要想成為一名全棧工程師,后端開發(fā)的技術(shù)棧是必須要全面了解并掌握的。本書將以基于 Node.js 運(yùn)行平臺的 Express.js 框架為工具為讀者介紹開發(fā)并維護(hù)一個(gè)服務(wù)端應(yīng)用所涉及的全部技術(shù)棧。
本書主體由兩部分組成:第一部分以開發(fā)一個(gè)“線上簡歷”應(yīng)用的服務(wù)端業(yè)務(wù)為演示項(xiàng)目,循序漸進(jìn)地介紹使用 Express.js 框架開發(fā)服務(wù)端應(yīng)用的具體實(shí)踐過程;第二部分以“線上簡歷”應(yīng)用的部署與維護(hù)工作為例,為讀者介紹如何使用Docker、K8s 等運(yùn)維工具來進(jìn)行服務(wù)端應(yīng)用的維護(hù)工作。
本書提供了一個(gè)可讀性高、可被驗(yàn)證的示例項(xiàng)目(包含完整源代碼),以幫助讀者理解書中所介紹的技術(shù)的概念、開發(fā)框架以及 Web 應(yīng)用的維護(hù)工具。本書適合已經(jīng)對 JavaScript、HTML 和 CSS 等基本前端技術(shù),以及 Node.js 運(yùn)行平臺有所了解,并對 Web 全棧開發(fā)及其設(shè)計(jì)理念感興趣的讀者閱讀、使用。
1.內(nèi)容豐富實(shí)用。以Express.js 框架及其相關(guān)工具為例介紹Node.js應(yīng)用程序在服務(wù)端的開發(fā)與維護(hù),從快速后端開發(fā)到云原生環(huán)境的部署運(yùn)維。
2.作者經(jīng)驗(yàn)豐富。作者凌杰精通JavaScript、Python、C、C++等多門編程語言,深耕全棧領(lǐng)域多年,擁有豐富的開發(fā)及測試經(jīng)驗(yàn)。
3.有效提升能力。提供高質(zhì)量的示例項(xiàng)目及完整源代碼,幫助讀者進(jìn)一步理解技術(shù)概念、開發(fā)框架及維護(hù)工具。
凌杰(網(wǎng)名:owlman),浙江大學(xué)遠(yuǎn)程教育學(xué)院“榮譽(yù)學(xué)員”。自由開發(fā)人員、技術(shù)寫作者兼詳者、精通JavaScript、Python、C、C++等多門編程語言,擁有豐富的開發(fā)及測試經(jīng)驗(yàn)。曾擔(dān)任上海交通大學(xué)飲水思源BBS 的電腦技術(shù)區(qū)區(qū)長。近年來譯有《Python算法教程》《JavaScript 面向?qū)ο缶幊讨改稀贰对啬J健返茸髌贰?
第 一部分 服務(wù)端項(xiàng)目的開發(fā)
第 1 章 服務(wù)端開發(fā)環(huán)境 3
1.1 安裝操作系統(tǒng) 3
1.1.1 服務(wù)器操作系統(tǒng)概況 4
1.1.2 為什么選擇類Linux 系統(tǒng)? 4
1.1.3 安裝并配置 Linux發(fā)行版 6
1.2 安裝開發(fā)工具 9
1.2.1 Node.js 運(yùn)行平臺 9
1.2.2 項(xiàng)目開發(fā)環(huán)境 10
1.3 安裝數(shù)據(jù)庫 13
1.3.1 MySQL 數(shù)據(jù)庫 13
1.3.2 MongoDB 數(shù)據(jù)庫 16
1.3.3 關(guān)于數(shù)據(jù)庫的容器化 19
第 2 章 服務(wù)端開發(fā)方案 20
2.1 Express.js 框架簡介 20
2.1.1 小巧而富有彈性 21
2.1.2 使用中間件可擴(kuò)展機(jī)制 22
2.2 創(chuàng)建應(yīng)用程序 23
2.2.1 動態(tài)頁面 23
2.2.2 HTTP API 服務(wù) 27
2.3 項(xiàng)目實(shí)踐 33
2.3.1 創(chuàng)建項(xiàng)目 33
2.3.2 項(xiàng)目分析 35
2.3.3 添加 API 37
第 3 章 數(shù)據(jù)庫接口設(shè)計(jì) 41
3.1 數(shù)據(jù)庫概述 41
3.1.1 數(shù)據(jù)庫的存儲結(jié)構(gòu) 41
3.1.2 數(shù)據(jù)庫的邏輯設(shè)計(jì) 43
3.2 關(guān)系數(shù)據(jù)庫 44
3.2.1 在數(shù)據(jù)之間建立關(guān)系 44
3.2.2 使用 Knex.js 框架 45
3.3 非關(guān)系數(shù)據(jù)庫 52
3.3.1 非關(guān)系數(shù)據(jù)庫的分類 53
3.3.2 使用 MongoDB
數(shù)據(jù)庫 53
3.4 項(xiàng)目實(shí)踐 60
第 4 章 服務(wù)端接口實(shí)現(xiàn) 67
4.1 服務(wù)端的實(shí)現(xiàn)步驟 67
4.1.1 創(chuàng)建 HTTP 服務(wù)器 68
4.1.2 創(chuàng)建路由器中間件 76
4.1.3 解析客戶端請求 78
4.1.4 響應(yīng)客戶端請求 82
4.2 部署 Web 客戶端 86
4.2.1 獲得 Web 源代碼 87
4.2.2 配置靜態(tài)資源服務(wù) 88
4.3 項(xiàng)目實(shí)踐 89
第二部分 服務(wù)端項(xiàng)目的運(yùn)維
第 5 章 非容器化部署應(yīng)用 99
5.1 運(yùn)維工作簡介 99
5.2 部署工作流程 101
5.2.1 選擇服務(wù)器設(shè)備 101
5.2.2 配置服務(wù)器環(huán)境 103
5.2.3 使用進(jìn)程管理器 108
5.2.4 反向代理服務(wù)器 109
5.2.5 關(guān)于之后的任務(wù) 112
5.3 項(xiàng)目實(shí)踐 112
5.3.1 部署數(shù)據(jù)庫 112
5.3.2 添加反向代理 113
5.3.3 發(fā)現(xiàn)問題 116
第 6 章 應(yīng)用程序的容器化 117
6.1 軟件生產(chǎn)理念回顧 117
6.1.1 流水線式生產(chǎn) 117
6.1.2 敏捷軟件開發(fā) 118
6.1.3 DevOps 工作理念 119
6.2 配置容器化工具 120
6.2.1 Docker 簡介 120
6.2.2 安裝 Docker 121
6.2.3 配置工作 124
6.3 Docker 基本使用 125
6.3.1 理解鏡像 125
6.3.2 鏡像管理 126
6.3.3 容器管理 131
6.3.4 其他操作 133
6.4 項(xiàng)目實(shí)踐 134
6.4.1 基本工作流程 134
6.4.2 容器化指令簡介 136
第 7 章 自動化部署與維護(hù)(上) 139
7.1 使用微服務(wù)架構(gòu) 139
7.1.1 微服務(wù)架構(gòu)簡介 140
7.1.2 容器化實(shí)現(xiàn)方式 141
7.2 Docker Compose 簡介 144
7.2.1 安裝 Docker Compose 144
7.2.2 基本操作流程演示 145
7.2.3 編寫容器編排文件 146
7.3 項(xiàng)目實(shí)踐 151
7.3.1 自動化部署 151
7.3.2 容器化維護(hù) 153
7.3.3 自動化清理 155
第 8 章 自動化部署與維護(hù)(下) 157
8.1 Kubernetes 簡介 157
8.1.1 核心組成結(jié)構(gòu) 158
8.1.2 軟件架構(gòu)設(shè)計(jì) 160
8.2 構(gòu)建 K8s 服務(wù)器集群 161
8.2.1 安裝與配置 Docker+K8s 環(huán)境 162
8.2.2 設(shè)置主控節(jié)點(diǎn)與工作節(jié)點(diǎn) 163
8.2.3 使用 kubectl 遠(yuǎn)程操作集群 166
8.3 項(xiàng)目實(shí)踐 167
8.3.1 部署應(yīng)用的基本步驟 167
8.3.2 編寫資源定義文件 172
8.3.3 使用 kubectl 173
附錄 A Git 簡易教程 176
A.1 版本控制系統(tǒng)簡介 176
A.1.1 版本控制術(shù)語 176
A.1.2 版本控制方式 177
A.2 Git 版本控制系統(tǒng) 177
A.2.1 Git 的特性 178
A.2.2 安裝與配置 178
A.3 單人項(xiàng)目管理 181
A.3.1 項(xiàng)目設(shè)置 181
A.3.2 文件管理 182
A.3.3 版本管理 187
A.3.4 分支管理 190
A.3.5 標(biāo)簽管理 193
A.4 團(tuán)隊(duì)項(xiàng)目協(xié)作 195
A.4.1 配置 SSH 客戶端 195
A.4.2 管理遠(yuǎn)程倉庫 196
A.4.3 同步項(xiàng)目數(shù)據(jù) 199
附錄 B 使用 Vagrant 搭建 K8s服務(wù)器集群 203
B.1 Vagrant 的基本使用 203
B.1.1 項(xiàng)目的組成架構(gòu) 204
B.1.2 編寫項(xiàng)目配置文件 204
B.1.3 Vagrant CLI 的常用命令 210
B.2 項(xiàng)目示例:搭建 K8s
服務(wù)器集群 212
B.2.1 準(zhǔn)備工作 212
B.2.2 搭建集群 215