Server: Ubuntu 14.04
Client: Windows 10
nodejs: v8.1.0
mongodb: v3.4.4
一、使用SSH連接服務器
- 找到您所下載的私鑰文件目錄街佑,如:/root/xxx.pem泛领。xxx.pem 即為您的私鑰文件,下同械拍。
- 使用以下命令修改私鑰文件的屬性:
chmod 400 xxx.pem
揣苏。 - 使用 SSH 命令連接至實例(假設實例的公網(wǎng) IP 地址為 10.10.10.100):
ssh root@10.10.10.100 –i /root/xxx.pem
幔摸。 - 設置命令別名胡陪,查找并打開bash.bashrc,添加
alias ssh_root="ssh root@10.10.10.100 –i /root/xxx.pem"
PS:
二碍舍、安裝Nodejs環(huán)境
- 安裝工具:
sudo apt-get install vim openssl build-essential libssl-dev wget curl git
- 安裝npm版本管理工具nvm:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh| bash
- 安裝指定版本的npm:
nvm install v版本號柠座, nvm use v版本號(指定版本),nvm alias default v版本號(指定default為指定版本)
- 設置npm為淘寶npm鏡像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
- 安裝npm全局工具:
cnpm i pm2 webpack gulp grunt-cli nodemon http-server -g
三片橡、安裝mongodb數(shù)據(jù)庫
- Import the public key used by the package management system.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
- Create a list file for MongoDB(Ubuntu 14.04)
echo "deb [ arch=amd64 ] [http://repo.mongodb.org/apt/ubuntu](http://repo.mongodb.org/apt/ubuntu) trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
- Reload local package database
sudo apt-get update
- Install the MongoDB packages.
sudo apt-get install -y mongodb-org
- 設置mongodb配置:
使用vi /etc/mongod.conf
打開mongodb配置文件妈经,修改接口設置port的值,需要使用遠程連接訪問捧书,設置bind_ip為0.0.0.0 - 設置防火墻
ufw enable
ufw allow 22
開放需要使用的端口(ssh連接的22吹泡,遠程訪問數(shù)據(jù)庫的端口、將要使用的項目端口)经瓷,ufw命令列表:
ufw enable/disable:打開/關(guān)閉ufw
ufw status:查看已經(jīng)定義的ufw規(guī)則
ufw default allow/deny:外來訪問默認允許/拒絕
ufw allow/deny 20:允許/拒絕 訪問20端口,20后可跟/tcp或/udp爆哑,表示tcp或udp封包。
ufw allow/deny servicename:ufw從/etc/services中找到對應service的端口舆吮,進行過濾揭朝。
ufw allow proto tcp from 10.0.1.0/10 to 本機ip port 25:允許自10.0.1.0/10的tcp封包訪問本機的25端口。
ufw delete allow/deny 20:刪除以前定義的"允許/拒絕訪問20端口"的規(guī)則
- mongodb服務
service mongod stop // 停止服務
service mongod start // 啟動服務
service mongod restart // 重啟服務
- 設置mongodb自動備份
新建目錄tasks保存任務色冀,backup保存?zhèn)浞輸?shù)據(jù)
編寫sh命令:
\#!/bin/sh
backUpFolder=/root/backup/educ
date_now=\`date +%Y_%m_%d_%H%M\`
backFileName=educ_$date_now
cd $backUpFolder
mkdir -p $backFileName
mongodump -h 127.0.0.1:27017 -d educ -u educ_backup -p educ*wheel -o $backFileName
tar zcvf $backFileName.tar.gz $backFileName
rm -rf $backFileName
定時執(zhí)行命令:
crontab -e
第一次進入選擇2
00 00 * * * sh /root/tasks/db_backup.sh
設置0點執(zhí)行命令潭袱,ctrl+x,shfit+Y,回車退出
- mongodb備份下載及恢復數(shù)據(jù)
使用scp -i D:/key/Ubuntu.pem root@116.62.27.227:/root/backup/educ/educ_2017_06_21_0000.tar.gz ./
命令,將備份數(shù)據(jù)拉取到本地
使用mongorestore -h [服務器地址] -d [數(shù)據(jù)庫實例] --dir [備份目錄] --drop
命令锋恬,恢復數(shù)據(jù)屯换,--drop
恢復的時候,先刪除當前數(shù)據(jù)与学,然后恢復備份的數(shù)據(jù)彤悔。就是說,恢復后癣防,備份后添加修改的數(shù)據(jù)都會被刪除蜗巧,慎用!
PS:
- Install MongoDB Community Edition on Ubuntu
- Ubuntu 防火墻與端口控制
- Ubuntu默認防火墻安裝蕾盯、啟用幕屹、配置蓝丙、端口、查看狀態(tài)相關(guān)信息
- MongoDB導入導出以及數(shù)據(jù)庫備份
四望拖、使用pm2部署項目
- 將項目上傳至git
- 添加公鑰公鑰
在服務器中使用ssh-keygen -t rsa -b 4096 -C "10261"
命令渺尘,生成密鑰,并將公鑰加入git項目中(不要使用密碼)说敏。 - 在項目中添加ecosystem.json文件
{
// Applications part
"apps" : [{
"name" : "educ-admin", // apps名稱
"script" : "server.sh", // 項目入口文件
"env": {
"COMMON_VARIABLE": "true"
},
// Environment variables injected when starting with --env production
// http://pm2.keymetrics.io/docs/usage/application-declaration/#switching-to-different-environments
"env_production" : {
"NODE_ENV": "production"
}
}],
// Deployment part
// Here you describe each environment
"deploy" : {
"production" : {
"user" : "root", // 連接服務器的用戶
"key" : "D:/key/Ubuntu.pem", // 連接服務器的私鑰位置
// Multi host is possible, just by passing IPs/hostname as an array
"host" : ["116.62.27.227"], // 服務器地址
// Branch
"ref" : "origin/master", // 使用的項目分支
// Git repository to clone
"repo" : "git@git.oschina.net:chenzhangxiang/educ-admin.git", // 項目的git地址(SSH)
// Path of the application on target servers
"path" : "/www/educ-admin", // 服務器上項目所在文件夾
// Can be used to give options in the format used in the configura-
// tion file. This is useful for specifying options for which there
// is no separate command-line flag, see 'man ssh'
// can be either a single string or an array of strings
"ssh_options": "StrictHostKeyChecking=no",
// "post-deploy" : "cnpm install && pm2 startOrRestart ecosystem.json --env production",
"post-deploy" : "cnpm install && npm run build && pm2 startOrRestart ecosystem.json --env production", // 執(zhí)行命令
// Environment variables that must be injected in all applications on this env
"env" : {
"NODE_ENV": "production"
}
}
}
}
第一次運行pm2 deploy ecosystem.json production setup
鸥跟,拷貝項目成功后再運行pm2 deploy ecosystem.json production
。
如果出現(xiàn)pm2: command not found錯誤盔沫,則將.bashrc文件下的If not running interactively, don't do anything
注釋下的語句注釋掉医咨。
如果需要修改項目入口文件,則需要在服務器上先刪除該進程架诞,使用pm2 delete [name]
拟淮。
如果是node項目,那可以直接將node項目的入口文件設置為入口文件谴忧。我的項目中有一個是vue項目生產(chǎn)的靜態(tài)文件很泊,部署這個項目我使用http-server,將命令寫在.sh文件中沾谓,然后將.sh作為入口文件委造。
#!/bin/sh
# server.sh
# ./dist是靜態(tài)文件所在目錄,8000是指定的端口
http-server -p 8000 ./dist
PS: