教你在heroku云平台上部署Node.js应用

yizhihongxing

我根据您的需求,为您提供完整的“教你在 Heroku 云平台上部署 Node.js 应用”的攻略。

1. 准备工具和环境

在开始操作之前,先确保你拥有以下工具和环境:

  • Node.js 和 npm
  • Git
  • Heroku CLI

2. 创建应用

我们先来创建一个示例的 Node.js 应用。在本地创建一个文件夹,进入该文件夹,通过以下命令初始化一个 Node.js 应用:

npm init

按照提示完成应用的初始化过程,然后安装 Express 框架:

npm install express --save

在应用根目录下创建一个 index.js 文件,并添加以下代码:

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('Hello from Heroku!');
});

app.listen(port, () => {
  console.log(`Server listening on port ${port}.`);
});

这个应用会在本地监听3000端口,当你通过浏览器访问http://localhost:3000时,会显示"Hello from Heroku!"。

3. 部署到 Heroku

我们先在 Heroku 上创建一个新的应用,通过以下命令:

heroku create

该命令将会自动创建一个随机的应用名称,并且会自动关联 Git 远程仓库。

接下来,我们将该应用部署到 Heroku。首先将应用代码提交到 Git 仓库:

git add .
git commit -m "Initial commit"
git push heroku master

部署完成后,你可以通过以下命令访问该应用:

heroku open

这会自动打开浏览器,访问该应用的 URL。

4. 更新应用

如果需要更新应用,在本地修改完代码后,提交到 Git 仓库,并通过以下命令将代码部署到 Heroku:

git push heroku master

这会自动将代码部署到 Heroku,你可以直接访问该应用的 URL 进行测试。

5. 示例说明

下面通过两个示例说明部署 Node.js 应用到 Heroku 上的具体步骤:

示例一:部署一个静态网站

首先,你需要在本地创建一个文件夹,然后在该文件夹下创建一个 index.html 文件,并添加以下内容:

<!DOCTYPE html>
<html>
<head>
  <title>Hello from Heroku</title>
</head>
<body>
  <h1>Hello from Heroku</h1>
</body>
</html>

接下来,在该文件夹下打开终端,并创建一个 Node.js 应用:

npm init
npm install express --save

在应用根目录下创建一个 index.js 文件,并添加以下代码:

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.use(express.static('public'));

app.listen(port, () => {
  console.log(`Server listening on port ${port}.`);
});

在应用根目录下创建一个 public 文件夹,在该文件夹下添加一个 .gitkeep 文件,然后将 index.html 文件放到 public 文件夹下。

现在,你可以通过以下命令在 Heroku 上部署该应用:

heroku create
git add .
git commit -m "Initial commit"
git push heroku master
heroku open

这会自动打开浏览器,访问该应用的 URL。

示例二:部署一个带有数据库的应用

该示例将展示如何在 Heroku 上部署一个带有 MongoDB 数据库的 Node.js 应用。

首先,你需要在本地创建一个文件夹,并添加以下代码:

const express = require('express');
const mongoose = require('mongoose');
const app = express();
const port = process.env.PORT || 3000;
const mongoUrl = process.env.MONGO_URL || 'mongodb://localhost:27017/myapp';

mongoose.connect(mongoUrl, { useNewUrlParser: true, useUnifiedTopology: true });

const schema = new mongoose.Schema({
  name: String
});

const Model = mongoose.model('Model', schema);

app.get('/', async (req, res) => {
  const doc = new Model({ name: 'Hello from Heroku!' });
  await doc.save();

  const savedDoc = await Model.findOne({ name: 'Hello from Heroku!' });
  res.send(savedDoc.name);
});

app.listen(port, () => {
  console.log(`Server listening on port ${port}.`);
});

修改应用根目录下的 package.json 文件,添加以下代码:

{
  "scripts": {
    "start": "node index.js"
  }
}

现在,你可以通过以下命令在 Heroku 上部署该应用:

heroku create
heroku addons:create mongolab
git add .
git commit -m "Initial commit"
git push heroku master
heroku open

