零基礎個人建站——混合模式開發之專案上線那些坑 、二
用nodejs 開啟我們的服務 (這裡採用KOA框架 和mongodb 資料庫)關於裡面的詳細程式碼我就不說了,,沒有基礎的同學要去努力學習~~~~
一 、 全域性安裝koa-腳手架
1、新建專案目錄,準備在哪裡建立專案和寫程式碼,就在哪裡建立即可。
2、開啟命令列視窗。安裝koa-generator,安裝命令為:
npm install -g koa-generator
3、使用koa-generator生成koa2專案,輸入命令: (koa_demo為“專案名稱”,即:專案資料夾)
koa2 koa_demo
備註: 我使用 ejs 模版,因此,生成koa2專案時,我一般輸入命令:koa2 koa_demo -e --ejs
(這樣,就把預設的jade 換成了 ejs 了)
4、建立專案成功之後進入koa_demo專案,然後進行安裝koa2依賴就可以了
cd koa_demo && npm install
5、安裝完成之後通過命令:npm start
啟動專案,開啟瀏覽器 http://localhost:3000/ 就能看到頁面了。
備註:引數相關
在建立專案時,可以定製自己想要的東東,以下是引數:
-h --help
-V --version
版本號
-e --ejs
新增ejs模板引擎支援(預設是jade)
--hbs
新增hbs模板引擎支援(預設是hbs)
-H --hogan
新增hogan.js支援
-c --css <engine>
新增css樣式 支援 less sass styus css(預設是css)
--git
(g小寫) 新增 .gitignore
-f --force
force on non-empty directory
要是開啟成功的話會顯示
現在我們一就可以通過伺服器來構建我們服務,,我們需要關心這一段程式碼
app.use(require('koa-static')(__dirname + '/public'))
如果我們需要向前臺返回 靜態資源 只需要將我們的專案目錄放在public下,到時候訪問對應html。
如果我們需要配置專案其他的api 就需要載入其他的模組 來配置對應的路由,傳送不同的資料給前臺
const router = require('koa-router')()
router.get('/', async (ctx, next) => {
await ctx.render('index', {
title: 'Hello Koa 2!'
})
})
router.get('/string', async (ctx, next) => {
ctx.body = 'koa2 string'
})
router.get('/json', async (ctx, next) => {
ctx.body = {
title: 'koa2 json'
}
})
module.exports = router
最後別忘了把對應路由載入到主執行緒裡邊。
現在 ,,我拖了一個html的靜態資源放在自己的public 目錄下專案結構如圖所示
,然後去訪問
http://localhost:3000/050/index.html
對應頁面就可以成功的訪問了。
這是在本地 如果實在伺服器上呢??so easy 把同樣的步驟在走一遍不就完了,
1、開啟SLL 終端 開啟對應的檔案目錄把整個專案拖到這個資料夾下,,注意,,如果你不想上傳的很慢的話要把nodemoudles資料夾刪除再上傳 在伺服器在npm 下載 。另一個我們要注意下端口占用的問題,常用的80 3000 8080埠一般都是拋給主要的服務,自己設定的埠要記得。
2.伺服器環境安裝node 和 npm 這種有很多方法,大家自行百度,這裡說一種我認為最簡單的,,通過node版本管理器來安裝,
執行:
先安裝node 版本管理器
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
之後需要啟用nvm:
source ~/.nvm/nvm.sh
啟用完成後,安裝node
nvm install node
安裝完成後,切換到該版本
nvm use node
執行完檢查一下
[[email protected] ~]# node -v
v10.9.0
[[email protected] ~]# npm -v
6.2.0
說明安裝成功。
現在 專案上傳完成之後 我們執行
cd /usr/local/nodeproject
然後
npm install
安裝所有依賴就可以在伺服器上啟動我們的專案。
理論上 我們的專案現在可以通過我們的公網ip + 埠訪問 然而!!!!
問題就出在這裡 電腦防火牆可不是吃素的 隨隨便便就進來了,,那還了得,,下載我們需要去阿里的伺服器控制檯
新增規則 http 協議 埠號開啟 我們就可以通過公網ip+埠訪問我們的服務了 我這裡是tomcat伺服器,
然而 在運行了node 之後 我們也可以訪問了,,大功告成,,合上電腦 卻發現 服務又掛了,,這是怎麼回事???
原來在linux 每個session 是有生命週期的 當前session下開啟的程序會隨著session的關閉而被殺死。。我們需要在執行node **.js時 變為nohup 後臺執行就行了 或者也可以把本次執行的命令變為一個常駐服務(類似於mysql),這裡不再詳述。
nohup npm start &
exit
ok???這樣 就可以隨時隨地的訪問遠端電腦上的服務了。
最後 如果需要資料庫,,還有我們大部分時候肯定不會主機命加埠訪問,,這該怎麼做!!!
歡迎關注下一篇部落格~~~~