[Node.js] Node.js Openshift Deployment 筆記
執行 Node.js
Openshift 只做兩件事情,就是 npm install --production
和 npm start
。
所以有用到 babel 等工具的話,可能要先 build 好再上傳了。
(把build指令塞在 npm start
應該也是可行的,沒試過)
查看 error log
檔案分別在 app-root/logs/nodejs.log
和 app-root/logs/mongodb.log
環境參數
Node.js
- IP:
process.env.OPENSHIFT_NODEJS_IP
- PORT:
process.env.OPENSHIFT_NODEJS_PORT
MongoDB
- HOST:
process.env.OPENSHIFT_MONGODB_DB_HOST
- PORT:
process.env.OPENSHIFT_MONGODB_DB_PORT
設定 Node.js Server
一般很多人在啟動 server 時,習慣只有給 port,像這樣
app.listen(PORT, () => {
console.log(`Listening on port ${PORT}`);
});
但 Openshift 不填入 IP 會報錯,所以要變這樣:
app.listen(PORT, IP, () => {
console.log(`Listening on port ${PORT}`);
});
連線 MongoDB
帳號、密碼、IP、PORT 跟資料庫名稱都要一起放入,所以就是這樣:
mongodb://admin:ZlM5DLCRt-htJ@${process.env.OPENSHIFT_MONGODB_DB_HOST}:${process.env.OPENSHIFT_MONGODB_DB_PORT}/app-name
config.js
我的 config.js
長這樣:
const config = {
DATABASE_URL: `mongodb://admin:ZlM5DLCRt-htJ@${process.env.OPENSHIFT_MONGODB_DB_HOST}:${process.env.OPENSHIFT_MONGODB_DB_PORT}/app-name` || `mongodb://localhost/app-name`,
IP: process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1',
PORT: process.env.OPENSHIFT_NODEJS_PORT || 3000,
ENVIRONMENT: process.env.NODE_ENV || 'development',
};