javascript - NodeJS + Cpanel 错误:从应用程序收到不完整的响应(Node js、Express、Mongoose)
问题描述
我使用 express & mongoose 创建了一个 Node js 应用程序,并使用 cpanel 将其部署到 Web 服务器。我使用他们的功能“设置节点 JS”将其部署到我的子域。在最初的 6-7 天,它运行良好,所有功能和特性都正常运行,没有任何问题,也没有发生任何不好的事情。但是突然,打开页面时出现一个错误,说内部服务器错误500。
我在这里搜索以找到解决方案,是的,我得到了一些解决方案来添加这行代码
RewriteCond %{ENV:REDIRECT_STATUS} 200
到我的.htaccess文件。而且它有效(我仍然不明白为什么一开始它在不添加这个的情况下也可以解决)并且我可以再次恢复我的页面。嗯,有点……不完全。
然而...
每次我在我的程序中使用登录或注册功能时(基本上是在尝试运行mongoose 方法时User.find({})
),它都会挂起 2-3 分钟,直到页面显示错误:
在页面上:从应用程序收到不完整的响应
在控制台上:502 Bad Gateway
我在这里搜索过,但还没有找到任何东西,只有这个问题有类似的问题,但还没有得到明确的回答,比如需要打开哪个端口?我在哪里可以找到它。
我是一个编程新手,刚刚开始,那么我应该如何解决这个错误?
在这一点上,我不确定要向你们展示什么以使其更易于理解,但我将在下面包含我的 .htaccess 文件。此外,我在 heroku 上对其进行了测试,它运行完全正常。但它需要在cpanel 共享主机上提供服务,而且有点复杂。
谢谢你的帮助。
我的.htaccess文件包含以下内容:
# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php56” package as the default “PHP” programming language.
<IfModule mime_module>
AddHandler application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN
PassengerAppRoot "/home/intidina/psikotes"
PassengerBaseURI "/"
PassengerNodejs "/home/intidina/nodevenv/psikotes/12/bin/node"
PassengerAppType node
PassengerStartupFile index.js
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION BEGIN
<IfModule Litespeed>
</IfModule>
# DO NOT REMOVE OR MODIFY. CLOUDLINUX ENV VARS CONFIGURATION END
RewriteCond %{ENV:REDIRECT_STATUS} 200
解决方案
首先,您不能在共享主机上运行 MongoDB。请参考这个线程。.
这与您在下面的陈述一致:
此外,我在 heroku 上对其进行了测试,它运行完全正常。但它需要在 cpanel 共享主机上提供服务,而且有点复杂。
如果共享主机部署是必须的,那么一个选项是使用外部 MongoDB 实例。幸运的是,您在 Heroku 中部署时有一个。
它没有被解释,所以我假设 Heroku 应用程序使用了 mLab
- 转到您的 Heroku 仪表板 -> 您的应用程序,https://dashboard.heroku.com/apps/your_app
- 如果您已安装 mLab MongoDB 插件,请转到其设置。它将重定向到https://www.mlab.com/databases/heroku_yourdbname
- 在设置菜单中,您将看到使用 MongoDB URI 进行连接的选项,然后它将显示类似
mongodb://<dbuser>:<dbpassword>@something.mlab.com:11331/heroku_yourdbname
. 分别更改和更改您的用户名和密码。然后确保您的主机允许端口 11331。
希望这可以帮助。
推荐阅读
- semaphore - 点燃信号量会自动清理吗?
- python - 从元组的一个参数,试图找到两个和
- sql - 带有 unnest 的嵌套 SQL 评估问题
- php - 注意:尝试在第 48 行的 /home/foldername/public_html/event2.php 中获取非对象的属性 0 结果
- mongodb - mongodb `$lookup` 或 `join` 与对象数组内的属性
- c++ - 如何在另一个类 C++ 中使用一个类信息
- kubernetes - Kubernetes 总是将请求转发到同一个 pod
- bash - BASH 脚本检查文件夹中的特定文件类型,然后删除最旧的文件
- php - 更新 Eclipse 和 PHP 后出现“无法在任何服务器上运行选择”错误
- ios - UIScrollView 初始化时的内容偏移