1.將本地代碼上傳到git服務器
git是國外代碼庫,可以使用國內[gitee碼云](https://gitee.com/)。
沒有賬號直接注冊即可,點擊創建倉庫:

設置倉庫:

點擊創建后,查看入門教程,我們開始上傳代碼到git服務器:

(1)在本地安裝git
在技能學習:學習使用Node.js + Vue.js,開發前端全棧網站-14-3.nginx配置web服務器并安裝網站環境文章開始我們就已經下載了完整的git,所以我們可以在vscode終端直接使用。
(2)在本地使用git創建keygen
過程與服務器中一樣:

同樣保存記錄公鑰keygen,方便以后直接使用。
(3)將公鑰部署到git服務器
將公鑰部署到git服務器后,每次上傳代碼就不需要輸入密碼了。

進入設置頁面,找到ssh公鑰進行公鑰的添加:

輸入密碼驗證后成功添加:

此時成功,就等于git授權了當前你這臺電腦上傳下載文件的權限。
(4)初始化git
首先對git進行全局設置:
```
git config --global user.name "bafangsheji"
git config --global user.email "9031075+bafangsheji@user.noreply.gitee.com"
```

然后初始化git
```
git init
```
目的是初始化當前文件夾為git項目。

顯示沒有git命令,這是因為最初下載的時候沒有意識到會有可能在非git軟件上使用git,所以我們只要將git添加到環境變量即可。
找到環境變量在哪:

先將git的bin路徑添加到環境變量:

然后找到cmd所在位置,同樣路徑添加到環境變量:

添加后重啟vscode,輸入命令git init:

我這變綠了,好可怕,但是成功了:)。
此時綠色就代表這個項目為git項目。
此時我們可以看到項目文件夾中的部分文件夾為灰色,基本上都是一些包文件,是因為在.gitgnore文件中自動識別了一些沒有必要一起上傳的大文件包,在上傳到git服務器時自動忽略。這些包之后在服務器中可以使用一條命令根據package.json文件在服務器中重新下載。

(5)把當前文件夾添加到git項目中
```
git add .
```
表示將項目文件夾中所有文件加入到git版本,以便于上傳到git。
(6)將當前項目提交到本地(保存當前項目狀態)
```
// git commit提交到本地 -am 添加描述
git commit -am "初始化"
```

此時git要求我們提交一些信息,按照他的要求提交我們的信息。
添加完信息后再次執行提交到本地命令`git commit -am "初始化":`
一頓更新,文件狀態又恢復原狀,意思是本地代碼回來了。

其中create mode …意思是對于git來說新創建了這些文件。
(7)給本地git添加一個源頭地址
源頭地址大致就是我們本地代碼需要上傳到的地址。
origin是約定俗成的源頭名,你想要改成其他名字也可以。
地址就是最開始我們找到的git的ssh地址。
```
git remote add origin git@gitee.com:bafangsheji/node-mine.git
```

(8)提交本地代碼到git服務器
```
// git push上傳代碼 -u xxxx上傳到的地址
git push -u origin master
```
首次提交代碼需要使用-u說明添加到的位置,以后提交直接git push即可。

成功上傳,在git頁面中刷新查看,除了灰色的文件夾都成功上傳了:

2.在網站服務器中拉取git服務器中的代碼
(1)部署網站服務器中的公鑰
首先我們要將之前網站服務器中的ssh-keygen公鑰部署到git賬號中,用來作網站服務器對git中代碼的拉取。
與本地公鑰不同的是,網站服務器中的公鑰不要直接添加到設置中的SSH公鑰中,因為如果你的網站項目是給客戶做的,客戶就可以在服務器中訪問你git賬號中的所有項目。
在git服務器中進入我們的項目,選擇管理,找到公鑰管理,添加部署公鑰:

將網站服務器中的公鑰錄入添加:

添加并自動啟用后我們就可以拉取代碼到網站服務器了。
(2)拉取代碼到網站服務器
登錄網站服務器:

ll命令查看當前服務器中所有文件夾和文件:

進入‘/’目錄并再次查詢,找到/var文件夾,查看:

進入’www’文件夾,在進入html文件夾,其中只有一個html文件:

此時在html文件夾中創建一個data文件夾并進入:

具體命令:
```
// 切換文件夾
cd ***
// 查看文件夾文件
ls
// 查看文件夾文件,并顯示隱藏文件
ll
// 新建文件夾(make directory)
mkdir ***
```
重頭戲,在這個data文件夾中拉取項目代碼:
```
git clone ***
```
復制git中ssh地址:

開始拉取代碼:

此時ll查看data文件夾內容:

