gpt4 book ai didi

meteor - 将 Meteor 应用程序从 OS X 部署到 Linux 会导致 bcrypt 问题

转载 作者:行者123 更新时间:2023-12-04 12:07:06 24 4
gpt4 key购买 nike

我刚刚部署了我的第一个生产 Meteor 应用程序,但遇到了一个非常重要的问题。当我尝试运行我的应用程序时,出现以下错误:

/home/hiapp/bundle/programs/server/node_modules/fibers/future.js:173
throw(ex);
^
Error: /home/hiapp/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/build/Release/bcrypt_lib.node: invalid ELF header
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at bindings (/home/hiapp/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:74:15)
at Object.<anonymous> (/home/hiapp/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/bcrypt.js:1:97)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)

通过一些研究,似乎问题在于 bcrypt 是特定于平台的,并且因为我的开发是在 OS X 10.10 上,但我的生产服务器是在 Ubuntu 14.04 上,所以问题就在于此。我的解决方法是从程序/服务器文件夹中运行 npm install bcrypt,然后将其从 programs/server/node_modules/bcrypt 复制到 programs/server/npm 。这似乎是很多手动步骤。

我正要通过一些修复重新部署我的应用程序,我担心我将不得不再次执行相同的步骤。有没有更好的方法来部署一个不会遇到这个问题的 Meteor 应用程序?我目前的程序是:
  • 运行meteor build
  • scp 生成的压缩包到我的服务器( digital ocean )
  • 炸开我的应用用户主目录中的 tarball
  • 添加步骤:重新编译bcrypt并如上所述复制目录

  • 我猜自动刷新会在服务器第一次尝试加载新库时被破坏,它会在火热的荣耀中爆炸。直接在服务器上克隆 GIT 存储库并直接从那里进行构建会更好,还是可以使用 mup 或任何其他工具来帮助简化部署过程?

    最佳答案

    有两种方法可以解决这个耗时的问题,这完全取决于您的部署方式。

    手动部署

    如果您手动部署您的应用程序,请确保您使用的是节点 v0.10.361,并且仅此而已。 Meteor 不适用于节点 v0.12.x。更具体地说,光纤模块会导致很多问题,它会因各种错误而窒息2。

    以下是为 me3、4 修复它的过程:

  • npm 中删除 bcrypt 模块目录:
    $ cd path_to_your_app/bundle/programs/server
    $ rm -rf npm/npm-bcrypt/node_modules/bcrypt/
  • 将 bcrypt 模块安装到 node_modules首先是目录。这会针对服务器的操作系统构建 bcrypt:
    $ npm install bcrypt
  • 将新创建的 bcrypt 模块移动到 npm目录:
    $ cp -r node_modules/bcrypt npm/npm-bcrypt/node_modules/bcrypt
  • 最后,重启应用程序、mogodb 和任何 Web 服务器进程(如 nginx6),如果您已配置,则通过 Upstart 。在标题下 理智步骤如果上述步骤没有为您解决,您可以执行下面的操作。

  • 使用 Meteor Up (mup)

    如果您使用的是 mup,那么这个过程会更容易,因为该线程上的其他答案指出。但是,在某些情况下仍然会出现错误,包括 invalid ELF header错误。确保您拥有最新版本的 mup npm update mup -g .
  • 第一步是删除任何预先存在的应用程序和 nodejs 包。 Mup 将应用程序安装到 /opt/在那里你可以找到your_appnodejs .删除它们。
  • 验证 mup.json 中的节点版本是否正确,仅 0.10.361 和以下设置文件:
    {

    ...

    "setupMongo": true,
    "setupNode": true,
    "nodeVersion" : "0.10.36",
    "setupPhantom": true,
    "enableUploadProgressBar": true,

    // Application name (No spaces)
    "appName": "your_app",

    // Location of app (local directory)
    "app": ".",

    ...

    }
  • 跑:
    $ mup setup
    $ mup deploy
  • 导航到 server服务器上的文件夹并重建模块:
    $ cd /opt/your_app/app/programs/server
    $ npm rebuild
    $ npm install

    可选:$ sudo npm update node-gyp -g
  • 最后,重启应用程序、mogodb 和任何 Web 服务器进程,例如 nginx6。完成以上步骤后,你可能想看看理智步骤下面了解更多调试选项。



  • 理智的步骤

    您还可以执行一些其他步骤:
  • 请注意,apache 也可能将自身绑定(bind)到运行 nginx 的同一端口。查看应用程序的错误日志和 Web 服务器的错误日志,看看是否有任何问题。通过 sudo service apache2 stop 停止 apache或 brute force close (不推荐)端口 80 上的任何正在运行的进程。
  • 然后删除或移动 apache2 conf 文件以防止其再次启动。所有 conf 文件位于 /etc/init/etc/init.d .
  • 使用$ mup logs -f查看 mup 日志。要查看您的应用程序中的错误,文件末尾 /var/log/upstart/your_app.log很有用(假设您配置了 Upstart )。
  • 如果使用 nginx,请确保您的目录是符号链接(symbolic link)的。
    $ ln -s /etc/nginx/sites-available/your_server_config /etc/nginx/sites-enabled/your_server_config

    此外,请确保您指定了 default_server 5 在 your_server_config .
  • 检查 mongodb 是否可以运行。



  • 引用
  • Meteor 版本 1.0.4.1(于 2015 年 3 月末发布)要求安装节点版本 0.10.36。我推荐使用节点版本管理器,n ,随时控制服务器上运行的节点版本。 Link .
  • 可怕的[XXX.XX.XXX.XX] Error: '/opt/your_app/programs/server/node_modules/fibers/bin/linux-x64-v8-3.28/fibers.node' is missing. Try reinstalling 'node-fibers'?错误。 Link .
  • 程序从这里修改:Link .
  • 为了您的信息,我使用了 DigitalOcean 非常有用的指南来将 meteor 应用程序部署到服务器。 Link .
  • 指定 default_server . Link .
  • 需要重启的常见进程有:sudo service mongod/nginx/yourapp restart .
  • 关于meteor - 将 Meteor 应用程序从 OS X 部署到 Linux 会导致 bcrypt 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27984456/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com