海外サーバーvultr

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

これはNPMからHapi.jsをダウンロードし、それを私たちのプロジェクトディレクトリにインストールします。同じ実行で、Hapi.jsが依存する可能性のある依存関係も私たちの便宜のためにダウンロードされます。

サンプルアプリケーションの設定

今度は基本Hapi.jsアプリケーションファイルを設定します。これには、アプリケーション用のすべてのコードが含まれます。さらに進んでいくと、必要に応じてアプリケーションコードを拡張し、さらに多くのものを追加することができます。

次に、スタートファイルを作成します。ファイルの命名方法を正確に決定するにmainは、package.jsonファイルのセクションに戻って参照してください。デフォルトの命名規則を使用したので、このファイルが呼び出されindex.jsます。

nano index.js

ナノテキストエディタ内に入ったら、そのようにしてベースアプリケーションコードを作成します。

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

これでアプリケーションディレクトリに戻り、サイトを起動できます。サイトが起動したら、http://yourdomain.comまたはhttp://youripに移動すると、テキスト ” Hello World” が表示されます。

PM2をインストール

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の可能性についてもっと知りたい場合は、クイックスタートガイドを参照してください