Node.JS Website Deployment

2,411 views

Published on

用 git 做 Node.JS 網站佈署

Published in: Self Improvement
0 Comments
20 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,411
On SlideShare
0
From Embeds
0
Number of Embeds
39
Actions
Shares
0
Downloads
38
Comments
0
Likes
20
Embeds 0
No embeds

No notes for slide

Node.JS Website Deployment

  1. 1. Node.JS Website Deployment pH200 Software Developer @ Cytisan Software
  2. 2. 今天我們可以學到• 如何把做好的node.js website放到自己的server上跑• 而且是用git deploy
  3. 3. me• 第一台筆電是iBook G4• 雖輾轉學過各種語言但樣樣不精,最後覺得C#還不賴, 一年前開始研究JS• 開了間小公司弄些Windows的App• 把公司網站擺在Heroku (node)的免費quota下白吃白喝• 因為用node擺網站也就順理成章開始學習node環境
  4. 4. Cloud Computing
  5. 5. PaaS• 這些服務很好• 但不是今天的重點
  6. 6. IaaS, VPS, etc.
  7. 7. Deploy node.js app 到自己的機器• 今天的重點
  8. 8. 啊不是複製貼上就好了嗎?
  9. 9. 啊不是複製貼上就好了嗎?• 其實我覺得也可以• 整合 version control (push deploy, rollback)• Start, stop and monitor• 自動化
  10. 10. Let’s 複製貼上• rsync• rsync -arzve ssh username@host:path source• 更新:ssh進去,stop,start node• 當然可以寫成shell script• 人有失手馬有亂蹄
  11. 11. Forever• https://github.com/nodejitsu/forever• Nodejitsu出品• 已經有hosting platform實際使用• npm install -g forever• 讓你的node application永不停止• 記住你的env variables
  12. 12. Git Deployment• 手動Heroku式Deploy• 設定有點煩,但一勞永逸1. ssh進server2. git init --bare3. vim hooks/post-receive4. chmod +x hooks/post-receive
  13. 13. post-receive example#!/bin/bashAPP=~/repos/app/app.jsexport GIT_WORK_TREE=~/repos/appgit checkout -fpushd $GIT_WORK_TREEnpm installforever restart $APPpopd
  14. 14. Step by Step• 範例前置設定: • Local Repository名稱為nodeweb • Remote IP為5.5.6.6 • Remote User為webadmin • 把Remote Repository放在/home/webadmin/nodeweb.git • Remote端已安裝forever (npm install -g forever)
  15. 15. 設定Git1. 在local端做好git repository (git init)2. ssh webadmin@5.5.6.63. git init --bare nodeweb.git (註:新增在/home/webadmin/nodeweb.git)4. cd nodeweb.git/hooks5. vim post-receive
  16. 16. 設定Git(post-receive內容)6. #!/bin/bash APP=~/nodeweb/app.js export GIT_WORK_TREE=~/nodeweb git checkout -f pushd $GIT_WORK_TREE npm install --production forever restart $APP popd
  17. 17. 設定Git(遠端)7. chmod +x post-receive8. mkdir ~/nodeweb9. 遠端設定完成,回到本機
  18. 18. 設定Git(在自己的工作用git repository)1. git remote add cloud-deploy webadmin@5.5.6.6:/home/webadmin/nodeweb.git2. 設定完成
  19. 19. Git Deploy(第一次)1. git push cloud-deploy master2. ssh webadmin@5.5.6.6 "forever start ~/nodeweb/app.js"3. 網站上線
  20. 20. Git Deploy(之後每一次)1. git push cloud-deploy master2. 網站會自動restart update
  21. 21. How about Windows?
  22. 22. Windows (正經)• IIS• iisnode (強力推薦) https://github.com/tjanczuk/iisnode• Windows Azure• AppHarbor• Hyper-V + Linux (CentOS, Ubuntu >=12)
  23. 23. Uptime 監控• https://github.com/fzaninotto/uptime
  24. 24. 延伸閱讀• 管理你的process http://upstart.ubuntu.com/• 網路上的文章談git deploy http://sebduggan.com/blog/deploy-your-website-changes-using-git/• Nodejistu Blog介紹Forever http://blog.nodejitsu.com/keep-a-nodejs-server-up-with-forever• 設定ssh key login http://www.linuxproblem.org/art_9.html• 設定git server http://git-scm.com/book/en/Git-on-the-Server-Setting-Up-the-Server
  25. 25. Questions?twitter: pH_minamo (可叫我200 or pH)Node.js 台灣 Facebook Group:http://www.facebook.com/groups/node.js.tw/

×