Meteor 部署到阿里云ubuntu 成功,可訪問案例

使用該方式需要有基本的 Linux 知識
這里介紹的部署方法都是手動(dòng),可以幫助理解 Meteor App 在生產(chǎn)環(huán)境下是如何運(yùn)行的


本次記錄為全新服務(wù)器安裝流程? 教程來原參見 ?部署 Meteor 應(yīng)用到墻內(nèi)服務(wù)器

國內(nèi)Meteor學(xué)習(xí)的資料和使用的人太少了,有興趣添加一起學(xué)習(xí)

服務(wù)器端操作

使用 Ubuntu 14.04 64bit LTS 版本,root 用戶就可以了。新開一臺(tái) VPS 后使用下面的命令更新一下 Ubuntu 的包列表, 這樣 Ubuntu 知道到哪里去下載最新的軟件包。

服務(wù)器工具安裝


通過Xshell遠(yuǎn)程登陸命令行:

1:apt-get update? ? ? ? //升級包列表
2:apt-get install curl? //安裝 curl
3:apt-get install git? ? //安裝 git
4:aapt-get install vim ?//安裝vim編輯器


安裝 Node.js 4

重點(diǎn):安裝node.js 4.x 由于meteor 1.4 不支持4.x以上版本,所以使用4.x版本的node.js
檢查meteor內(nèi)置使用版本,在開發(fā)環(huán)境,即本地電腦使用: meteor node -v 可檢查meteor 使用的版本

4:curl -sL https://deb.nodesource.com/setup_4.x| sudo -E bash - ? //執(zhí)行下面的解決方法后再操作第4步
5:apt-get install -y nodejs


問題來了:這里阿里云使用了自己的源,安裝了幾個(gè)小時(shí)仍然是 100% working...研究了半天,并咨詢官方后,解決方法在這里

我的解決方法如下:


打開服務(wù)器的文件 ?vim /etc/apt/apt.conf
Acquire::http::Proxy "http://mirrors.aliyun.com/"; ?注釋或刪除這句話,記得操作前備份文件


6:檢查node是否安裝成功? 執(zhí)行 node-v 查看到版本號即為成功安裝

安裝 MongoDB

安裝步驟

(注:可以登陸官網(wǎng),按照官網(wǎng)給出的最新方法安裝)?


1、查看當(dāng)前Meteor推薦的mongo版本

meteor運(yùn)行項(xiàng)目后,重新打開控制臺(tái),在項(xiàng)目下運(yùn)行meteor mongo,會(huì)顯示當(dāng)前使用的mongo版本,我這邊現(xiàn)在看到的是3.2版本

2、導(dǎo)入公鑰所使用的包管理系統(tǒng):

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

3、創(chuàng)建list文件

echo"deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse"|sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

4、重新加載本地包數(shù)據(jù)庫

sudo apt-get update

5、安裝MongoDB?

sudo apt-get install -y mongodb-enterprise

6、啟動(dòng)MongoDB

sudo service mongod start

數(shù)據(jù)庫位置在:/var/log/mongodb
日志文件在:/var/lib/mongodb

按照前面步驟完成 MongoDB 安裝后運(yùn)行mongo測試是否安裝成功。如果遇到下面的錯(cuò)誤

Failed global initialization: BadValue Invalidorno user locale set. Please ensure LANGand/orLC_* environment variables are set correctly.

需要設(shè)置如下語言環(huán)境

exportLC_ALL=C

然后再使用下面命令修改 mongod 的配置

nano /etc/mongod.conf

找到 "#replication" 的注釋處,改為如下內(nèi)容

replication:
replSetName:meteor

然后重啟 mongo

service mongod restart

重啟后,運(yùn)行mongo進(jìn)入 mongo shell,在 mongo shell 里鍵入

var config = {_id:"meteor",members[{_id:0,host:"127.0.0.1:27017"}]}

rs.initiate(config)

你應(yīng)該會(huì)看到返回

{"ok":1}

最后,再次重啟mongo

service mongod restart

要確認(rèn) mongo 是否運(yùn)行正常,可以進(jìn)入 mongo shell,然后運(yùn)行rs.status(), 如果正常可以看到類似如下的返回

{
"set" : "meteor",

"date" : ISODate("2017-01-16T15:46:09.314Z"),

"myState" : 1,

"term" : NumberLong(1),

"heartbeatIntervalMillis" : NumberLong(2000),

"members" : [

{

"_id" : 0,

"name" : "127.0.0.1:27017",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"uptime" : 177,

"optime" : {

"ts" : Timestamp(1484581483, 1),

"t" : NumberLong(1)

},

"optimeDate" : ISODate("2017-01-16T15:44:43Z"),

"infoMessage" : "could not find member to sync from",

"electionTime" : Timestamp(1484581482, 2),

"electionDate" : ISODate("2017-01-16T15:44:42Z"),

"configVersion" : 1,

"self" : true

}],

"ok" : 1

}

