记一次完整的新浪云部署nodejs项目上线完整流程及填坑处理!
工欲善其事,必先利其器。在開始本次部署新浪云nodejs項目之前,請先做好以下準備工作:
1.注冊一個新浪微博賬號!
2.使用注冊好的新浪微博賬號,登錄新浪云網站:http://www.sinacloud.com/public/login/inviter/gaimrn-mddmzeKWrhKW7roB4gWZ_eIVrfrKydg.html
3.在你的計算機上安裝git,如何安裝請參考廖雪峰老師的git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
4.請確定你的項目已經調試好,能夠正常運行!
5.準備好你的數據庫文件。
這里我假設大家已經完成了以上5步,正式開始線上項目的部署!
1.登錄進入新浪云網站之后,系統一般會推薦你實名認證,如果是正常認證需要至多3天時間,加急認證是2小時之內,不過似乎要額外付費,大家正常認證即可。
提交認證資料之后就不用管它了,等它自己認證通過。在認證通過之前,如果別人訪問你的線上項目是會提示該網站未經認證,請謹慎訪問。
2.點擊左上角的控制臺,在彈出的下拉菜單中選擇云應用SAE。
3.進入云應用SAE之后,點擊創建新應用。這里我已經創建好了一個應用,如果大家是第一次使用是沒有下方的應用信息的。
4.中間會彈窗一個什么規范信息,確認之后繼續創建,選擇nodejs開發語言,環境配置和示例個數根據自己的情況來。因為這里我只需要作為一個示例,所以都選擇最低的標準,可以看到價格是0.03元/小時。一定要填寫應用信息,二級域名那里就是以后訪問的域名。
5.確認創建之后,會返回應用管理界面。在代碼管理界面,我們可以看到非常重要的信息,系統分配給你的新浪云git倉庫信息。
6.新浪云的操作先告一段落。接下來我們在電腦上新建一個空的文件夾,用來存放你的項目文件。
為什么不直接使用已有的項目文件夾呢 ?因為萬一你操作失誤,把項目給毀了我可不負責的。
7.打開cmd,進入到當前目錄下。使用git init 初始化當前文件夾。
成功之后可以看到自動建立了一個隱藏文件夾.git,這是git的版本管理倉庫,千萬不要刪除和修改里面的文件。想詳細了解這塊知識的請移步廖雪峰老師的git教程,鏈接在最前面。
8.然后將你的項目代碼全部移動到該目錄下,注意不要node_modules文件夾,哪怕它再小,不要,不要,不要!
第一:因為我們需要檢查一下你的package.json中是否已經完整的記錄了運行該項目所需要的所有依賴模塊。
第二:因為項目部署上線的時候,是不能上傳node_modules文件夾的,新浪云的服務器會自動根據你的package.json中的dependencies來創建node_modules文件夾。
9.如果能夠確保自己的項目中package.json完整的記錄了所有依賴模塊,那么這一步可以跳過不看。如果不確定的同學們,請在該目錄下,打開cmd,運行npm i,系統會根據package.json文件自動生成 node_modules依賴包。
npm i然后請確認依賴安裝完畢之后,你的項目是否能夠正常運行。如果能,說明你的package.json沒問題,如果不能運行,那么請根據項目報錯原因,查找缺少哪個模塊,然后使用 npm i --save 包名稱 ,這樣會將安裝的包記錄在package.json中。直到項目運行成功,package.json文件完整無誤為止!這里一定要弄清楚,否則項目根本無法上傳。
10.配置package.json文件。
首先將你的服務器入口文件名稱改為index.js,然后在package.json中,指定你開發項目時所用的nodeJS版本,如果不指定,那么新浪云服務器會按照最高版本的nodeJS來運行,很可能會導致后面的鏡像文件配置失敗,
然后在scripts中設置start啟動命令,node index.js
在這里也可以看到你的項目依賴哪些模塊。
11.將你項目中服務器的監聽端口改為5050,因為新浪云的服務器運行端口是5050
12.請確保此時你能夠正確運行 npm install命令 和npm start命令,如果是cmd命令行工具應該可以兩條命令一起執行:
npm install && npm start,如果是Powershell則只能分開運行。運行后可以先看看你的項目服務器是否運行正常,通過網絡地址查看一下項目文件或者圖片,能看得到就說明沒問題。
確定項目代碼沒有問題了,請一定記得刪除node_modules文件,刪除node_modules,刪除node_modules,刪除node_modules。否則后面會報錯,如果只看報錯提示是很難找到錯誤根源的。
13.修改數據庫鏈接文件,因為新浪云使用的數據庫信息和你本地使用的不一樣。這里我修改的是pool.js
這里的信息需要登錄你自己的新浪云數據庫后臺查看,如果沒有創建過新浪云數據庫的同學,請跟著下面的步驟一起創建一下,先回到新浪云的應用管理后臺。
一張圖勝過千言萬語,直接看圖吧。
點擊創建
點擊確認。等待系統初始化。
點擊紅框處的管理,進入數據庫管理后臺。
點擊選擇文件,導入你的sql數據文件,然后右下角執行。
等待片刻,導入完畢,可以看到你的數據庫數據了。
回到應用管理后臺,點擊 共享型MySQL,點擊詳情。
在這里你就可以看到端口號,主庫地址,數據庫名稱,用戶名稱,密碼等連接數據庫必備的信息。填到前面你的數據庫鏈接文件中即可,這里我修改的是pool.js。
這一塊似乎好長,真是累。不過快了。
14.回到你的電腦,在之前打開的cmd中,運行以下命令:
git remote add sae +你之前看到的git倉庫地址!在第5部的時候有提到過!
然后輸入git remote,查看遠程庫的名稱是否為sae
15.輸入git add . 將目錄下所有文件添加到倉庫,
然后輸入git commit -m “this is my first project”,將剛剛添加的文件提交到本地的git倉庫(對,就是前面不要你刪除修改的那玩意),后面雙引號中的內容為對本次提交進行的備注。
你會看到N多文件被提交上去了,那些就是你的項目文件。
16.差不多到最后了,將本地倉庫提交到遠程sae倉庫中。
輸入git push sae master
這時系統會彈窗要求你輸入用戶名和密碼,有些版本不會彈窗,要求你直接在cmd中輸入用戶名和密碼。
這里因為我已經輸入過了,所以不會再要求輸入了。
你問用戶名和密碼是什么?
就在前面第5部中提到的git倉庫信息,上面有你的用戶名,密碼就是你注冊時填寫的安全密碼!
如果看到以下界面,那么恭喜你已經部署成功了!!
如果你出現以下錯誤:
error: RPC failed; curl 55 SSL_write() returned SYSCALL, erWfrno = 10053
atal: the remote end hung up unexpectedlyB | 2.00 KiB/s
那么仍然要恭喜你,因為這個坑已經被我填上了,你不用再東翻西找了!
出現該問題的原因是你git提交的時候將node_modules也上傳了,要么建立.gitignore文件,提交的時候忽略node_modules文件夾。要么就干脆直接刪了node_modules,我似乎啰嗦了很多遍?
因為這個問題我查找了n多資料,問了n多人,最后還是新浪客戶給我的回復解決了問題。笑哭。客服關鍵時候還是很給力的 ,而且那么晚了還在加班,確實不容易,一個大大的五星好評。
17.至此,新浪云部署nodeJS項目已經結束了,打開應用管理后臺,點擊容器管理,可以看到你的項目實例。打開控制臺應用管理,可以看到你的項目網址。
嘗試一下訪問靜態資源目錄中的圖片,可以訪問!
結語:
終于寫完了,真的好累。由于我的項目是前后端完全分離的,所以細心的同學應該可以發現,這里上傳的其實只是服務器端代碼,如果大家的前后端代碼是在一起的,那么前端代碼放在靜態資源目錄下面就可以了。如果前端代碼不想和服務器端代碼放在一起,那么請看下集【記一次完整的阿里云虛擬服務器的上傳前端代碼經歷(填坑)】和【新浪云部署中如何修改已經上線的代碼NodeJs版】
鏈接…等我寫好了再發出來。
最近收到反饋有些朋友在git push時候馬上報錯“failed to push some refs to”,錯誤原因是你之前在遠程庫中上傳了一些內容,然后又換了一個新的本地倉庫導致兩個庫之間沒有關聯,解決辦法請參考之前寫的另外一篇文章: https://blog.csdn.net/SilenceJude/article/details/84969237
總結
以上是生活随笔為你收集整理的记一次完整的新浪云部署nodejs项目上线完整流程及填坑处理!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奇妙的AE特效插件之红巨人粒子特效Tra
- 下一篇: 网路视屏学习资源共享