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

时间:2017-09-25 08:30:01

标签: node.js mongodb meteor web-deployment pm2

我有简单的流星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

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

2 个答案:

答案 0 :(得分:1)

在开始使用为您完成所有工作的mup之前,您最好了解人们通常如何将应用部署到生产环境。

裸骨漫步如下:

让我们假设你的应用被称为todos并且它出现在/home/meteor-doge/todos

进入该目录:

cd /home/meteor-doge/todos/

构建可部署的应用

meteor build ../ --directory

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

cd ../ ls -ltr --> bundle

如果适用,请安装npm:

cd bundle/program/server && npm install

将捆绑目录复制到生产主机。

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

答案 1 :(得分:1)

您需要提供以下内容才能在不使用mup包的情况下在远程服务器上安装Meteor应用程序。

  1. NODE JS 4.8.4已安装。

  2. MONGO DB 3.2/3.4已安装。

  3. NGINX/APACHE已安装并正在运行。

  4. PM2已安装。

  5. 我使用CentOS 7安装Meteor 1.5.0

    第1步:

    要创建特定于生产的可部署tarball,请运行以下命令。

    meteor build --server-only .
    
      

    注意:这将在项目文件夹中创建一个project_name.tar.gz文件。这是一个构建,缩小,压缩以供生产使用的tar文件,读取代码也不是用户友好的,因此不容易破解流星代码。

    第2步:

    您需要安装与您的meteor版本兼容的节点js的特定版本[在我的案例Meteor 1.5 with Node 4.8.4]

    了解安装节点js CLICK HERE

    的过程

    第3步:

    您现在需要在服务器上使用mongo db,

    1. 运行命令sudo vi /etc/yum.repos.d/mongodb-org.repo
    2. 将以下内容粘贴到该文件中

      [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
      

      按顺序运行Command,如下所示;

      1. yum repolist

      2. sudo yum install mongodb-org

      3. service mongod start / service mongod stop

      4. mongo

      5.   

        确保您创建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. 第4步:

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

          第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上运行我努力实现上述所有内容并使网站在远程服务器上运行。