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

・10 分钟阅读

Hapi.js是一个丰富,强大且功能强大的Node.js框架,专为在Node.js生态系统中构建Web应用程序而设计。它简单的设计使我们可以轻松地开始,Hapi在它核心上使用了许多最新的JavaScript ES6特性,比如,ES6承诺,对于以前使用过Express的用户,HAPI允许你尝试一些新功能,并体验所有最新的JavaScript功能。

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

正在安装Node.js

我们需要安装node.js ,要在Ubuntu 16.04上这么做,请按照以下说明操作。

添加存储库

我们需要添加NodeSource APT存储库,它包含了最新版本的node.js 。


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了,正如前面提到的,我们会利用,下载Hapi.js以及它的依赖项,以及我们的项目,在项目目录中,运行以下命令。

 
npm install hapi.js

 

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

设置我们的例子应用程序

现在是时候设置我们的基本Hapi.js应用程序文件了,这将包含我们的应用程序的所有代码,在我们认为合适的情况下,我们可以扩展我们的应用程序代码,并添加更多内容。

接下来,我们将创建起始文件,请参考package.json文件的main部分,确定如何命名文件,由于我使用了默认命名方案,所以,我们的文件会被称为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监听端口80 ,我们还会代理直通设置为localhost地址和端口3000,这与我们的Hapi应用程序相同。

现在可以导航回应用程序目录,并启动站点,站点启动后,只需导航到http://yourdomain.comhttp://yourip,你会看到文本"Hello World"

安装PM2

PM2可以在,存储库中找到,你可以在任何地方安装它,以便从任何地方访问。


sudo npm install pm2 -g

结尾的-g标志表示我们希望会模块安装到全局模块文件夹,这会允许我们在项目目录之外使用,这是为了让我们的项目像正常的系统应用程序一样使用。

使用PM2启动我们的应用程序

安装PM2后,请导航回项目目录,启动应用程序的语法现在有点不同了,这就是我们用PM2来做的。


pm2 start index.js --name site

我们使用pm2 start函数,它为我们的应用程序创建一个概要文件,它名称为site,运行该命令后,网站会启动,但是,你会注意到日志不会显示,那是因为我们现在查看日志的方式不同。

 
pm2 logs site

 

你甚至可以指定要查看多少行日志,使用--lines参数。

结束语

你已经成功设置了Hapi.js web服务器,使用Nginx反向代理它,并学习如何更好地使用PM2管理它,通过这些知识,你可以进一步扩展本教程,并且制作一个非常高级的Hapi.js应用程序,要了解更多关于Hapi的可能性,访问他们的正式文档 ,如果你想了解更多关于PM2的可能性,请参考它们的快速入门指南

Yanyan profile image