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

3
我有一个简单的 Meteor JS 应用程序,我想在自己的服务器上部署它。我该怎么做呢?我尝试使用 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

由于我是新手,我不知道这些错误的含义。

你在远程服务器上使用Ubuntu还是CentOS? - undefined
我是ubuntu @Ankur Soni。 - undefined
这不会有太大的区别。你将使用像apt get install这样的命令,而我使用的是yum install...语法不同,但方法相同。冷静地阅读我的答案,因为它很长,不要惊慌,它很简单。一步一步地跟着做,你就会看到你的网站上线了 :) 实际上,Ubuntu非常容易。 - undefined
2个回答

2
您需要以下内容才能在远程服务器上安装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: 运行以下命令以创建生产特定的可部署tarball。
meteor build --server-only .

注意:这将在您的项目文件夹内创建一个project_name.tar.gz文件。这是一个tar文件,用于构建、缩小和压缩生产使用,而且不易于阅读代码,因此不容易黑客入侵meteor代码。

步骤2:

您需要安装与您的meteor版本兼容的特定版本的node js [在我的情况下是Meteor 1.5和Node 4.8.4]

要了解安装node 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

确保您创建了database_nameuserpassword

现在使用以下命令为shell导出变量。

  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 目录。进入 bundle/programs/server 并执行命令 npm install --production。回到 bundle/ 目录并使用命令 pm2 start -name "UID" main.js 运行 pm2。这将显示如下内容;
[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关闭站点以关闭由pm2处理的所有进程。

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

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

就这样!!! 应用程序已经在https://<hostip or name>:3000上启动了。我为实现以上所有内容并使网站在远程服务器上运行而苦苦挣扎。


哇,非常感谢你提供这么详细和有效的流程描述! - undefined

1

在你开始使用可以为你完成所有工作的mup之前,最好了解一下如何将应用程序部署到生产环境中。

以下是一个基本的步骤:

假设你的应用程序名为todos,并且它位于/home/meteor-doge/todos中。

进入该目录:

cd /home/meteor-doge/todos/

构建可部署的应用程序:

meteor build ../ --directory

在父级目录中,现在您会发现一个bundle目录:

cd ../ ls -ltr --> bundle

如果适用,请进行npm安装:

cd bundle/program/server && npm install

将bundle目录复制到您的生产主机上。

cp -R bundle /where/ever/necessary/

在生产主机上,设置所需的环境变量:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接