代碼拉取成功,此時我們根據server端package.json中之前保存下來的效果包名下載之前被忽略的所需功能包。
```
// 從package.json中找到需要下載的文件包進行下載
npm i
```
過程中讓我更新npm,下載很快不知道是否更新完node_module中的包。
檢查一下,可以找到幾個我們之前安裝過的包:

應該沒什么問題,這時我們就可以啟動該項目了:
```
node index.js
```
回到server文件夾,輸入命令,得到端口號:

但此時情況與我們本地相同,都是一個本地環境上項目的開啟,一旦關閉服務器連接,項目就同時關閉了。所以我們需要使用pm2對我們的項目進行后臺連接,實時開啟我們的項目。
3.使用pm2實時開啟項目
(1)全局安裝pm2:
```
npm i pm2 -g
```

(2)使用pm2開啟項目
```
pm2 start index.js
```

此時我們的項目就啟動了,同時沒有占用當前終端,可以繼續操作。
更多相關pm2命令:
```
// 查看當前進程
pm2 list
// 查看此時占用端口
pm2 logs index
```

此時根據查詢logs發現項目啟動后報錯了,所以趕緊根據提示查看了報錯原因:

經查詢后說是node 和 npm 版本的原因,試了半天問題并沒有解決,于是我關閉了pm2,再次使用node index.js進行開啟端口,查看到了問題所在:
```
// 根據當前項目序列0關閉pm2后臺運行的項目
pm2 stop 0
// node開啟端口
node index.js
```
一失足成千古恨,把一切warning報錯習慣性忽略的我終于被打了臉。經查詢原因是mongodb數據庫的問題,它要求我加上`{ useUnifiedTopology: true }`,沒辦法,本地代碼中找到數據庫設置:

別扭啊,搞不懂,但也沒辦法,重新將代碼上傳到git服務器,再到網站服務器拉取一遍試一下:

此時git中文件已更新:

網站服務器再次拉取項目:
當輸入git命令,顯示沒有.git時

輸入命令git init 創建.git文件

重新拉取項目前先將項目移除:
```
// 刪除文件
rm ***
// 刪除文件夾
rmdir ***
// 刪除文件夾及子文件
rm -rf ***
```

此時重新拉取git服務器上的項目代碼:

進入server,再次下載package.json掛載的包文件后啟動項目:

成功,沒有報錯,牛比。
此時關閉連接,使用pm2啟動項目,并使用curl命令查看項目:

成功進入頁面,由于其他頁面我再編譯生產環境時沒有做,所以大家如果當時把localhost:3000:web做了的話就可以進去看一下。
此時服務器中的項目就可以訪問了,下篇文章我們配置nginx反向代理,使得我們可以根據域名訪問我們的項目,看到頁面。
- tp6+vue
- 1.工具和本地環境
- 2.啟動項目
- 3.路由、模型與數據庫操作
- 4.優化后端接口,前端使用axios實現接口功能
- 5.用戶登錄,bcrypt(hash)加密與驗證
- 6.用戶登錄(二),token驗證
- 7.分類的模型關聯和通用CRUD接口
- 8.使用vue的markdown編輯器并批量上傳圖片
- Node.js + Vue.js
- 工具,本地環境
- 2.1啟動項目
- 3.element-ui和vue-router路由的安裝和使用
- 4.使用axios,并創建接口上傳數據到mongodb數據庫
- 5.mongoodb數據庫的“刪、改、查”操作
- 6.mongodb數據庫無限層級的數據關聯(子分類)
- 7.使用mongodb數據庫關聯多個分類(關聯多個數據)
- 8.server端使用通用CRUD接口
- 9.圖片上傳
- 10.vue的富文本編輯器(vue2-editor)
- 11.動態添加分欄上傳多組數據
- 12-1.管理員模塊
- 13-1.搭建前臺web端頁面
- 1.使用sass工具搭建前臺web端頁面
- 2.sass工具的變量
- 3.使用flex布局并開始搭建web端
- 4.vue廣告輪播圖,并使用接口引入數據
- 5.使用字體圖標(iconfont)
- 6.卡片組件的封裝
- 14-1.生產環境編譯
- 1.環境編譯
- 2.購買域名服務器并解析域名到服務器
- 3.nginx配置web服務器并安裝網站環境
- 4.git拉取代碼到服務器
- 5.配置Nginx反向代理
- 6.遷移本地數據到服務器(mongodump)
- uni
- 1.工具&本地環境
- 2.頁面制作
- 3.頁面制作、組件與輪播
- 4.頁面跳轉與橫向滑動
- 5.用戶授權登錄和用戶信息獲取
- 6.用戶注冊和數據存儲
- 7.用戶填寫表單信息