为什么将我在本地创建的 MEAN-Application 推送到 OpenShift 不起作用?
Why does pushing my locally created MEAN-Application to OpenShift not work?
我正在尝试将我使用 express 在本地创建的 MEAN 应用程序推送到 OpenShift。为此,我从仪表板创建了一个新应用程序并将 NodeJS 添加为一个插件。然后,当我添加 Git-Repository-URL(托管在 BitBucket 上)并创建应用程序时,出现以下错误:
当我在没有进入存储库的情况下创建一个新应用程序 URL 然后从 Openshift 中拉取,复制到我的项目中并再次推送时,我得到了类似的错误:
这似乎是端口 8080 不可用的一些问题,但我自己无法解决这个问题,因为我是新手并且在网上找不到解决方案,因此非常感谢您的帮助和建议。
编辑:当我说 MEAN 时,我实际上是指 EAN;我现在不使用 MongoDB。
编辑 2:几个小时后我决定尝试 Heroku。它在第一次尝试时也没有工作,但日志包含更多有用的信息,所以我在大约一个小时内完成了所有工作并 运行 (相比之下,使用 OpenShift 尝试了大约 4 个小时)。之后我尝试将我推送到 Heroku 的完全相同的项目推送到 Openshift 并得到以下新错误:
同样,如果有人碰巧知道此问题的快速修复方法,请告诉我,因为我仍然想使用 OpenShift。
您的 NodeJS 代码应如下所示:
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
http.createServer().listen(port);
这将使用 OPENSHIFT_NODEJS_PORT
的值(如果可用),并且当您 运行 OpenShift 之外的应用程序时仍然使用 8080。或者您甚至可以在本地计算机上设置环境变量 OPENSHIFT_NODEJS_PORT=8080
以更接近地模拟 OpenShift 环境。
请注意,您还应该检查环境变量以获得正确的服务器 IP 地址。有关详细信息,请参阅 this documentation。
对我有用的是:
- 在 OpenSHift 上创建应用程序,暂时将 Repo Url 留空。
- 使用
git remote add openshift -f <openshift-git-repo-url
(ssh://...something)>
将 Openshift-Repo 作为远程 Repo 添加到您的项目中。
- 使用
git merge openshift/master -s recursive -X ours
将 Openshift-Repo 合并到您的本地 Repo 并在出现冲突时保留您的文件。
(这是重要的一步)你的主文件(对我来说bin/www)必须看起来像这样(我试过everything格式化它,但它只是没有正确格式化):
var app = require('../app');
var debug = require('debug')('CTW:server');
var http = require('http');
/**
- 从环境中获取端口并存储在 Express 中。
*/
app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");
/**
- 创建 HTTP 服务器。
*/
var 服务器 = http.createServer(app);
/**
- 在所有网络接口上侦听提供的端口。
*/
server.listen(app.get('port') ,app.get('ip'));
git push openshift HEAD
将其推送到您的应用程序仓库
事实证明,我必须设置 IP。
所有功劳归于 this and 个问题答案。
我正在尝试将我使用 express 在本地创建的 MEAN 应用程序推送到 OpenShift。为此,我从仪表板创建了一个新应用程序并将 NodeJS 添加为一个插件。然后,当我添加 Git-Repository-URL(托管在 BitBucket 上)并创建应用程序时,出现以下错误:
当我在没有进入存储库的情况下创建一个新应用程序 URL 然后从 Openshift 中拉取,复制到我的项目中并再次推送时,我得到了类似的错误:
这似乎是端口 8080 不可用的一些问题,但我自己无法解决这个问题,因为我是新手并且在网上找不到解决方案,因此非常感谢您的帮助和建议。
编辑:当我说 MEAN 时,我实际上是指 EAN;我现在不使用 MongoDB。
编辑 2:几个小时后我决定尝试 Heroku。它在第一次尝试时也没有工作,但日志包含更多有用的信息,所以我在大约一个小时内完成了所有工作并 运行 (相比之下,使用 OpenShift 尝试了大约 4 个小时)。之后我尝试将我推送到 Heroku 的完全相同的项目推送到 Openshift 并得到以下新错误:
同样,如果有人碰巧知道此问题的快速修复方法,请告诉我,因为我仍然想使用 OpenShift。
您的 NodeJS 代码应如下所示:
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
http.createServer().listen(port);
这将使用 OPENSHIFT_NODEJS_PORT
的值(如果可用),并且当您 运行 OpenShift 之外的应用程序时仍然使用 8080。或者您甚至可以在本地计算机上设置环境变量 OPENSHIFT_NODEJS_PORT=8080
以更接近地模拟 OpenShift 环境。
请注意,您还应该检查环境变量以获得正确的服务器 IP 地址。有关详细信息,请参阅 this documentation。
对我有用的是:
- 在 OpenSHift 上创建应用程序,暂时将 Repo Url 留空。
- 使用
git remote add openshift -f <openshift-git-repo-url (ssh://...something)>
将 Openshift-Repo 作为远程 Repo 添加到您的项目中。 - 使用
git merge openshift/master -s recursive -X ours
将 Openshift-Repo 合并到您的本地 Repo 并在出现冲突时保留您的文件。 (这是重要的一步)你的主文件(对我来说bin/www)必须看起来像这样(我试过everything格式化它,但它只是没有正确格式化):
var app = require('../app'); var debug = require('debug')('CTW:server'); var http = require('http');
/**
- 从环境中获取端口并存储在 Express 中。 */ app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002); app.set('ip', process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1");
/**
- 创建 HTTP 服务器。 */
var 服务器 = http.createServer(app);
/**
- 在所有网络接口上侦听提供的端口。 */
server.listen(app.get('port') ,app.get('ip'));
git push openshift HEAD
将其推送到您的应用程序仓库
事实证明,我必须设置 IP。
所有功劳归于 this and