Ubuntu搭建nodejs+mongodb服務器

Server: Ubuntu 14.04
Client: Windows 10
nodejs: v8.1.0
mongodb: v3.4.4

一、使用SSH連接服務器

  1. 找到您所下載的私鑰文件目錄街佑,如:/root/xxx.pem泛领。xxx.pem 即為您的私鑰文件,下同械拍。
  2. 使用以下命令修改私鑰文件的屬性:chmod 400 xxx.pem揣苏。
  3. 使用 SSH 命令連接至實例(假設實例的公網(wǎng) IP 地址為 10.10.10.100):ssh root@10.10.10.100 –i /root/xxx.pem幔摸。
  4. 設置命令別名胡陪,查找并打開bash.bashrc,添加alias ssh_root="ssh root@10.10.10.100 –i /root/xxx.pem"

PS:

二碍舍、安裝Nodejs環(huán)境

  1. 安裝工具:
    sudo apt-get install vim openssl build-essential libssl-dev wget curl git
  2. 安裝npm版本管理工具nvm:
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh| bash
  3. 安裝指定版本的npm:
    nvm install v版本號柠座, nvm use v版本號(指定版本),nvm alias default v版本號(指定default為指定版本)
  4. 設置npm為淘寶npm鏡像:
    npm install -g cnpm --registry=https://registry.npm.taobao.org
  5. 安裝npm全局工具:
    cnpm i pm2 webpack gulp grunt-cli nodemon http-server -g

三片橡、安裝mongodb數(shù)據(jù)庫

  1. Import the public key used by the package management system.
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
  2. 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
  3. Reload local package database
    sudo apt-get update
  4. Install the MongoDB packages.
    sudo apt-get install -y mongodb-org
  5. 設置mongodb配置:
    使用vi /etc/mongod.conf打開mongodb配置文件妈经,修改接口設置port的值,需要使用遠程連接訪問捧书,設置bind_ip為0.0.0.0
  6. 設置防火墻
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ī)則
  1. mongodb服務
service mongod stop // 停止服務
service mongod start // 啟動服務
service mongod restart // 重啟服務
  1. 設置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,回車退出

  1. 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:

四望拖、使用pm2部署項目

  1. 將項目上傳至git
  2. 添加公鑰公鑰
    在服務器中使用ssh-keygen -t rsa -b 4096 -C "10261"命令渺尘,生成密鑰,并將公鑰加入git項目中(不要使用密碼)说敏。
  3. 在項目中添加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:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末均驶,一起剝皮案震驚了整個濱河市昏兆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妇穴,老刑警劉巖亮垫,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驯杜,死亡現(xiàn)場離奇詭異琅攘,居然都是意外死亡,警方通過查閱死者的電腦和手機坚嗜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門携狭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來继蜡,“玉大人,你說我怎么就攤上這事逛腿∠〔ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵单默,是天一觀的道長碘举。 經(jīng)常有香客問我,道長搁廓,這世上最難降的妖魔是什么引颈? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任耕皮,我火速辦了婚禮,結(jié)果婚禮上蝙场,老公的妹妹穿的比我還像新娘凌停。我一直安慰自己,他們只是感情好售滤,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布罚拟。 她就那樣靜靜地躺著,像睡著了一般完箩。 火紅的嫁衣襯著肌膚如雪赐俗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天弊知,我揣著相機與錄音秃励,去河邊找鬼。 笑死吉捶,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的皆尔。 我是一名探鬼主播呐舔,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼慷蠕!你這毒婦竟也來了珊拼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤流炕,失蹤者是張志新(化名)和其女友劉穎澎现,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體每辟,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡剑辫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了渠欺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妹蔽。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖挠将,靈堂內(nèi)的尸體忽然破棺而出胳岂,到底是詐尸還是另有隱情,我是刑警寧澤舔稀,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布乳丰,位于F島的核電站,受9級特大地震影響内贮,放射性物質(zhì)發(fā)生泄漏产园。R本人自食惡果不足惜汞斧,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望淆两。 院中可真熱鬧断箫,春花似錦、人聲如沸秋冰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剑勾。三九已至埃撵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虽另,已是汗流浹背暂刘。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捂刺,地道東北人谣拣。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像族展,于是被迫代替她去往敵國和親森缠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容