1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| # 先更新 index 和 ports cd /usr/ports && make fetchindex cvsup -L 2 -h cvsup.tw.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
# 通過 ports 安裝 node cd /usr/ports/www/node make install clean
# 通過 ports 安裝 mongodb (需等待) cd /usr/ports/databases/mongodb make install clean
(選擇 V8 引擎取代 SpiderMonkey) (之後的用預設) (之後再用預設)
# 將安裝 mongodb 時新增的 mongodb 用戶 shell 改為 nologin chsh -s /usr/sbin/nologin mongodb
# 通過 ports 安裝 supervisor # Python 寫的,用來管理 node app cd /usr/ports/sysutils/py-supervisor make install clean
# 重新進入 root 環境,使上面安裝的指令可作用 su -
# 接下來,設定 supervisor # 編輯 supervisord.conf # ports 預設位置是這裡. # 可複製到 /etc/supervisord.conf vim /usr/local/etc/supervisord.conf
# 裡面的內容如下 # ================ [unix_http_server] file=/var/run/supervisor/supervisor.sock chmod=0700 chown=www:www
[supervisord] user=root
;最後在最下面加入 (前面加 ; 代表註解) [program:node_app] command=/usr/local/bin/node /home/[用戶]/node-app.example.com/app.js directory=/home/[用戶]/node-app.example.com autostart=true startsecs=5 user=[執行者] ;redirect_stderr=true ;stdout_logfile = /var/log/supervisord/node_note.log # ================
# 將 sock 存放目錄設為 www 用戶和用戶組才可讀取 chown -Rf www:www /var/run/supervisor
# 之後修改 nginx 加入 proxy 轉向到內部端口 server { listen 80; charset utf-8; server_name node-app.example.com; root /home/[用戶]/node-app.example.com;
location / { proxy_pass http://127.0.0.1:[端口]/; } }
# 運行 MongoDB mongod --dbpath /var/db/mongodb/ --logpath /var/log/mongodb.log --fork
# 進入命令窗口,測試操作資料庫(或者加權限) mongo 127.0.0.1:27017
# 簡單記錄一下權限設置, # 重新運行 MongoDB 後,再用 admin 時就需要權限了 use admin db.auth("username", "password") exit
killall mongod mongod --dbpath /var/db/mongodb/ --logpath /var/log/mongodb.log --fork --auth
# 為確保開發環境和上線環境內的依賴套件一致使用如下指令 # 更新自機中的 NPM 確保可使用 npm shrinkwrap 指令 (>= 1.1.2) # 生成 npm-shrinkwrap.json npm update npm -g npm shrinkwrap
# 再到主機中更新 npm # 再安裝 app (應用) 的依賴套件 npm update npm -g npm install
# 之後兩邊再比對一下 npm list 是否一樣 npm list
# 最後通過 supervisor 執行 node app 應用 # 使 node app 應用打開 127.0.0.1:[端口] 的端口 supervisord -c /usr/local/etc/supervisord.conf supervisorctl start node_app
# 當 supervisord 運行後,以後就可經 supervisorctl 操作 supervisorctl stop [node_app],停止某個 supervisord.conf 中的 [program:(應用)] supervisorctl start node_app,運行某個應用 supervisorctl restart programxxx,重新運行某個應用 supervisorctl stop all,停止重部應用 supervisorctl reload,重新載入最新的配置文件,並按照配置文件執行每個應用
*** 註 *** 當修改 supervisord.conf 後,需使用 reload 重新加載,start,stop,restart都不會加新文件
# 最後將 supervisor 和 mongod 都放到 /etc/rc.local # =========== # Supervisord (因不是預設的檔案位置,所以不用前者) #supervisord_enable="YES" supervisord -c /usr/local/etc/supervisord.conf
# MongoDB mongod --dbpath /var/db/mongodb/ --logpath /var/log/mongodb.log --fork --auth
|