序章

Apache HTTPサーバーは、世界で最も広く使用されているWebサーバーです。 動的にロード可能なモジュール、堅牢なメディアサポート、他の一般的なソフトウェアとの広範な統合など、多くの強力な機能を提供します。

このガイドでは、Debian10サーバーにApacheWebサーバーをインストールする方法について説明します。

前提条件

このガイドを開始する前に、サーバーにsudo権限を持つ通常の非rootユーザーが設定されている必要があります。 さらに、必須ではないポートをブロックするには、基本的なファイアウォールを有効にする必要があります。 通常のユーザーアカウントを設定し、サーバーのファイアウォールを設定する方法については、Debian10初期サーバー設定ガイドに従ってください。

利用可能なアカウントがある場合は、root以外のユーザーとしてログインして開始します。

ステップ1—Apacheをインストールする

ApacheはDebianのデフォルトのソフトウェアリポジトリ内で利用可能であり、従来のパッケージ管理ツールを使用してインストールすることができます。

最新のアップストリームの変更を反映するようにローカルパッケージインデックスを更新することから始めましょう。

  1. sudo apt update

次に、をインストールします apache2 パッケージ:

  1. sudo apt install apache2

インストールを確認した後、 apt Apacheと必要なすべての依存関係をインストールします。

ステップ2—ファイアウォールを調整する

Apacheをテストする前に、ファイアウォール設定を変更して、デフォルトのWebポートへの外部アクセスを許可する必要があります。 前提条件の指示に従ったと仮定すると、サーバーへのアクセスを制限するようにUFWファイアウォールを構成する必要があります。

インストール中に、ApacheはUFWに登録して、ファイアウォールを介したApacheへのアクセスを有効または無効にするために使用できるいくつかのアプリケーションプロファイルを提供します。

リストする ufw 次のように入力してアプリケーションプロファイルを作成します。

  1. sudo ufw app list

アプリケーションプロファイルのリストが表示されます。

Output
Available applications: AIM Bonjour CIFS . . . WWW WWW Cache WWW Full WWW Secure . . .

ApacheプロファイルはWWWで始まります。

  • WWW :このプロファイルはポート80(通常の暗号化されていないWebトラフィック)のみを開きます
  • WWWキャッシュ:このプロファイルはポート8080のみを開きます(キャッシュやWebプロキシに使用されることもあります)
  • WWW Full :このプロファイルは、ポート80(通常の暗号化されていないWebトラフィック)とポート443(TLS / SSL暗号化トラフィック)の両方を開きます
  • WWW Secure :このプロファイルはポート443(TLS / SSL暗号化トラフィック)のみを開きます

構成したトラフィックを引き続き許可する最も制限の厳しいプロファイルを有効にすることをお勧めします。 このガイドではまだサーバーのSSLを構成していないため、ポート80でのトラフィックのみを許可する必要があります。

  1. sudo ufw allow 'WWW'

次のように入力して、変更を確認できます。

  1. sudo ufw status

表示された出力に許可されたHTTPトラフィックが表示されます。

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere WWW ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW (v6) ALLOW Anywhere (v6)

ご覧のとおり、プロファイルはWebサーバーへのアクセスを許可するようにアクティブ化されています。

ステップ3—Webサーバーを確認する

インストールプロセスの最後に、Debian10はApacheを起動します。 Webサーバーはすでに稼働しているはずです。

に確認してください systemd 次のように入力して、サービスが実行されていることを確認するinitsystem。

  1. sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-07-19 15:33:01 UTC; 4min 13s ago Docs: https://httpd.apache.org/docs/2.4/ . . . Jul 19 15:33:01 debssh systemd[1]: Starting The Apache HTTP Server... Jul 19 15:33:01 debssh apachectl[2791]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive global Jul 19 15:33:01 debssh systemd[1]: Started The Apache HTTP Server.

この出力からわかるように、サービスは正常に開始されたように見えます。 ただし、これをテストする最良の方法は、Apacheにページを要求することです。

デフォルトのApacheランディングページにアクセスして、ソフトウェアがIPアドレスを介して正しく実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、コマンドラインからいくつかの異なる方法で取得できます。

サーバーのコマンドプロンプトで次のように入力してみてください。

  1. hostname -I

スペースで区切られたいくつかのアドレスが返されます。 Webブラウザーでそれぞれを試して、機能するかどうかを確認できます。

別の方法は、 curl ツール。インターネット上の別の場所から見たパブリックIPアドレスを提供します。

まず、インストールします curl を使用して apt:

  1. sudo apt install curl

次に、 curl IPv4を使用してicanhazip.comを取得するには:

  1. curl -4 icanhazip.com

サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力します。

http://your_server_ip

デフォルトのDebian10ApacheWebページが表示されます。

このページは、Apacheが正しく機能していることを示しています。 また、重要なApacheファイルとディレクトリの場所に関する基本的な情報も含まれています。

ステップ4—Apacheプロセスの管理

Webサーバーが稼働しているので、いくつかの基本的な管理コマンドを見ていきましょう。

Webサーバーを停止するには、次のように入力します。

  1. sudo systemctl stop apache2

停止時にWebサーバーを起動するには、次のように入力します。

  1. sudo systemctl start apache2

サービスを停止してから再開するには、次のように入力します。

  1. sudo systemctl restart apache2

単に構成を変更するだけの場合、Apacheは接続を切断せずにリロードできることがよくあります。 これを行うには、次のコマンドを使用します。

  1. sudo systemctl reload apache2

デフォルトでは、Apacheはサーバーの起動時に自動的に起動するように構成されています。 これが希望どおりでない場合は、次のように入力してこの動作を無効にします。

  1. sudo systemctl disable apache2

起動時にサービスを再度有効にするには、次のように入力します。

  1. sudo systemctl enable apache2

サーバーが再起動すると、Apacheが自動的に起動するようになりました。

Apache Webサーバーを使用する場合、仮想ホスト(Nginxのサーバーブロックと同様)を使用して、構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。 次のコマンドで、 replace your_domain 独自のドメイン名。 DigitalOceanを使用したドメイン名の設定の詳細については、DigitalOceanDNSの概要を参照してください。

Debian 10上のApacheでは、デフォルトで1つのサーバーブロックが有効になっており、 /var/www/html ディレクトリ。 これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は扱いにくくなる可能性があります。 変更する代わりに /var/www/html、内にディレクトリ構造を作成しましょう /var/www 私たちのために your_domain サイト、去る /var/www/html クライアント要求が他のサイトと一致しない場合に提供されるデフォルトのディレクトリとして配置されます。

のディレクトリを作成します your_domain 次のように、 -p 必要な親ディレクトリを作成するためのフラグ:

  1. sudo mkdir -p /var/www/your_domain

次に、ディレクトリの所有権を $USER 環境変数:

  1. sudo chown -R $USER:$USER /var/www/your_domain

変更していない場合は、Webルートの権限が正しいはずです。 unmask 値ですが、次のように入力して確認できます。

  1. sudo chmod -R 755 /var/www/your_domain

次に、サンプルを作成します index.html 使用するページ nano またはお気に入りの編集者:

  1. nano /var/www/your_domain/index.html

内部に、次のサンプルHTMLを追加します。

/var/www/your_domain/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

終了したら、ファイルを保存して閉じます。

Apacheがこのコンテンツを提供するには、正しいディレクティブを使用して仮想ホストファイルを作成する必要があります。 にあるデフォルトの構成ファイルを変更する代わりに /etc/apache2/sites-available/000-default.conf 直接、で新しいものを作りましょう /etc/apache2/sites-available/your_domain.conf:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

次の構成ブロックに貼り付けます。これはデフォルトに似ていますが、新しいディレクトリとドメイン名用に更新されています。

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerAdmin admin@your_email_domain
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

を更新したことに注意してください DocumentRoot 新しいディレクトリに ServerAdmin そのメールに your_domain サイト管理者がアクセスできます。 また、2つのディレクティブを追加しました。 ServerName、この仮想ホスト定義に一致する必要があるベースドメインを確立し、 ServerAlias、ベース名であるかのように一致する必要がある追加の名前を定義します。

終了したら、ファイルを保存して閉じます。

でファイルを有効にしましょう a2ensite 道具:

  1. sudo a2ensite your_domain.conf

で定義されているデフォルトサイトを無効にする 000-default.conf:

  1. sudo a2dissite 000-default.conf

次に、構成エラーをテストしましょう。

  1. sudo apache2ctl configtest

次の出力が表示されます。

Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

Apacheを再起動して、変更を実装します。

  1. sudo systemctl restart apache2

これで、Apacheがドメイン名を提供するはずです。 次の場所に移動して、これをテストできます。 http://your_domain、次のようなものが表示されます。

ステップ6–重要なApacheファイルとディレクトリに精通する

Apacheサービス自体を管理する方法がわかったので、いくつかの重要なディレクトリとファイルに慣れるために数分かかる必要があります。

コンテンツ

  • /var/www/html:実際のWebコンテンツは、デフォルトでは前に見たデフォルトのApacheページのみで構成されており、 /var/www/html ディレクトリ。 これは、Apache構成ファイルを変更することで変更できます。

サーバー構成

  • /etc/apache2:Apache構成ディレクトリ。 すべてのApache構成ファイルはここにあります。
  • /etc/apache2/apache2.conf:メインのApache構成ファイル。 これを変更して、Apacheグローバル構成を変更できます。 このファイルは、構成ディレクトリ内の他の多くのファイルをロードする役割を果たします。
  • /etc/apache2/ports.conf:このファイルは、Apacheがリッスンするポートを指定します。 デフォルトでは、Apacheはポート80でリッスンし、SSL機能を提供するモジュールが有効になっている場合はさらにポート443でリッスンします。
  • /etc/apache2/sites-available/:サイトごとの仮想ホストを保存できるディレクトリ。 Apacheは、これらがリンクされていない限り、このディレクトリにある設定ファイルを使用しません。 sites-enabled ディレクトリ。 通常、すべてのサーバーブロックの構成はこのディレクトリで行われ、他のディレクトリにリンクすることで有効になります。 a2ensite 指図。
  • /etc/apache2/sites-enabled/:有効なサイトごとの仮想ホストが保存されているディレクトリ。 通常、これらは、にある構成ファイルにリンクすることによって作成されます。 sites-available ディレクトリと a2ensite. Apacheは、完全な設定をコンパイルするために起動またはリロードするときに、このディレクトリにある設定ファイルとリンクを読み取ります。
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/:これらのディレクトリは、 sites-availablesites-enabled ディレクトリですが、仮想ホストに属していない構成フラグメントを格納するために使用されます。 内のファイル conf-available ディレクトリはで有効にすることができます a2enconf コマンドを使用して無効にします a2disconf 指図。
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/:これらのディレクトリには、それぞれ使用可能なモジュールと有効なモジュールが含まれています。 で終わるファイル .load 特定のモジュールをロードするためのフラグメントが含まれ、ファイルの末尾が .conf それらのモジュールの構成が含まれています。 モジュールは、を使用して有効または無効にできます a2enmoda2dismod 指図。

サーバーログ

  • /var/log/apache2/access.log:デフォルトでは、Apacheが別の方法で設定されていない限り、Webサーバーへのすべてのリクエストがこのログファイルに記録されます。
  • /var/log/apache2/error.log:デフォルトでは、すべてのエラーがこのファイルに記録されます。 The LogLevel Apache構成のディレクティブは、エラーログに含まれる詳細を指定します。

結論

Webサーバーがインストールされたので、提供できるコンテンツの種類と、より豊かなエクスペリエンスを作成するために使用できるテクノロジーについて、多くのオプションがあります。

より完全なアプリケーションスタックを構築したい場合は、 Debian10でLAMPスタックを構成する方法に関するこの記事を参照してください。