如何让 Codeship 通过 Heroku 上 nodejs expressjs 部署的 check_url 阶段?
How can I get Codeship to pass the check_url phase of a nodejs expressjs deployment on Heroku?
简而言之,我想:
部署 - https://expressjs.com/en/starter/hello-world.html
通过 Codeship 以及从 Codeship 到 Heroku。
我一直在尝试遵循 https://expressjs.com/en/starter/hello-world.html 中的非常基本的 Hello-World express 教程,然后代码 check_url 阶段 无法通过 Heroku 正确加载 出现以下错误:
Connecting to intfdsf-dsfdfsdf-323423.herokuapp.com (intfdsf-dsfdfsdf-323423.herokuapp.com)|54.243.89.187|:80... connected.
HTTP request sent, awaiting response... 503 Service Unavailable
2016-07-22 02:18:12 ERROR 503: Service Unavailable.
在设置命令下,我尝试了以下操作:
nvm install 0.10
nvm use 0.10
npm install
和
nvm install 6.3.0
nvm use 6.3.0
npm install
两者都以同样的方式失败了。
并添加类似 npm start
的内容会使该行的进程挂起....
我添加了一个带有 web: node server.js
的 Procfile,因此将 app.js 重命名为 server.js 以防万一并获得最佳实践。最后我确实在我的 package.json
中定义了 engines
:
{
"name": "node-ship",
"version": "1.0.0",
"description": "",
"main": "server.js",
"engines": {
"node": "5.6.x",
"npm": "3.10.x"
},
"scripts": {
"start" : "node server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/slfkjsdlfjklsdkfj/node-ship.git"
},
"author": "slfkjsdlfjklsdkfj",
"license": "ISC",
"bugs": {
"url": "https://github.com/slfkjsdlfjklsdkfj/node-ship/issues"
},
"homepage": "https://github.com/slfkjsdlfjklsdkfj/node-ship#readme",
"dependencies": {
"express": "^4.14.0"
}
}
我错过了什么?这样我就可以让 Heroku 正确加载 expressjs,就像我在 运行 node app.js
时在本地加载一样
感谢您的帮助。
这里还有 server.js 文件:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(5000, function () {
console.log('Example app listening on port 5000!');
});
Heroku 依赖于端口环境变量的使用。
所以 server.js
文件应该改为:
var port = process.env.PORT || 5000;
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(port, function () {
console.log('Example app listening on port '+ port +'!');
});
强调var port = ...
部分
然后 Procfile 将用它的 web: node server.js
处理剩下的事情
Codeship 在 Heroku 部署结束时的 check_url
脚本 运行 使用 wget
检查 Heroku 应用程序根 URL 的状态代码。 (如果您想查看不同的 URL,更多选项 link 后面隐藏了一个设置。
只要该页面 returns 状态代码在 2xx 或 3xx 范围内,检查就会成功。
完整脚本请参阅 https://github.com/codeship/scripts/blob/master/utilities/check_url.sh。
简而言之,我想: 部署 - https://expressjs.com/en/starter/hello-world.html 通过 Codeship 以及从 Codeship 到 Heroku。
我一直在尝试遵循 https://expressjs.com/en/starter/hello-world.html 中的非常基本的 Hello-World express 教程,然后代码 check_url 阶段 无法通过 Heroku 正确加载 出现以下错误:
Connecting to intfdsf-dsfdfsdf-323423.herokuapp.com (intfdsf-dsfdfsdf-323423.herokuapp.com)|54.243.89.187|:80... connected.
HTTP request sent, awaiting response... 503 Service Unavailable
2016-07-22 02:18:12 ERROR 503: Service Unavailable.
在设置命令下,我尝试了以下操作:
nvm install 0.10
nvm use 0.10
npm install
和
nvm install 6.3.0
nvm use 6.3.0
npm install
两者都以同样的方式失败了。
并添加类似 npm start
的内容会使该行的进程挂起....
我添加了一个带有 web: node server.js
的 Procfile,因此将 app.js 重命名为 server.js 以防万一并获得最佳实践。最后我确实在我的 package.json
中定义了 engines
:
{
"name": "node-ship",
"version": "1.0.0",
"description": "",
"main": "server.js",
"engines": {
"node": "5.6.x",
"npm": "3.10.x"
},
"scripts": {
"start" : "node server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/slfkjsdlfjklsdkfj/node-ship.git"
},
"author": "slfkjsdlfjklsdkfj",
"license": "ISC",
"bugs": {
"url": "https://github.com/slfkjsdlfjklsdkfj/node-ship/issues"
},
"homepage": "https://github.com/slfkjsdlfjklsdkfj/node-ship#readme",
"dependencies": {
"express": "^4.14.0"
}
}
我错过了什么?这样我就可以让 Heroku 正确加载 expressjs,就像我在 运行 node app.js
感谢您的帮助。
这里还有 server.js 文件:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(5000, function () {
console.log('Example app listening on port 5000!');
});
Heroku 依赖于端口环境变量的使用。
所以 server.js
文件应该改为:
var port = process.env.PORT || 5000;
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(port, function () {
console.log('Example app listening on port '+ port +'!');
});
强调var port = ...
部分
然后 Procfile 将用它的 web: node server.js
Codeship 在 Heroku 部署结束时的 check_url
脚本 运行 使用 wget
检查 Heroku 应用程序根 URL 的状态代码。 (如果您想查看不同的 URL,更多选项 link 后面隐藏了一个设置。
只要该页面 returns 状态代码在 2xx 或 3xx 范围内,检查就会成功。
完整脚本请参阅 https://github.com/codeship/scripts/blob/master/utilities/check_url.sh。