做爲一名前端工程師,不只要能寫前端頁面,還要懂前端工程,各類庫,各類框架,各類衍生語言,信手捏來。
若是你想要成爲一名全棧工程師,那麼就必需要學會Node.js,學會線上服務器部署和發佈。javascript
爲了不我的花錢買雲服務器。我試驗的方式是本地Vmware虛擬機(裝ubuntu 16.04)和本地windows平臺(win7)。html
1 Vmware虛擬機裝上ubuntu(教程網上找)
裝好之後,調整下窗口:
前端
2 本地win7裝上xshellvue
固然,你搞Node.js,確定虛擬機上要配置NodeJs環境
虛擬機搜Terminal,打開命令行,依次輸入一下命令。
1 升級一下包java
sudo apt-get update
2 安裝一些必備工具node
sudo apt-get install git vim openssl openssh-server build-essential libssh-dev wget curl
openssh-server是咱們經過ssh鏈接用到。
curl是一個Linux下的傳輸工具
git是安裝咱們的Node.js源碼須要的版本工具git
3 安裝nvmgithub
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
4 安裝nodejsvue-cli
nvm install v8.1.2 nvm use v8.1.2
5 關閉防火牆(由於後面咱們要ssh連到這臺虛擬機,因此防火牆最好是關閉)shell
sudo ufw stop
6 安裝yarn vue-cli pm2
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install yarn npm install vue-cli pm2 -g
yarn是一個包管理工具,至關於npm
vue-cli是一個Vue的命令行工具
pm2是Node服務管理工具
虛擬機上建立一個server.js:
vi server.js
拷貝代碼進去:
而後按下:wq! 保存
最後測試:
pm2 start server.js
若是看到以下狀態,說明啓動成功。
1 修改sshd_config(保證能經過密碼登陸)
vim /etc/ssh/sshd_config
找到:
Authentication:
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes
修改爲:
Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
2 虛擬機啓動ssh
sudo service ssh start
3 查看ip(記住你的IP)
ifconfig
4 打開xshell
輸入ssh ubuntu@192.168.150.129
@前面是用戶名 @後面是IP。 用戶名必須正確,不然會提示服務器拒絕密碼。另外虛擬機的網絡配置是NAT,不須要改成橋接。
正常狀況下能連接成功
我用的是bitbuket,本身先到上面常見一個push2Server的倉庫。
而後本地clone下來
目錄下建立一個server.js,代碼和上面的同樣。還有一個ecosystem.json(這個是pm2自動部署須要的),目錄結構以下:
ecosystem.json這文件的配置很重要。
{ "apps": [ { "name": "Test", "script": "server.js", "env": { "COMMON_VARIABLE": "true" }, "env_production": { "NODE_ENV": "production" } } ], "deploy": { "production": { "user": "ubuntu", //注意點1: user必須是你ubuntu的名字 "host": "192.168.150.129", //注意點2: ip保證正確 "port": "22", //端口保證正確 "ref": "origin/master", "repo": "git@bitbucket.org:YellMan/push2server.git", //注意點3 必須用git@..開頭 不要 用https開頭的 "path": "/home/ubuntu/www/testproject/production",//注意點4 目錄最好是絕對路徑 "ssh_options": "StrictHostKeyChecking=no", "env": { "NODE_ENV": "production" } } } }
直接看注意點3: 由於虛擬機上要clone倉庫代碼,因此虛擬機上須要配置一下,git倉庫的key.
到bitbuket上面的倉庫,添加一個key。
key怎麼生成看教程:https://confluence.atlassian....
$ ssh-keygen $ cat ~/.ssh/id_rsa.pub $ pbcopy < ~/.ssh/id_rsa.pub
最後一步很重要:到虛擬機上運行:
ssh -T git@bitbucket.org
注意點4:由於pm2要在虛擬機上建立這個路徑:/home/ubuntu/www/testproject/production。因此要保證testproject和www路徑必須有權限。/home/ubuntu是個人根路徑,而後建立www目錄,目錄下再建立testproject.
虛擬機上給一下權限:
sudo chmod 777 www sudo chmod 777 testproject
最後,提交代碼到遠程倉庫。
本地運行:
pm2 deploy ecosystem.json production setup
若是出現一下錯誤,重試一下就行了:
若是出現一下錯誤:
在服務端配置一下ssh key到的私有倉庫(看注意點3)
若是出現如下錯誤:
這是由於pm2是全局安裝的,路徑不是在默認路徑下面。因此須要用ls命令link一下.
在虛擬機運行以下命令:
whereis pm2 pm2: /opt/nodejs/bin/pm2 sudo ln -s /opt/nodejs/bin/pm2 /usr/bin/pm2
若是出現一下錯誤:
同理:
ubuntu@ubuntu:~$ whereis node node: /usr/bin/node /home/ubuntu/.nvm/versions/node/v8.1.2/bin/node sudo ln -s /home/ubuntu/.nvm/versions/node/v8.1.2/bin/node /usr/bin/node
pm2 deploy ecosystem.json production
虛擬上看一下是否自動部署成功:
恭喜你,你成功了!
以上就是今天分享的內容,謝謝閱讀,歡迎留言交流。