部署 meteor 到 Google Compute Engine

weixin_34214500發表於2018-04-23

我使用的是 Ubuntu 16.04 版本。

  1. 建議先建立一個新的 project,這樣更容易和別人共享你的 Computer Engine,特別是需要和別人合作的時候。

  2. 建立後新建一個賬號,這樣可以可合作者分工協作。

sudo adduser share
   ... ... 根據提示填寫密碼等
sudo usermod -aG sudo share //把 share 賬號新增到 sudo 組

最後切換使用者

su - share
  1. 安裝 node.js
    先安裝 nvm,這樣容易管理 node 的版本。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.9/install.sh | bash

安裝後得退出 ssh console, 再次進入後 nvm 才會生效。
安裝 node 8.9.4 版本。最新的 8.11.1 在 meteor 裡會有 segment fault 的問題。

nvm install 8.9.4

4.安裝 pm2 管理 node 程式

npm install pm2 -g
pm2 startup systemd
  1. 安裝 MongoDB,使用本地資料庫
    詳情見這裡 英文安裝步驟
    安裝完成後,使用如下步驟確認下安裝是否成功。
    先使用下面命令修改 mongod 的配置
sudo nano /etc/mongod.conf

找到 "#replication" 的註釋處,改為如下內容

replication:
  replSetName: meteor

然後重啟 mongo

sudo service mongod restart

重啟後,執行 mongo 進入 mongo shell,在 mongo shell 裡鍵入

var config = {_id: "meteor", members: [{_id: 0, host: "127.0.0.1:27017"}]}
rs.initiate(config)

你應該會看到返回

{"ok":1}

最後,再次重啟mongo

sudo service mongod restart

要確認 mongo 是否執行正常,可以進入 mongo shell,然後執行 rs.status() , 如果正常可以看到類似如下的返回

{
 "set" : "meteor",
 "date" : ISODate("2016-08-22T10:54:53.367Z"),
 "myState" : 1,
 "term" : NumberLong(2),
 "heartbeatIntervalMillis" : NumberLong(2000),
 "members" : [
  {
   "_id" : 0,
   "name" : "127.0.0.1:27017",
   "health" : 1,
   "state" : 1,
   "stateStr" : "PRIMARY",
   "uptime" : 12576,
   "optime" : {
    "ts" : Timestamp(1471850718, 1),
    "t" : NumberLong(2)
   },
   "optimeDate" : ISODate("2016-08-22T07:25:18Z"),
   "electionTime" : Timestamp(1471850717, 1),
   "electionDate" : ISODate("2016-08-22T07:25:17Z"),
   "configVersion" : 1,
   "self" : true
  }
 ],
 "ok" : 1
}
  1. 從 git repo clone 程式碼到 GCP 伺服器

  2. build meteor app
    先安裝 meteor

curl https://install.meteor.com/ | sh

然後在 meteor 程式碼資料夾下執行

meteor npm i //安裝所需的 npm 包
meteor build --architecture=os.linux.x86_64 ../build  //打包程式碼.這個可能會要10來分鐘
tar xvf meteor-build-test.tar.gz //到 build 目錄解壓
cd bundle/programs/server && npm install // 解壓後安裝 npm 包

最後在 bundle 目錄新增 pm2 的配置

nano pm2.json
{
  "apps": [{
    "name": "appName",
    "cwd": "/home/meteor/build/bundle",
    "script": "main.js",
    "env": {
      "NODE_ENV": "production",
      "WORKER_ID": "0",
      "PORT": "3000",
      "ROOT_URL": "http://your.server.ip.address",
      "MONGO_URL": "mongodb://localhost:27017/meteor",
      "MONGO_OPLOG_URL": "mongodb://localhost:27017/local",
      "HTTP_FORWARDED_COUNT": "1",
      "METEOR_SETTINGS": {}
    }
  }]
}

拷貝過去,記得把 ROOT_URL 改為你用的地址。

最後執行 pm2 start pm2.json 命令, 你的 meteor 就執行在你的伺服器上了。當然你也可以使用其 port,例如 80 埠。

相關文章