在Ubuntu 16.04上使用Node.js创建Hapi.js Web应用程序

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

Hapi.js是一个丰富,强大且功能强大的Node.js框架,旨在在Node.js生态系统中构建Web应用程序。其直接的设计使其易于上手。 Hapi的核心使用了许多最新的JavaScript ES6功能,例如ES6 Promise。对于以前使用过Express的用户来说,Hapi允许您尝试一些新东西,并体验所有最新的JavaScript功能。

在本教程中,我们的目标是在Ubuntu 16.04 LTS上建立一个基本的Hapi.js网页,该网页由我们的Vultr VPS托管。对于那些为其网站拥有域名的用户,我们将使用反向代理将我们的域名链接到我们的网站。最后,我们将学习怎样使用流程管理器进行管理。现在我们已经解决了这个问题,让我们开始吧。

安装Node.js

我们将需要安装Node.js。为此,请在Ubuntu 16.04 LTS上执行以下操作。

添加存储库

我们将需要添加NodeSource APT存储库,其中包含Node.js的最新LTS版本。

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

我们正在下载一个脚本,该脚本将用于将存储库添加到源列表中,以及从NodeSource存储库安装Node.js。

安装构建工具

除了安装Node.js本身之外,我们还将需要安装一些必要的构建工具,这些工具将有助于构建我们可能需要安装的任何模块。

sudo apt-get install -y build-essential

这只是从存储库下载并安装构建工具。

设置应用程序目录

优良作法是指定一个我们将用于应用程序的文件夹,其中将包含我们应用程序的所有数据,例如配置文件和启动脚本。创建一个文件夹,将其命名为任意名称。为了本教程的缘故,我假设您将其命名为 site

mkdir site

制作完文件夹后,现在我们可以更改它了。确保您在刚刚创建的目录中,启动NPM软件包向导。

npm init

它将要求您输入一些不同的内容,例如您的应用程序名称,起始文件,许可证等。除了更明显的字段(例如,应用程序的名称)外,大多数字段都可以保留默认值。最后,它将如下所示:

{
  "name": "site",
  "version": "1.0.0",
  "description": "Hapi.js site",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "rich",
  "license": "MIT"
}

对结果满意后,单击ENTER保存文件。

安装Hapi.js

现在您的目录已经成功构建,我们现在可以继续安装Hapi.js。如前所述,我们将利用NPM为我们的项目下载Hapi.js及其依赖项。在项目目录中,运行以下命令。

npm install hapi.js

这将从NPM下载Hapi.js并将其安装在我们的项目目录中。在同一运行中,为方便起见,还下载了Hapi.js可能依赖的任何依赖项。

设置我们的示例应用程序

现在是时候设置我们的基本Hapi.js应用程序文件了。这将包含我们针对该应用程序的所有代码。再往前走,我们可以扩展我们的应用程序代码,并在需要时添加更多内容。

接下来,我们将创建起始文件。请参考 main 您的部分 package.json 文件,以确定确切命名文件的方式。由于我使用默认的命名方案,因此我们的文件将被称为 index.js

nano index.js

一旦进入nano文本编辑器,就可以像这样创建基本的应用程序代码。

const Hapi=require('hapi');
const server=Hapi.server({
    host:'localhost',
    port: 3000
});

server.route({
    method:'GET',
    path:"https://www.vultr.com/",
    handler:((request,h)) => {
        return 'Sample Hapi.js Application';
    }
});
async function start() {

    try {
        await server.start();
    } catch (err) {
        console.log(err);
        process.exit(1);
    }
    console.log(`Our server is running! ${server.info.uri}`);
};

start();

首先,我们导入Hapi模块。然后,我们初始化服务器构造函数,其中包含我们要在其上运行服务器的主机以及端口,即 3000 对于本教程。接下来,我们设置一个基本路由器,该路由器指示每当有人访问该站点时,他们都会收到一条简单的消息。最重要的是,我们具有一个异步功能来启动服务器,该功能将登录到服务器正在运行的控制台。
完成后,保存并关闭文件(CTRL + X)

现在我们的主文件已经设置好,我们准备启动我们的应用程序。

node index.js

如果你看到 ”Our server is running!”,然后服务器成功启动。

安装Nginx

由于Nginx在默认的Ubuntu存储库中可用,因此安装非常简单。只需更新您的软件包列表,然后安装它。

sudo apt update
sudo apt install nginx -y 

刷新软件包列表后,将安装Nginx及其依赖项。

配置Nginx

为了使Nginx反向代理我们的应用程序,我们需要创建一个配置文件。该配置文件将保存有关我们的应用程序的信息,Nginx将其用于反向代理。

删除Nginx创建的默认配置,因为稍后将用我们自己的默认配置替换它。

sudo rm /etc/nginx/sites-enabled/default

sites-available 夹。至于命名,我们可以坚持简单 site为简单起见。

sudo nano /etc/nginx/sites-available/site

在文件中,粘贴以下内容并保存。

server {
    listen 80;
    location / {
          proxy_set_header X-Real-IP 
          $remote_addr;
          proxy_set_header 
          X-Forwarded-For 
          $proxy_add_x_forwarded_for;
          proxy_set_header Host 
          $http_host;
          proxy_set_header 
        X-NginX-Proxy true; proxy_pass 
       https://127.0.0.1:3000/;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade 
     $http_upgrade;
    proxy_set_header Connection 
    "upgrade";
    proxy_redirect off;
    proxy_set_header 
   X-Forwarded-Proto $scheme;
    }
}

在这个文件中,我们告诉Nginx监听端口 80。我们还将代理传递设置为 localhost 地址和端口 3000,该端口与我们的Hapi应用程序相同。

现在,您可以导航回到您的应用程序目录,并启动该站点。网站启动后,只需导航至 https://yourdomain.com 要么 https://yourip,您会看到“Hello World”。

安装PM2

PM2可以在NPM存储库中找到,您可以像这样在全球范围内安装它,以便从任何地方进行访问。

sudo npm install pm2 -g

-g 末尾的标志表示我们要将模块安装到全局模块文件夹,这将使我们可以在项目目录之外使用它。这是为了使我们的项目表现得像普通系统应用程序一样。

从PM2启动我们的应用

安装PM2后,导航回到项目目录。现在,启动我们的应用程序的语法将稍有不同。这就是我们将怎样使用PM2做到这一点。

pm2 start index.js --name site

我们利用PM2启动功能,该功能基本上是为应用程序创建一个配置文件,名称为 site。运行该命令后,您的网站将启动,但是您会注意到日志不会显示。这是因为我们现在查看日志的方式不同。

pm2 logs site

您甚至可以指定要查看的日志行数, --lines 论据。

结论

您已经成功设置了Hapi.js Web服务器,使用Nginx对其进行了反向代理,并学习了怎样使用PM2对其进行更好的管理。有了这些知识,您就可以进一步扩展本教程并制作一个非常高级的Hapi.js应用程序。要了解有关Hapi可能性的更多信息,请访问 官方文件。如果您想了解更多有关PM2可能性的信息,请参考他们的 快速入门指南

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

相关阅读:

Posted in: LinuxTags: