註冊 AWS 服務

由於許多初學者對雲託管感到困惑。我正在編寫本指南,以便使用 ubuntu os 在 aws 上設定 meteor。如果你已經執行了例項,請隨意跳過此步驟並直接在 aws 上安裝 meteor。

登入 AWS Console。選擇 EC2。轉到 EC2 儀表板。在 Create Instance 下單擊啟動例項。 StackOverflow 文件

在下一步中選擇 ubuntu 例項 StackOverflow 文件

建立金鑰對並將私鑰下載到本地計算機。

通過 shell 登入到 aws(使用私鑰,確保私鑰在你的路徑中或從包含私鑰的目錄執行命令)

ssh -i "myprivatekey.pem" ubuntu@ec2-xx-xx-xx-xx.ap-south-1.compute.amazonaws.com

ec2-xx-xx-xx-xx.ap-south-1.compute.amazonaws.com 是亞馬遜控制檯上的公共 DNS 例項名稱。ubuntu 是使用者名稱。你也可以使用公共 IP 地址。

在 AWS 例項上安裝 METEOR 的步驟(使用 mupx)

  1. 將私鑰從本地計算機複製到 aws 伺服器 ssh 資料夾

例子/home/ubuntu/.ssh/myprivatekey.pem

  1. 將打包程式更新到最新版本
sudo apt-get update
  1. 安裝 python 軟體屬性
 sudo apt-get install python-software-properties
  1. 安裝 npm 和 node(也可以安裝 nvm)
sudo apt-get install npm

安裝 nvm

curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash

安裝節點

nvm install 4.4.7

nvm use 4.4.7
  1. 安裝 aws cli
sudo apt-get install awscli
  1. 安裝流星
 sudo npm install -g mupx
 
 sudo npm install -g mupx-letsencrypt  

(meteor 1.4 目前僅由 mpux-letsencrypt 提供)

  1. 通過進入專案目錄初始化 mupx 或建立新目錄(如果不存在)
mupx-letsencrypt init

如果你收到如下錯誤,那麼你可能需要建立連結

/usr/bin/env: node: No such file or directory

sudo ln -s /usr/bin/nodejs /usr/bin/node
  1. 安裝流星
curl https://install.meteor.com | /bin/sh
  1. 編輯 mup.json(確保填寫使用者名稱:ubuntu 並從步驟 1 中更正私鑰的位置)

    使用 nano 檔案編輯器(在 ubuntu 上編輯檔案,也可以使用 vi)

 nano mup.json   

示例 mup.json

    {
  // Server authentication info
  "servers": [
    {
      "host": "ec2-xx-xx-xx-xx.ap-south-1.compute.amazonaws.com",
      "username": "ubuntu",
      //"password": "password",
      // or pem file (ssh based authentication)
      "pem": "~/.ssh/myprivatekey.pem",
      // Also, for non-standard ssh port use this
      //"sshOptions": { "port" : 49154 },
      // server specific environment variables
      "env": {}
    }
  ],

  // Install MongoDB on the server. Does not destroy the local MongoDB on future setups
  "setupMongo": true,

  // WARNING: Node.js is required! Only skip if you already have Node.js installed on server.
  "setupNode": false,

  // WARNING: nodeVersion defaults to 0.10.36 if omitted. Do not use v, just the version number.
  //"nodeVersion": "4.4.7",

  // Install PhantomJS on the server
  "setupPhantom": true,

  // Show a progress bar during the upload of the bundle to the server.
  // Might cause an error in some rare cases if set to true, for instance in Shippable CI
  "enableUploadProgressBar": true,

  // Application name (no spaces).
  "appName": "my-app",

  // Location of app (local directory). This can reference '~' as the users home directory.
  // i.e., "app": "/Users/ubuntu/my-app",
  // This is the same as the line below.
  "app": "/Users/ubuntu/my-app",

  // Configure environment
  // ROOT_URL must be set to https://YOURDOMAIN.com when using the spiderable package & force SSL
  // your NGINX proxy or Cloudflare. When using just Meteor on SSL without spiderable this is not necessary
  "env": {
    "PORT": 80,
    "ROOT_URL": "http://myapp.com",
     // only needed if mongodb is on separate server
    "MONGO_URL": "mongodb://url:port/MyApp",
    "MAIL_URL":   "smtp://postmaster%40myapp.mailgun.org:adj87sjhd7s@smtp.mailgun.org:587/"
  },

  // Meteor Up checks if the app comes online just after the deployment.
  // Before mup checks that, it will wait for the number of seconds configured below.
  "deployCheckWaitTime": 60
}
  1. 設定 Meteor,包括在專案目錄中執行以下命令的 mongo。

    mupx-letsencrypt setup
    
  2. 使用 mupx 部署專案

    mupx-letsencrypt deploy
    

一些有用的命令

檢查 mupx 日誌

mupx logs -f

檢查 Docker

 docker -D info

檢查網路狀態

netstat -a

檢查當前執行的程序,包括 cpu 和記憶體利用率

 top

安裝 mongo 客戶端以獲取 aws 上的 mongo shell acccess

sudo apt-get install mongodb-clients

執行 mongodb 查詢

mongo projectName

一旦裡面的 mongo shell 執行

 db.version()
 db.users.find()

感謝 arunoda 提供精彩的工具 https://github.com/arunoda/meteor-up

感謝 mupx-letsencrypt 團隊的出色工作。 https://www.npmjs.com/package/mupx-letsencrypt