如何在Linux生产环境中部署Meteor应用程序?

我有简单的meteorjs应用程序,我想部署在自己的server.How我可以做到这一点。 我尝试使用https://github.com/arunoda/meteor-up-legacy ,但我得到一些错误如下:

npm ERR! Linux 4.4.0-96-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "mup" npm ERR! node v4.2.6 npm ERR! npm v3.5.2 npm ERR! file sh npm ERR! code ELIFECYCLE npm ERR! errno ENOENT npm ERR! syscall spawn npm ERR! mup@1.3.3 postinstall: `opencollective postinstall` npm ERR! spawn ENOENT npm ERR! npm ERR! Failed at the mup@1.3.3 postinstall script 'opencollective postinstall'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the mup package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! opencollective postinstall npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs mup npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls mup npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /home/ambu/mymeteorprojects/dummy/npm-debug.log npm ERR! code 1 

由于我是新手,对这些错误的含义并不了解。

在开始使用可以为你做所有事情的mup之前,最好先了解一下通常如何将应用程序部署到生产环境。

赤脚走过如下:

让我们假设你的应用程序叫做todos ,它存在于/home/meteor-doge/todos

进入该目录:

cd /home/meteor-doge/todos/

构build可部署的应用程序:

meteor build ../ --directory

在父目录中,您现在将find一个捆绑目录:

cd ../ ls -ltr --> bundle

npm安装如果适用:

cd bundle/program/server && npm install

将软件包目录复制到生产主机。

cp -R bundle /where/ever/necessary/

在生产主机中,设置所需的环境variables:

export MONGO_URL=mongodb://hostIP:port/dbName export ROOT_URL=https://localhost export PORT=3000

启动应用程序:

/usr/bin/node /home/prod-server/path/to/bundle/main.js

如果一切顺利,您的应用程序将在您的生产服务器上运行,并可通过以下方式访问: http://<prod-ip>:3000

您需要有可用的下面的东西来安装Meteor应用程序在远程服务器上,而不使用mup软件包。

  1. NODE JS 4.8.4安装。

  2. MONGO DB 3.2/3.4安装。

  3. NGINX/APACHE安装并运行。

  4. PM2安装。

我正在使用CentOS 7安装Meteor 1.5.0

步骤1:

要创build特定于生产的可展开tarball,请运行以下命令。

 meteor build --server-only . 

注意 :这将在您的项目文件夹中创build一个project_name.tar.gz文件。 这是一个tar文件,它被构build,缩小,压缩以供生产使用,读代码也不方便用户,所以不容易破解meteor代码。

第2步:

您需要安装特定版本的节点js,这与您的meteor版本兼容[在我的情况下,meteor1.5与节点4.8.4]

要知道安装节点js的过程,请点击这里

第3步:

你现在需要服务器上的mongo db,

  1. 运行命令sudo vi /etc/yum.repos.d/mongodb-org.repo

粘贴到该文件

 [mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc 

按照如下顺序运行命令;

  1. yum repolist

  2. sudo yum install mongodb-org

  3. service mongod start / service mongod stop

  4. mongo

确保你创build了database_nameuserpassword

现在使用下面的命令为shell导出variables。

  1. export MONGO_URL="mongodb://username:password@127.0.0.1:27017/domain_name"
  2. export ROOT_URL="http://localhost/"
  3. export PORT=3000

步骤4:

现在,由于安装了Node和npm,您可以使用命令npm install pm2 -g轻松安装pm2

第5步:

project_name.tar.gz复制到您的服务器位置,运行命令tar -xzf project_name.tar.gz

一个bundle目录是为你创build的。 去bundle/programs/server并执行命令npm install --production 。 回到bundle/目录,使用命令pm2 start -name "UID" main.js运行pm2 start -name "UID" main.js 。 这会告诉你下面的东西。

 [root@server ~]# cd /home/xyz/public_html/bundle/ [root@server bundle]# pm2 start --name "UID" main.js [PM2] Starting /home/xyz/public_html/bundle/main.js in fork_mode (1 instance) [PM2] Done. ┌──────┬──────┬────────┬───┬─────┬──────────┐ │ Name │ mode │ status │ ↺ │ cpu │ memory │ ├──────┼──────┼────────┼───┼─────┼──────────┤ │ UID │ fork │ online │ 0 │ 0% │ 4.0 KB │ └──────┴──────┴────────┴───┴─────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app 

您可以使用命令pm2 show 0来确认您的网站是否启动,因为0是进程运行的索引。

你可以随时使用命令pm2 delete 0pm2 delete all的closures站点closurespm2处理的所有进程。

如果你想监视网站的性能,你可以运行命令pm2 monit

注意pm2 start ...命令将只在bundle/文件夹内运行,因为它查找main.js文件。

而已!!! 应用程序在https://<hostip or name>:3000我努力实现了上述所有function,并使网站能够在远程服务器上运行。