在Ubuntu 16.04上,使用Node.js创建一个Hapi.js Web应用程序
Yanyan
・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.com
或http://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的可能性,请参考它们的快速入门指南 。