这会自动打开浏览器,访问该应用的 URL。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:教你在heroku云平台上部署Node.js应用 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • linux下查看端口是否被占用以及查看所有端口【推荐】

    当我们在Linux系统中需要查看某个端口是否被占用,或者需要查看当前所有端口的占用情况时,可以通过以下步骤来实现。 查看单个端口是否被占用 我们可以通过 netstat 命令来查看指定端口(例如 8080)是否被占用。具体命令如下: netstat -an | grep 8080 其中 -an 选项用于显示所有连接和监听端口的数字格式,grep 命令用于过滤…

    database 2023年5月22日
    00
  • PHP_MySQL教程-第二天while循环与数据库操作第2/2页

    标题: PHP_MySQL教程-第二天while循环与数据库操作第2/2页 这篇教程是关于如何使用PHP与MySQL进行数据库操作,主要涵盖了循环操作、查询与更新等方面。本文为第二部分,总共分为2页。本文的主要内容包括: PHP循环语句 使用PHP与MySQL进行数据库操作的示例 数据库查询结果的展示 数据库的更新操作 PHP循环语句 在PHP中,常用的循环…

    database 2023年5月21日
    00
  • Oracle查询表空间大小及每个表所占空间的大小语句示例

    针对这个问题,我们可以使用以下两步来查询Oracle表空间大小及每个表所占空间大小: 第一步:查询表空间大小 查询表空间大小,需要使用系统视图dba_data_files。该视图包含了Oracle数据库中所有数据文件的信息,数据文件即为存储表空间数据的物理文件。 下面是查询表空间大小的SQL示例: SELECT fs.tablespace_name AS T…

    database 2023年5月21日
    00
  • redis简单介绍及安装使用小结

    Redis 简单介绍及安装使用小结 Redis 是什么? Redis(Remote Dictionary Server)是一款开源的高性能 key-value 数据库。它内存存储、持久化、备份和复制等功能特性使其被广泛应用于缓存、消息队列、数据结构存储等领域。 Redis 安装 Mac OS X 安装 Redis 在 Mac OS X 上安装 Redis 最…

    database 2023年5月22日
    00
  • MyBatis多表关联查询的实现示例

    下面是关于”MyBatis多表关联查询的实现示例”的完整攻略。 标题 MyBatis多表关联查询的实现示例 简介 在MyBatis框架中,多表关联查询是非常常见的,本文将介绍如何使用MyBatis实现多表关联查询。 数据准备 在实现多表关联查询之前,我们需要先准备好测试数据。假设我们有两张表:学生表(student)和班级表(class),并且学生表中有一个…

    database 2023年5月22日
    00
  • sql与mysql有哪些区别

    SQL与MySQL有哪些区别 SQL是什么 SQL是Structured Query Language的简称,即结构化查询语言。它是一种专门用来管理和操作关系型数据库的标准语言。 SQL可以进行增、删、改、查等操作,用于数据的存储、检索、更新和删除等操作。 SQL语言标准由ISO组织制定和管理。各种数据库管理系统都必须遵循SQL标准,但不同厂商的数据库管理系…

    database 2023年5月22日
    00
  • 一文详解SQL 中的三值逻辑

    一文详解SQL中的三值逻辑 什么是三值逻辑 在SQL中,我们经常需要进行逻辑运算,例如AND、OR、NOT等。然而,在SQL中,逻辑运算并不是双值的,而是三值的。除了True和False以外,还有一个Unknown的值。 Unknown的含义 未知值代表了这个值是否满足指定的条件是不确定的,未知的原因可能是由于数据不完整、数据格式错误或其他原因导致的。所以,…

    database 2023年5月22日
    00
  • sqlserver2005 master与msdb数据库备份恢复过程

    备份和恢复是SQL Server数据库管理中的重要方面。在备份和恢复过程中,Master数据库和MSDB数据库也需要特别注意。下面是SQL Server 2005中Master和MSDB数据库备份恢复的完整攻略: 备份Master数据库 Master数据库是SQL Server中最重要的系统数据库之一,该数据库包含SQL Server实例配置信息、用户账户和…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部