在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

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 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。