boppanの日記

日々の備忘録

Apache HTTP Serverのインストール

Apache HTTP Server とは

  • Webサーバソフトウェア
  • 通称Apache
  • よくApache Tomcat(Webコンテナ)と連携する

初心者でもできる!Apacheをインストールする方法 | TechAcademyマガジン

Webサーバーはhttpで要求された「このページを表示してください」というリクエストに対して、「表示させるデータはこれです」という風に表示させるデータをレスポンスするための存在しています。

環境

インストール手順

Apache2.4.37のダウンロード及びインストール | Apacheインストール | Apache入門

  1. Visual C++ 再頒布可能パッケージのインストール
  2. ApacheインストーラーをDLする
  3. DLしたZipをインストールしたい場所に展開する
  4. /conf/httped.confを適宜編集する
  5. ApacheWindowsのサービスに登録する
  6. Apacheを起動して確認する

1. Visual C++ 再頒布可能パッケージのインストール

Microsoft Visual C++再頒布可能パッケージの互換性 - boppanの日記

Apache2.4.37のダウンロード及びインストール | Apacheインストール | Apache入門

Visual Studio を使ってビルドされた Visual C++ のアプリケーションを実行する場合には必要なランタイムコンポーネントがインストールされている必要があります。Window用Apacheのバイナリも Visual Studio を使ってビルドされていますのでランタイムが必要となります。

Apacheに必要なVisual C++ 再頒布可能パッケージが2015以降であれば最新のパッケージがインストールされていればよい。

2. ApacheインストーラーをDLする

Download - The Apache HTTP Server Project

最近のWindowsApacheバイナリは公式サイトには置いていない。

Apache httpd の Windows 版が公式サイトで配布されなくなったことへの対応 | WEB ARCH LABO

2014年末に Apache httpdWindowsインストーラが The Apache Software Foundation から配布されなくなったことに、皆さんはお気づきでしょうか? 今後はソースコードのみ提供されることがアナウンスされています。 今後はソースコードを自分自身でコンパイルするか、コンパイルしたバイナリを独自に配布しているサードパーティのものを利用することになります。
上記の通り、今後は ApacheHaus, Apache Lounge, XAMPP などのサードパーティ製の Apache httpd を利用するようにと The Apache Software Foundation がアナウンスしています。 今後も Windows マシンでの開発を続けていくのであれば、これらのバイナリを利用するように方向転換が必要でしょう。

Using Apache HTTP Server on Microsoft Windows - Apache HTTP Server Version 2.4

The Apache HTTP Server Project itself does not provide binary releases of software, only source code. Individual committers may provide binary packages > as a convenience, but it is not a release deliverable.
If you cannot compile the Apache HTTP Server yourself, you can obtain a binary package from numerous binary distributions available on the Internet.
Popular options for deploying Apache httpd, and, optionally, PHP and MySQL, on Microsoft Windows, include:
・ApacheHaus
Apache Lounge
・Bitnami WAMP Stack
・WampServer
・XAMPP

Apache単体をDLするなら「ApacheHaus」「Apache Lounge」だが、どちらも最新版のみの配布。
つまりちょっと前のApacheが使いたければコンパイルするしかない。

2.2.25以前のものなら公式アーカイブにある。
Index of /dist/httpd/binaries/win32

3. DLしたZipをインストールしたい場所に展開する

特にどこでも問題ないが、一般的なのはC:/ApacheC:/Program Files/Apache
バージョン違いをインストールしたければC:/Apache2.3C:/Apache2.4C:/Apache/2.3C:/Apache/2.4など。

4. /conf/httped.confを適宜編集する

インストールした場所に応じてパスを修正する。

ServerRoot "C:/Apache"
DocumentRoot "C:/Apache/htdocs"
<Directory "C:/Apache/htdocs">
<Directory "C:/Apache/cgi-bin">

ポートの変更が必要であれば修正する。(標準は80)

Listen 99999

サーバ名とポート番号(ServerName, Listen) - Apache基本設定 - Apache入門

ListenディレクティブはApacheが外部からリクエストを受け付けるポート番号を指定します。

必要であればファイル最後に追記する。