數(shù)據(jù)庫安裝完成

安裝 pm2

這里沒有什么特別的,就是跟安裝其他 npm 包類似。我沒有使用淘寶的 cnpm,因?yàn)槲野l(fā)現(xiàn)直接使用 npm 也沒有太大問題,就是稍微慢點(diǎn),但是還沒有到不可接受的地步。

npm install pm2 -g
pm2 startup

我后來發(fā)現(xiàn)這也要看機(jī)房,有的機(jī)房會(huì)很慢很慢,甚至安裝不了,比如阿里云最便宜的華北1 機(jī)房。但是青云的華南機(jī)房就沒有問題,原版的 npm 包安裝起來很快。

如果你的 npm 安裝有問題,可以使用cnpm,先安裝淘寶的 cnpm 包

npm install cnpm -g --registry=https://registry.npm.taobao.org

然后通過 cnpm 來安裝 pm2,安裝方式和 npm 幾乎一樣

cnpm install pm2 -g
pm2 startup

安裝后的使用方式和通過 npm 安裝的一樣。

代碼文件夾

創(chuàng)建存放 Meteor build 打包成 Node.js app 后的源代碼文件夾,我們后面會(huì)用到

mkdir /home/meteor
mkdir /home/meteor/build

到現(xiàn)在服務(wù)器端配置完畢

本地打包 Meteor App

假設(shè)你的 Meteor 源代碼在你的本地開發(fā)電腦上一個(gè)叫 meteor-build-test 的文件夾里,我們在它的同級目錄建立一個(gè)叫 build 的文件夾。然后運(yùn)行

cd meteor-build-test
meteor build --architecture=os.linux.x86_64 ../build

上傳文件到服務(wù)器創(chuàng)建的meteor文件夾build

通過命令行直接上傳:meteor-build-test.tar.gzroot@your.server.ip.address:/home/meteor/build
也可以通過工具拷貝上傳

上面的命令就是把 Meteor app 打包成普通的 Node.js app,然后上傳到我們之前在服務(wù)器上創(chuàng)建的文件夾里。

運(yùn)行

在服務(wù)器上進(jìn)入 /home/meteor/build,然后運(yùn)行

tar zxvf meteor-build-test.tar.gz

解壓完成后,運(yùn)行

cd bundle/programs/server && npm install

或者使用 cnpm,如果連接 npm 源有問題

cd bundle/programs/server && cnpm install

安裝打包完成后的 Node app 使用到的 npm 包。安裝完成后回到 bundle 目錄,運(yùn)行

nano pm2.json

再把

{

"apps":[{

"name":"mozibrand",

"cwd":"/home/meteor/build/bundle",

"script":"main.js",

"env":{

"NODE_ENV":"production",

"WORKER_ID":"0",

"PORT":"3000",

"ROOT_URL":"http://www.mozibrand.com",

"MONGO_URL":"mongodb://localhost:27017/meteor",

"MONGO_OPLOG_URL":"mongodb://localhost:27017/local",

"HTTP_FORWARDED_COUNT":"1",

"METEOR_SETTINGS":{}

}
}]
}

pm2 start pm2.json

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

最后運(yùn)行pm2 start pm2.json命令, 你的 meteor 就運(yùn)行在你的服務(wù)器上了。最后使
http://your.server.ip.address:3000訪問你的網(wǎng)站。當(dāng)然你也可以使用其 port,例如 80 端口。

使用80端口訪問

來源文章

端口映射的規(guī)則也只需輸入如下命令即可:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

MongoDB 3.2+ 安全授權(quán)登錄訪問控制

來源文章

1、添加授權(quán)用戶

use admin
db.createUser({user:"mongoadmin", pwd:"mongoadmin", roles: ["userAdminAnyDatabase","dbAdminAnyDatabase","readWriteAnyDatabase"]});

此時(shí)如果提示,如下所示代碼:

E QUERY? ? [thread1] Error: couldn't add user: No role named userAminAnyDatabase@admin :

執(zhí)行 db.auth 獲得數(shù)據(jù)庫操作權(quán)限

db.auth

再執(zhí)行 步驟1,添加授權(quán)用戶操作即可

2、啟動(dòng)授權(quán)登錄

vim /etc/mongo.conf

在配置文件中增加

security:
? ?authorization:"enabled"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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