Ubuntu 16.04 LTSでKoa.jsノードアプリケーションをセットアップする方法

このチュートリアルでは、Node.jsを利用して、Koa.js Webアプリケーションを本番用に設定する方法を学習します。また、Apacheを使用して、リバースプロキシを使用してサンプルドメインをリンクし、適切なプロセスマネージャーでそれを管理する方法を学びます。さっそく始めましょう。

Node.js、Koa.js、Apacheの簡単な説明

Node.jsは、ChromeのV8エンジンに基づく高速なクロスプラットフォームJavaScriptフレームワークです。デスクトップアプリケーションとサーバーアプリケーションの両方で使用され、シングルスレッドのイベントループ処理で有名です。Node.jsは、50万以上のパッケージをホストするNode Package Manager(NPM)と呼ばれるパッケージレジストリを備えています。NPMパッケージ(またはモジュール)は、Node.jsアプリケーションで役立つコミュニティ主導のコードであるため、Node.jsのコアバックボーンです。私たちのKoa.jsアプリでは、Node.jsがその機能の中核です。

Koa.jsは、Node.jsプラットフォーム上に構築された最小限のWebフレームワークです。人気のあるExpress.jsフレームワークの背後にある同じチームによって作成されたその目標は、ミドルウェアをコアから除外することにより、すでに最小限のExpress.jsフレームワークをさらに最小限に抑えることです。Koa.jsの主な機能は、コールバックがないことです。Koa.jsは、ES6ベースのジェネレーターとPromisesなどのES6機能に基づいて構築されています。

Apacheは人気のあるオープンソースのWebサーバーであり、Webサーバーの非常に基本的な出発点として使用されます。このチュートリアルでは、アプリケーションをサンプルドメインにリンクできるリバースプロキシとしてApacheを使用します。ドメインがない場合でも、このチュートリアルは機能します。唯一の違いは、WebサイトがドメインではなくVPS IPで実行されることです。

Node.jsの設定

Node.jsフレームワークと同様に、VPSにNode.jsをインストールする必要があります。このチュートリアルでは、システムにNode.jsがすでにインストールされているものとします。そうでない場合は、こちらの手順に従ってください。

アプリケーションディレクトリの設定

アプリケーションのコアファイルを含むフォルダーを作成する必要があります。

mkdir site

siteディレクトリに任意の名前に置き換えてかまいません。次に、Node.jsパッケージファイルを初期化する必要があります。作成したディレクトリに移動してを実行npm initし、プロンプトを完了します。最終的には、次のようになります。

{
  "name": "site",
  "version": "1.0.0",
  "description": "Koa.js Site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "yourname",
  "license": "ISC"
}

Koa.jsのインストール

これでディレクトリが設定されたので、Koa.jsのインストールに進むことができます。現在の作業ディレクトリで/site、次のように入力します。

npm install koa

これにより、NPMからKoa.jsモジュールがダウンロードされ、将来使用するためにプロジェクトディレクトリにインストールされます。次に、アプリのコードを保持するサンプルアプリケーションファイルを作成します。これを行うには、index.jsファイルを作成します。

nano index.js

ファイルに入ったら、サンプルアプリケーションを作成します。

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
     ctx.body = 'Hello World';
 });

app.listen(3000);
console.log('Website is live!')

ファイルを保存して閉じます。CTRL+ X

アプリケーションが適切に実行されることを確認します。起動するには、を実行するnode index.jsWebsite is live、コンソールに表示されます。

Apacheのインストール

Webサイトが機能していることがわかったので、Apacheとその依存関係のインストールに進むことができます。

sudo apt install -y libapache2-mod-proxy-html libxml2-dev

Apacheにあるリバースプロキシ機能を使用するには、必要なモジュールを有効にする必要があります。

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

これらのモジュールの一部は既に有効になっている可能性がありますが、常に再確認することをお勧めします。

次に、Apacheのデフォルト設定ファイルを編集する必要があります。

sudo nano /etc/apache2/sites-enabled/000-default.conf

ここでは、アプリケーションのブロックを追加する必要があります。

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass / http://0.0.0.0:3000/
    ProxyPassReverse / http://0.0.0.0:3000

    ServerName localhost
</VirtualHost>

ファイルを保存しますCTRL+ X

3000私たちがIP ProxyPassProxyPassReverseIPのポートとしてポートを使用していることに気付くでしょう。これは、Koa.jsアプリケーションを実行しているのと同じポートであるため、正しいポートを入力する必要があります。

変更を加えたら、Apacheを再起動してKoa.jsアプリケーションを再起動する必要があります。

sudo systemctl restart apache2

これにより、Koa.jsアプリケーションを起動したときに、構成ファイルがアクティブになり、動作するようになります。Apacheが再起動したら、サイトディレクトリに戻り、以前と同じようにKoa.jsアプリケーションを起動します。Webブラウザーからhttp://yourdomain、またはに移動すると、http://yourip:「Hello World」が表示されます。

systemdを使用したアプリケーションの管理

サンプルのKoa.jsアプリケーションを作成するための基本を説明したので、実稼働環境では、現在のようにアプリケーションを開始することは非現実的であることがわかります。プロセスマネージャーは間違いなく要件です。そこでsystemdが登場します。簡単に言うと、systemdはLinuxシステムのビルディングブロックを提供するソフトウェアで構成されています。「init」と同様に、システム起動後にユーザープロセスを管理するシステムを提供します。アプリケーションの場合、systemdを使用すると、システムのアップタイムを妨害するイベントが発生した場合に、システムの再起動後に自動的にWebサイトを起動できます。また、アプリケーションの管理に役立つ一連のツールも提供します。一番のメリットは、Ubuntu 16.04 LTSに組み込まれているため、追加のソフトウェアをインストールする必要がないことです。

systemdサービスを作成する

アプリケーションを起動するために必要なものはすべて、というファイルに含まれていますservice。名前、ディレクトリ、環境など、アプリに関する詳細を保持します。システムファイルを作成するには、テキストエディターを開きます。

sudo nano /lib/systemd/system/site.service

このようにファイルを編集して保存します。

[Unit]
Description=desc here
Documentation=https://example.com
After=network.target

[Service]
Environment=NODE_PORT=3000
Type=simple
User=youruser
ExecStart=/usr/bin/node /home/[youruser]/site/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

youruserサーバーのユーザー名に置き換えます。重要なフィールドを簡単に説明します。

  • After -これは、アプリケーションを開始する前に、ネットワークインターフェースの準備ができるまで待機するようにsystemdに通知します。
  • Environment-ここで、アプリケーションの環境変数を指定できます。Node.jsへの移植はその1つです。
  • Type -これはsystemdに、ユーザー権限などをフォークすることなく、アプリを起動できることを通知します。
  • User-これはsystemdに、推奨されるユーザーアカウントでアプリケーションを実行することを伝えます。rootユーザーとしてアプリケーションを実行すると、多くのセキュリティ侵害が発生する可能性があります。
  • ExecStart -本質的に、以前に手動で開始した方法と同様に、systemdがアプリケーションを開始するために実行するコマンド。
  • Restart-アプリケーションを再起動する条件をsystemdに指示します。この場合、エラーが発生した場合にウェブサイトを再起動する必要があります。

systemdサービスを開始します

systemdサービスを開始する準備が整いました。

sudo systemctl daemon-reload

これは、systemdが新しい変更を登録するためにsystemdサービスファイルが変更されるたびに必要です。

次に、アプリケーションを起動します。

sudo systemctl start site

もう一度ブラウザでサイトに移動し、すべてが機能していることを確認します。

主要なsystemd管理機能

  • stop -アプリケーションを完全に停止します。
  • restart -アプリケーションを停止し、新しいプロセスで再起動します。
  • enable -コンピューターを起動するたびにsystemdにアプリケーションを起動するように指示します。
  • status -稼働時間、アプリケーションの状態など、現在実行中のアプリケーションに関する情報を表示します。

これらの関数を使用するには、次を実行します。

systemctl <function> site

結論

Koa.jsアプリケーションを正常にセットアップし、それをリバースプロキシする方法と、systemdで管理する方法を学びました。これで、アプリケーションを拡張し、この例を基に構築する準備ができました。Koa.jsの詳細、および実行できることの詳細については、それぞれのWebサイトにアクセスして、より役立つ情報を入手してください。それに加えて、systemdのプロセスマネージャーの詳細については、こちらのドキュメントをご覧ください。最後に、Apacheのリバースプロキシについてさらに詳しく知りたい場合は、こちらからお気軽にチェックしてください



Leave a Comment

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の未来は、日々成長を続けています。