Apacheセキュリティ設定 - Qiita
Webサーバで指定すべきヘッダ - Qiita

脆弱性『httpoxy』に対処する | ぽちゃ猫.com

この脆弱性は、CGIまたは類似のコンテキストで動作しているWebアプリケーションが影響を受け、中間者攻撃(man-in-the-middle attack)を受けたり、サーバを任意のホストに接続させられたりする可能性があるそうです。
回避策
WebサーバーにてProxyヘッダーをブロックすることです。

クロスサイトスクリプティング(XSS)のセキュリティ対策とは? | セキュリティ対策 | CyberSecurityTIMES

攻撃者は、入力内容に、スクリプト付のリンクを貼る等の罠を仕掛けます。被害者となるユーザが誤って罠を実行する(リンクをクリックする等)と、セキュリティ的に問題のある別のウェブサイト(クロスサイト)に対し、脆弱性を利用した悪意を持った実行内容(スクリプト)が含まれた通信が実行されます。
その結果、偽のページがユーザに表示され様々な悪影響を引き起こします。例えば不正なポップアップが出たり入力フォームが立ち上がったりするときは要注意です。

Apache2.4セキュリティ「HTTP TRACEメソッドを無効化しCross-SiteTracing(XST = クロスサイトトレーシング)対策を行う」

Cross-Site Tracing(XST = クロスサイトトレーシング)
TraceメソッドによってHTTPリクエストヘッダの認証情報などを抜き取る攻撃(XSSとTRACEメソッドを組み合わせた攻撃手法)
Cookie情報やBasic認証のIDやパスワードなどが抜き出されてしまう可能性がある

クリックジャッキング

「悪意のあるサイト上の特定箇所をクリックさせ、別サイトの設定情報を変更させる」
攻撃手法の事です。
対策方法として、Web サイトから返されるHTTP レスポンスヘッダに、
「X-Frame-Options」 ヘッダを含めておくことで、ブラウザがこの値を解釈し、
クリックジャッキングを防止する(iframe内の表示を制御)手法があります。

Apacheから強制的にキャッシュを使わせないようにする方法 | A Day In The Boy's Life

この場合、例えばWebサーバー上のページを更新した場合とかにキャッシュが使われているクライアントとそうではないクライアントが出てきたり、一部のコンテンツだけキャッシュが聞いてしまってレイアウトが崩れてしまったりという現象を引き起こしてしまいます。
こういうときに、Apache側からHTTPヘッダを制御して強制的にキャッシュを使わないようにコントロールすることができたりします。
この設定は、Apacheのモジュールであるmod_headers を利用します。

Apacheのタイムアウトを設定する

Apacheタイムアウトは、リクエスト処理中のパケットの間隔をもとに待機時間を指定します。
リクエストのパケットが受け取られなくなり、指定した時間が過ぎると、コネクションが切断されます。

5. ApacheWindowsのサービスに登録する

rem Apacheが一つだけの場合
httpd -k install
rem 複数インストールしたい場合、名前を指定する
httpd -k install -n "Apache2.4"
> The Apache2.4 service is successfully installed.
> Testing httpd.conf....
> Errors reported here must be corrected before the service can be started.

登録成功。
confファイルのServerNameを設定していない場合、下記のエラーが発生するが特に問題なく起動はできる。

Apache起動時に「Could not reliably determine the server’s fully qualified domain name」のエラー | ex1-lab

> AH00558: httpd: Could not reliably determine the server's fully qualified 
> domain name, using localhost.localdomain. 
> Set the 'ServerName' directive globally to suppress this message

6. Apacheを起動して確認する

httped -k start -n "Apache2.4"

名前指定しない場合、デフォルトのApacheが起動されるため、複数インストールしている時は注意。

80番以外のポート番号を使用した場合のWebサーバへのアクセス | Apacheインストール | Apache入門

http://(Webサーバのホスト名):(Webサーバで使用しているポート番号)/...

今回であればhttp://localhost:9999/でアクセスできる。
「IT works!」と表示されていれば成功。

Apache Tomcatと連携したい場合

ApacheとTomcatの連携 - boppanの日記