Ubuntu 16.04でNode.jsを使用してHapi.js Webアプリケーションを作成する

Hapi.jsは、Node.jsエコシステムでWebアプリケーションを構築するために設計された、リッチで堅牢、かつ強力なNode.jsフレームワークです。その簡単な設計により、簡単に始めることができます。Hapiは、ES6のプロミスなど、最新のJavaScript ES6機能の多くをコアで使用しています。以前にExpressを使用したことがある方は、Hapiを使用して新しいことを試し、最新のJavaScript機能をすべて体験することができます。

このチュートリアルの目標は、Vultr VPSからホストされている基本的なHapi.js WebページをUbuntu 16.04 LTSに設定することです。サイトのドメインをお持ちの場合は、リバースプロキシを使用してドメインをウェブサイトにリンクします。最後に、プロセスマネージャーで管理する方法を学びます。これで問題が解決したので、始めましょう。

Node.jsのインストール

Node.jsをインストールする必要があります。Ubuntu 16.04 LTSでこれを行うには、次の手順に従います。

リポジトリの追加

Node.jsの最新のLTSリリースを含むNodeSource APTリポジトリを追加する必要があります。

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

これにより、Napiから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に指示しています80。また、プロキシパススルーをlocalhostアドレスとポート3000に設定しています。これは、Hapiアプリケーションと同じポートです。

これで、アプリケーションディレクトリに戻ってサイトを開始できます。サイトが開始したら、http://yourdomain.comまたはhttp://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の可能性の詳細については、クイックスタートガイドをご覧ください



Leave a Comment

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

Ubuntu 14.10へのMcMyAdminのインストール

Ubuntu 14.10へのMcMyAdminのインストール

McMyAdminは、サーバーの管理に使用されるMinecraftサーバーコントロールパネルです。McMyAdminは無料ですが、複数のエディションがあり、一部はパイです

LinuxでTeamTalk Serverをセットアップする

LinuxでTeamTalk Serverをセットアップする

TeamTalkは、ユーザーが高品質のオーディオ/ビデオ会話、テキストチャット、ファイルの転送、および画面の共有を可能にする会議システムです。それは

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ruby on Railsは、プログラマーの生産性を向上させるために開発されたRubyの人気のあるWebフレームワークです。ただし、さまざまな宝石と依存関係を取得する

Vultr VPSにアクセスする方法

Vultr VPSにアクセスする方法

Vultrは、VPSにアクセスして構成、インストール、および使用するためのいくつかの異なる方法を提供します。アクセス認証情報VPS arのデフォルトのアクセス認証情報

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

GolangはGoogleが開発したプログラミング言語です。汎用性、シンプルさ、信頼性のおかげで、Golangは最も人気のあるものの1つになりました

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

別のシステムを使用していますか?DokuWikiは、データベースを必要としないPHPで記述されたオープンソースのWikiプログラムです。データをテキストファイルに保存します。ドクウィク

DebianでのChrootのセットアップ

DebianでのChrootのセットアップ

この記事では、Debianでchroot jailをセットアップする方法を説明します。私はあなたがDebian 7.xを使っていると思います。Debian 6または8を実行している場合、これは機能する可能性があります、bu

DebianにPiVPNをインストールする方法

DebianにPiVPNをインストールする方法

はじめにDebianでVPNサーバーを設定する簡単な方法は、PiVPNを使用することです。PiVPNは、OpenVPNのインストーラーおよびラッパーです。それはあなたのための簡単なコマンドを作成します

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

別のシステムを使用していますか?BigTree CMS 4.2は、高速で軽量な無料のオープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)であり、

Debian 9でソースからBrotliをビルドする方法

Debian 9でソースからBrotliをビルドする方法

別のシステムを使用していますか?Brotliは、Gzipよりも圧縮率が高い新しい圧縮方法です。そのソースコードはGithubで公開されています。ティ

PleskサーバーでHTTP / 2を有効にする方法

PleskサーバーでHTTP / 2を有効にする方法

PleskはネイティブのHTTP / 2サポートを備えています。PleskでのHTTP / 2のロールアウトは、他のコンポーネントに比べてはるかに簡単ですが、その導入プロセスには慎重な計画が必要です

FreeBSD 12にosTicketをインストールする方法

FreeBSD 12にosTicketをインストールする方法

別のシステムを使用していますか?osTicketは、オープンソースのカスタマーサポートチケットシステムです。osTicketのソースコードはGithubで公開されています。このチュートリアルでは

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。