heroku部署node.js
一、准备工作
1.安装heroku
点击下载
2.登录
heroku login
使用heroku的注册账号登录
3.下载示例
git clone https://github.com/heroku/node-js-getting-started.git
cd node-js-getting-started
二、部署示例文件到heroku
1.创建
heroku create
2.部署
git push heroku master
3.运行实例
heroku ps:scale web=1
4.打开预览
heroku open
- 查看网站运行日志
heroku logs --tail
- node-js-getting-started目录下Procfile文件
web: node index.js
这声明了一个进程类型,web以及运行它所需的命令。这个名字web在这里很重要。它声明此进程类型将附加到Heroku 的HTTP路由堆栈,并在部署时接收Web流量。
Procfiles可以包含其他流程类型。例如,您可以为后台工作进程声明一个进程,该进程处理队列中的项目。
三、在本地运行
- 既然都开始学习node了,在目录下输入这个命令安装依赖
npm install
- 启动
heroku local web
打开 http://localhost:5000 访问本地服务
四、提供数据库(重点来了)
1.添加数据库(postgresql)
heroku addons:create heroku-postgresql:hobby-dev
2.安装pg模块(操作postgresql)
npm install pg
3.修改代码
现在编辑目录下的index.js文件以使用此模块连接到DATABASE_URL环境变量中指定的数据库
修改后:
const express = require('express')
const path = require('path')
const PORT = process.env.PORT || 5000
const {
Pool
} = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: true
});
express()
.use(express.static(path.join(__dirname, 'public')))
.set('views', path.join(__dirname, 'views'))
.set('view engine', 'ejs')
.get('/', (req, res) => res.render('pages/index'))
.get('/db', async(req, res) => {
try {
const client = await pool.connect()
const result = await client.query('SELECT * FROM test_table');
res.send(result.rows[0].name) //直接打印出第一个
} catch (err) {
console.error(err);
res.send("Error " + err);
}
})
.listen(PORT, () => console.log(`Listening on ${ PORT }`))
- 没有用官网的示例demo,用官网的示例demo有丢丢坑,会出现Internal Server Error的错误,没有深研究。
4.下载postgresql客户端
点击选择版本下载
- 安装时右键管理员运行,否则安装失败
- 成功安装后一定要设置好环境变量
C:\Program Files\PostgreSQL\10\bin
我的电脑-属性-高级系统设置-环境变量-path-新建
- 添加后记得重启电脑
5.连接到远程数据库并创建表
分行输入
heroku pg:psql
create table test_table (id integer, name text);
insert into test_table values (1, 'hello database');
\q
五.推送本地更改到heroku
每次部署到Heroku都遵循相同的模式。
1.首先,将修改后的文件添加到本地git存储库:
git add .
2.将更改提交到存储库:
git commit -m "add"
3.现在进行部署:
git push heroku master
4.最后,打开线上应用:
heroku open