我使用express和angularjs以及mongodb创建了node.js项目。 我如何将其部署到Openshift 项目结构看起来像这样
我的openshift用户名是admin 密码是X5900XJSLW4 db name是:topic
现在这些都是假的,但它们看起来像这样。感谢
这项工作当地非常精细,但我获得服务暂时不可用@ http://topic-aggregator16.rhcloud.com/
错误日志找到了她 https://github.com/chihabSD/TopicAggregator/blob/master/images/errorlog.png
我真的需要这个工作
config.db.mongo = {};
config.web.port = process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || process.env.WEB_PORT || 8080;
config.web.ip = process.env.OPENSHIFT_NODEJS_IP || process.env.IP;
config.db.mongo.url = process.env.OPENSHIFT_MONGODB_DB_URL || 'mongodb://localhost/topic';
答案 0 :(得分:5)
要将现有项目部署到openshift,您需要修改您的 package.json 和 server.json 文件:
的package.json
在脚本键
中添加启动脚本" main":" server.js", "脚本":{ "开始":"节点server.js", }
示例强>
{
"name": "to-do",
"version": "1.0.0",
"description": "Simple todo app",
"main": "server.js",
"scripts": {
"start": "node server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"node",
"angular"
],
"dependencies" : {
"express" : "~4.7.2",
"mongoose" : "~3.6.2",
"morgan" : "~1.2.2",
"body-parser": "~1.5.2",
"method-override": "~2.1.2"
},
"author": "atefth@gmail.com",
"license": "MIT"
}
server.js
从openshift env
添加动态IPvar server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';
app.listen(server_port, server_ip_address, function () {
console.log( "Listening on " + server_ip_address + ", server_port " + server_port );
});
现在,您可以使用rhc --from-code标志从现有代码部署项目
rhc app create appName nodejs-0.10 -s --from-code=https://github.com/username/app.git
<强>更新强>
如果您正在使用mongodb,则需要更新server.js文件
if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +
process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" +
process.env.OPENSHIFT_MONGODB_DB_HOST + ':' +
process.env.OPENSHIFT_MONGODB_DB_PORT + '/' +
process.env.OPENSHIFT_APP_NAME;
config.db.mongo.url = connection_string;
}
希望这有帮助。
答案 1 :(得分:0)
通常,OpenShift Online(V2)将使用环境变量(https://developers.openshift.com/languages/nodejs/environment-variables.html#listen)向您的应用程序发布连接信息。
您的nodejs webservice将需要使用此信息连接到OpenShift的负载均衡器。
对于此示例代码,您需要更改
config.web.port = process.env.PORT || process.env.WEB_PORT || 3000;
config.web.ip = process.env.IP;
为:
config.web.port = process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || process.env.WEB_PORT || 3000;
config.web.ip = process.env.OPENSHIFT_NODEJS_IP || process.env.IP;
有关详细信息,请参阅https://developers.openshift.com/languages/nodejs/environment-variables.html#listen
如果您更喜欢使用更简单的,与供应商无关的应用程序配置字符串(标准化为PORT
和IP
)cloud-env
或config-multipaas
也可能会有所帮助/ p>
答案 2 :(得分:0)
我在openshift上部署了nodejs时遇到了这个YouTube视频系列:https://www.youtube.com/playlist?list=PLcdTDBNC_bSj1GG0_-K6R5_UgV9E3jBPZ
看一看。它可能会让你一步一步。