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

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:'/',
    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 
       http://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监听port 80。我们还将代理服务器直通设置为localhost地址和端口3000,这与我们的Hapi应用程序相同。

现在,您可以导航回到您的应用程序目录,并启动该站点。网站启动后,只需导航至http://yourdomain.comhttp://yourip,您将看到文本“ Hello World”。

安装PM2

可以在NPM存储库中找到PM2,并且可以将其全局安装,以便可以从任何地方访问。

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可能性的更多信息,请参阅其快速入门指南



Leave a Comment

如何在CentOS 7上安装Oxwall

如何在CentOS 7上安装Oxwall

Oxwall是一个开源社交网络软件平台,可用于免费构建自定义社交网站(SNS)。在这篇文章中,

如何在Ubuntu 16.10上安装Review Board

如何在Ubuntu 16.10上安装Review Board

使用其他系统?Review Board是一个免费且开源的工具,用于检查源代码,文档,图像等。这是基于网络的软件战

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

如何在Debian 9 LAMP VPS上安装October 1.0 CMS

使用其他系统?October 1.0 CMS是基于Laravel框架构建的简单,可靠,免费和开源的内容管理系统(CMS)

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

如何使用Ubuntu 15.10在Vultr服务器上安装Xubuntu桌面

Xubuntu是XFCE + Ubuntu!XFCE是Ubuntu的轻量级GUI /桌面。Vultr服务器需要其他依赖项,默认情况下未安装这些依赖项。

如何在Debian 9上安装Monica

如何在Debian 9上安装Monica

使用其他系统?Monica是一个开源的个人关系管理系统。可以将其视为CRM(销售团队使用的一种流行工具

如何使用SSL和安全密码保护由Nginx驱动的网站

如何使用SSL和安全密码保护由Nginx驱动的网站

简介SSL(代表安全套接字层)及其后续版本TLS(代表传输层安全性)是需要加密的加密协议。

如何在Fedora 26 LAMP VPS上安装MODX Revolution

如何在Fedora 26 LAMP VPS上安装MODX Revolution

使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由

如何在Ubuntu 17.04上安装JuliaLang

如何在Ubuntu 17.04上安装JuliaLang

朱莉娅(Julia)通常称为JuliaLang,是一种用于数值计算的编程语言。Julia的速度和C一样快,但是却不牺牲可读性

在Ubuntu 14.04上安装Ruby on Rails

在Ubuntu 14.04上安装Ruby on Rails

Ruby on Rails(RoR)是用Ruby编程语言编写的框架,可让您将Ruby与HTML,CSS和类似的程序结合使用。

在Fedora 28上安装Anchor CMS

在Fedora 28上安装Anchor CMS

使用其他系统?Anchor是用PHP编写的轻量级开源博客CMS。Anchors源代码托管在GitHub上。本指南将向您展示

将Debian 9升级到Debian 10

将Debian 9升级到Debian 10

简介Debian 10(Buster)是Debian 9(Stretch)的后继产品。它于2019年7月6日发布。在本教程中,我们将升级一个existin

如何管理Linux服务器时区设置

如何管理Linux服务器时区设置

在Linux服务器上正确设置日期和时间非常重要。您的服务器日志和其他重要信息都将反映时区

如何在Ubuntu 16.04上安装Taiga项目管理工具

如何在Ubuntu 16.04上安装Taiga项目管理工具

使用其他系统?Taiga是用于项目管理的免费和开源应用程序。与其他项目管理工具不同,Taiga使用增量

在Ubuntu上配置Nagios:第1部分-Nagios服务器

在Ubuntu上配置Nagios:第1部分-Nagios服务器

本文是有关在Ubuntu 14.04上安装和配置Nagios的2部分系列文章的一部分。第1部分:Nagios服务器第2部分:远程主机概述Nagio

如何访问Vultr VPS

如何访问Vultr VPS

Vultr提供了几种不同的方式来访问VPS以进行配置,安装和使用。访问凭据VPS ar的默认访问凭据

如何在Debian 9上安装Grav CMS

如何在Debian 9上安装Grav CMS

使用其他系统?Grav是用PHP编写的开源平面文件CMS。Grav源代码公开托管在GitHub上。本指南将向您展示如何

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

如何在Fedora 26 LAMP VPS上安装Pagekit 1.0 CMS

使用其他系统?Pagekit 1.0 CMS是一个美观,模块化,可扩展,轻量级,免费和开源的内容管理系统(CMS),具有

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

如何在Ubuntu 16.04 LAMP VPS上安装BigTree CMS

使用其他系统?BigTree CMS 4.2是一种快速,轻量级,免费和开源的企业级内容管理系统(CMS),具有广泛的功能。

如何在CentOS 7上设置vsFTPd

如何在CentOS 7上设置vsFTPd

FTP是用于通过Internet传输文件的有用协议,本指南将向您展示如何设置vsFTPd(非常安全的文件传输协议守护程序)o

在Debian / Ubuntu中使用Rsync设置文件镜像

在Debian / Ubuntu中使用Rsync设置文件镜像

简介如果您经营一个重要的网站,则最好将文件镜像到辅助服务器。如果您的主服务器有网络

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息