初心者向けの Apache チュートリアル
⚡ スマートサマリー
Apache HTTP Server はパブリック Web の半分以上を支えており、このリソースではそのアーキテクチャ、インストール パス、仮想ホスティング モデル、セキュリティ強化、ログ記録、本番環境への展開を詳しく解説し、管理者が Linux 上で自信を持って運用できるようにします。 Windowsまたは macOS 環境。

アパッチとは?
Apache は優れたアプリケーション ソフトウェアです。世界で最も広く使用されている Web サーバー アプリケーションであり、商用 Web サーバー 市場で 50% 以上のシェアを占めています。Apache は Unix 系オペレーティングシステムで最も広く使用されている Web サーバー アプリケーションですが、ほぼすべてのプラットフォームで使用できます。 WindowsOS X、OS/2など。アパッチという言葉は、戦争と戦略立案のスキルで有名なネイティブアメリカンの部族、アパッチ族の名前から取られています。
これはモジュール式のプロセスベースのWebサーバーアプリケーションで、同時接続ごとに新しいスレッドを作成します。多くの機能をサポートしており、その多くは個別のモジュールとしてコンパイルされ、コア機能を拡張し、サーバーサイドプログラミング言語のサポートから認証メカニズムまで、あらゆる機能を提供します。仮想ホスティングはそのような機能の1つで、1台のApache Webサーバーで同じハードウェアから複数の異なるWebサイトを提供できます。
Apacheのインストール方法
Apacheを導入する前に、利用可能なさまざまなインストール方法を理解しておくことが重要です。パッケージまたはアプリケーションをインストールする方法は数多くあり、以下にその例を示します。
- このオープンの特徴の一つが、 ソースとなるWebアプリケーションの特長は、誰でも自分の環境に合わせてインストーラーを作成できることです。 これにより、Debian、Red Hat、FreeBSD、SUSEなどの様々なベンダーが、インストールされている他のアプリケーションやベースとなるOSを考慮に入れながら、Apacheのファイルの位置や設定をカスタマイズすることが可能になった。
- ベンダー提供のインストーラーを使用する以外にも、ソースコードからビルドしてインストールするという方法もあります。ソースファイルからApacheをインストールする方法はプラットフォームに依存せず、ほぼすべてのOSで動作します。
Apacheウェブサーバーはモジュール式のアプリケーションであり、管理者は必要な機能を選択し、要件に応じてさまざまなモジュールをインストールできます。
すべてのモジュールは次のようにコンパイルできます 動的共有オブジェクト (DSOとは、複数のアプリケーションが実行中に共有できるオブジェクトファイルです。)メインのApacheバイナリとは別に存在します。DSO方式は強く推奨されます。サーバー構成へのモジュールの追加、削除、更新が非常に簡単になります。
Apacheのインストール:Linuxプラットフォーム
Red Hat または rpm ベースのシステムの場合
Red Hat、Fedora、CentOS、SUSEなど、rpm(Red Hat Package Manager、Linuxシステムにアプリケーションをインストールするためのユーティリティ)ベースのLinuxディストリビューションを使用している場合は、ベンダー固有のパッケージマネージャを使用するか、利用可能なソースtarballからrpmファイルを直接ビルドすることで、このアプリケーションをインストールできます。
CentOS、Red Hat、Fedoraなど、すべてのRed Hat系ディストリビューションに標準搭載されているパッケージマネージャーを使用してApacheをインストールできます。
[root@amsterdam ~]# yum install httpd
Apacheのソースtarballは、以下のコマンドを使用してrpmファイルに変換できます。
[root@amsterdam ~]# rpmbuild -tb httpd-2.4.x.tar.bz2
ソースコードから.rpmファイルを作成するには、サーバーに-develパッケージがインストールされていることが必須です。
ソースファイルをrpmインストーラーに変換したら、以下のコマンドを使用してApacheをインストールできます。
[root@amsterdam ~]# rpm -ivh httpd-2.4.4-3.1.x86_64.rpm
インストール後、サーバーは自動的に起動しません。サービスを開始するには、Fedora、CentOS、またはRed Hat上で以下のいずれかのコマンドを実行する必要があります。
[root@amsterdam ~]# /usr/sbin/apachectl start [root@amsterdam ~]# service httpd start [root@amsterdam ~]# /etc/init.d/httpd start
ソースから Apache をインストールする
パッケージマネージャのビルドが環境と合わない場合は、ソースからのインストールで完全に制御できます。ソースからApacheをインストールするには、サーバーに-develパッケージがインストールされている必要があります。Apacheの最新バージョンは、次の場所からダウンロードできます。 公式Apacheダウンロードページソースファイルをダウンロードしたら、それを/usr/local/srcフォルダに移動してください。
[root@amserversterdam ~] cd /usr/local/src [root@amserversterdam ~] gzip -d httpd-2.2.26.tar.gz [root@amserversterdam ~] tar xvf httpd-2.2.26.tar [root@amserversterdam ~] httpd-2.2.26
Apacheで利用可能なすべての設定オプションを確認するには、`./configure –help`オプションを使用します。最も一般的な設定オプションは`–prefix={インストールディレクトリ名}`です。
[root@amserversterdam ~]./configure --help [root@amserversterdam ~]./configure --prefix=/usr/local/apache --enable-so [root@amserversterdam ~] make [root@amserversterdam ~] make install
上記の例は、/usr/local/apache ディレクトリ内で DSO 機能を有効にして Apache をコンパイルする例を示しています。–enable-so オプションを使用すると、再コンパイルを必要とせず、DSO メカニズムを介して実行時に必要なモジュールを Apache にロードできます。
インストールが完了したら、お好みのブラウザでWebサーバーのデフォルトページを閲覧できます。サーバーでファイアウォールが有効になっている場合は、OSのファイアウォールでポート80の例外設定を行う必要があります。ポート80を開くには、以下のコマンドを使用してください。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
サービスiptables save
デフォルトが表示されます Apache2 のようこそ画面 サーバーのIPアドレスにアクセスしてください。
仮想ホストとは何ですか?
Apache が起動したら、次の論理的なステップは、同じマシンで複数のサイトをホストする方法を学ぶことです。Apache Web サーバーは、同じマシンで複数の Web サイトをホストできます。 同じ サーバー。各ウェブサイトごとに個別のサーバーマシンとApacheソフトウェアは必要ありません。これは、 仮想ホスト or Vホスト。
ウェブサーバー上でホストしたいドメインは、それぞれApacheの設定ファイルに個別のエントリとして追加されます。
Apache Virtualhost の種類
- 名前ベースの仮想ホスト
- アドレスベースまたはIPベースの仮想ホスト
名前ベースの仮想ホスト
名前ベースの仮想ホスティングは、単一のIPアドレス上で複数の仮想サイトをホストするために使用されます。
名前ベースの仮想ホスティングを構成するには、目的のすべての Web サイトに対する Apache リクエストを受信する IP アドレスを設定する必要があります。これは、Apache 設定内の NameVirtualHost ディレクティブを使用して行うことができます。 httpd.conf または apache2.conf ファイル。
Apache 仮想ホストの例:
NameVirtualHost *:80 <VirtualHost 192.168.0.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.0.108:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
環境に応じて必要な数の仮想ホストを追加できます。Web設定ファイルは、以下のコマンドで確認できます。
[root@amsterdam ~]#httpd -t
Syntax OK
設定ファイルの構文が正しくない場合、エラーが発生します。
[root@115 conf.d]# httpd -t
Syntax error on line 978 of /etc/httpd/conf/httpd.conf:
Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration
IPベースの仮想ホスト
IPアドレスベースの仮想ホスティングを設定するには、サーバーに複数のIPアドレスを設定する必要があります。そのため、Apacheが提供できる仮想ホストの数は、サーバーに設定されているIPアドレスの数によって決まります。サーバーに10個のIPアドレスが設定されている場合、10個のIPアドレスベースの仮想ホストを作成できます。
上記の図では、example1.comとexample2.comという2つのウェブサイトに異なるIPアドレスが割り当てられ、IPベースの仮想ホスティングを使用しています。
Listen 192.168.0.100:80 <VirtualHost 192.168.10.108:80> ServerAdmin webmaster@example1.com DocumentRoot /var/www/html/example1.com ServerName www.example1.com </VirtualHost> <VirtualHost 192.168.10.109:80> ServerAdmin admin@example2.com DocumentRoot /var/www/html/example2.com ServerName www.example2.com </VirtualHost>
ApacheとNginxの比較:簡単な比較
新規導入を計画する際、ApacheとNginxはしばしば比較検討されます。以下の表は、最も一般的な判断基準をまとめたものです。
| 因子 | Apache HTTP Server | nginx |
|---|---|---|
| 処理モデル | 接続ごとにプロセスまたはスレッドを処理(プリフォーク、ワーカー、イベントMPM) | イベント駆動型、非同期 |
| ディレクトリごとの.htaccessファイルの上書きがサポートされています。 | 一元化された設定、.htaccess は不要 | |
| 動的コンテンツ | mod_phpやその他のモジュールは、プロセス内にランタイムを埋め込む。 | PHP-FPMまたは外部アプリケーションサーバーへのプロキシ |
| 静的ファイルのスループット | 強力だが、接続あたりのメモリ使用量が多い | 非常に高い同時実行性にも優れている |
| モジュールエコシステム | 非常に大きい。実行時にDSOとしてロードされる。 | コンパイル済みモジュールまたは動的モジュール、より小規模なエコシステム |
| 典型的な使用例 | 共有ホスティング、.htaccessワークフロー、混合動的アプリ | Reverse プロキシ、静的配信、高同時実行エンドポイント |
Php ファイルを実行するには Apache に何が必要ですか?
Apache上でPHPファイルを実行するには mod_phpの サーバー上で有効化してください。これにより、Apacheが.phpファイルを解釈できるようになります。Apache内でPHPコードを解釈し、HTMLをWebサーバーに送信するPHPハンドラーが含まれています。
サーバーで mod_php が有効になっている場合、/etc/httpd/conf.d/ ディレクトリに php.conf というファイルが作成されます。以下のコマンドで確認することもできます。
httpd -M | grep "php5_module"
出力は次のようになります。
Apache の Php ハンドラー
- mod_phpの
- CGI
- 高速CGI
- 補足
mod_phpの これは最も古いPHPハンドラであり、PHPをApacheの一部として動作させ、外部のPHPプロセスを呼び出すことはありません。このモジュールはすべてのLinuxディストリビューションのリポジトリにデフォルトでインストールされているため、有効化または無効化は非常に簡単です。
使用している場合 高速CGI PHP ハンドラーとして、サーバー上のさまざまなアカウントで使用されるように複数のバージョンの PHP を設定できます。
FastCGI、つまり、 mod_fastcgiのは、 mod_fcgidここで、 mod_fcgid は、CGI(mod_cgi)に代わる高性能な代替手段です。同時Webリクエストを処理するために十分な数のCGIインスタンスを起動します。また、suexecを使用して、異なるユーザーがそれぞれ独自のPHPインスタンスを使用できるようにし、Webセキュリティを向上させます。
Apache上でRubyファイルを実行するには、mod_rubyを有効にする必要があります。ApacheはFastCGIを介してRubyファイルを処理することもできます。mod_fcgid(FastCGI)を使用すれば、複数のバージョンのRubyを同時に使用することも可能です。
Apache Passengerをインストールして、Apacheを設定してRubyページの配信に利用することもできます。
(フュージョン・パッセンジャー、別名「旅客(これはApacheおよびNginxと統合するように設計された無料のWebサーバーモジュールです。)
サーバーにmod_rubyをインストールする手順:
cd /tmp wget http://www.modruby.net/archive/mod_ruby-1.2.6.tar.gz tar zxvf mod_ruby-1.2.6.tar.gz cd mod_ruby-1.2.6/ ./configure.rb --with-apr-includes=/usr/include/apr-1 make make install
Apache で Ruby を実行する方法
Apacheの設定ファイル、つまり/etc/httpd/conf.d/ruby.confにmod_rubyモジュールを追加し、次の行を追加する必要があります。
LoadModule Ruby_module modules/mod_ruby.so
これらのモジュールを有効または無効にするには、Apacheの設定ファイルを編集し、これらのモジュールをコメントアウトまたはコメント解除する必要があります。ただし、Webサーバーが既にこれらのモジュールを含めてコンパイルされている場合に限ります。
Apache Web サーバーを保護する方法
Apacheが適切なコンテンツを配信できるようになったら、次に優先すべきはセキュリティ対策です。Webサーバーのセキュリティ確保は非常に重要です。それは、意図した情報のみを他者に公開し、データを保護し、アクセスを制限することを意味します。
これらは、Apacheウェブサーバーのセキュリティを強化するための一般的な手法です。
1) ApacheのバージョンとOS情報を非表示にする
Apacheは、以下のスクリーンショットに示すように、エラーメッセージにバージョンとオペレーティングシステム名を表示します。
攻撃者はこの情報を利用して、特定のバージョンのサーバーまたはOSに存在する公開されている脆弱性を悪用した攻撃を仕掛けることができる。
Apacheがこの情報を表示しないようにするには、Apache設定ファイルにある「サーバー署名」オプションを変更する必要があります。デフォルトでは「オン」になっているので、「オフ」に設定する必要があります。
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
また、「ServerTokens Prod」という設定も行いました。これは、Webサーバーに対してApacheのみを返し、OSのメジャーバージョンとマイナーバージョンを非表示にするように指示するものです。
設定ファイルを変更した後は、変更を有効にするためにApacheウェブサーバーを再起動またはリロードする必要があります。
service httpd restart
2) ディレクトリリストを無効にする
ドキュメントルートディレクトリにインデックスファイルがない場合、デフォルトではApacheウェブサーバーはドキュメントルートディレクトリのすべてのコンテンツを表示します。
この機能は、Apache設定ファイルにある「Options」ディレクティブを使用して、特定のディレクトリに対して無効にすることができます。
<Directory /var/www/html> Options -Indexes </Directory>
3) 不要なモジュールを無効にする
使用していない不要なモジュールはすべて無効にしておくのが良いでしょう。有効になっているモジュールの一覧は、Apacheの設定ファイルで確認できます。
[root@amsterdam ~]#httpd -M
perl_module (shared)
php5_module (shared)
proxy_ajp_module (shared)
python_module (shared)
ssl_module (shared)
リストされているモジュールの多くは、mod_imap、mod_include、mod_info、mod_userdir、mod_autoindexなど、無効化することができます。これらは、実際のWebサーバーではほとんど使用されていないためです。
vi /etc/httpd/conf/httpd.conf
#LoadModule auth_digest_module modules/mod_auth_digest.so
モジュールをコメントアウトしたら、ファイルを保存してください。
以下のコマンドを使用してApacheサービスを再起動してください。
/etc/init.d/httpd restart
4) Web ルート ディレクトリ外のファイルへのアクセスを制限する
ウェブルートディレクトリ外のファイルにアクセスできないようにするには、ウェブサーバーの設定ファイルで「許可」と「拒否」オプションを使用して、そのディレクトリへのアクセスを制限する必要があります。
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
ウェブルートディレクトリ以外へのアクセスを制限すると、ウェブサーバー上の他のフォルダにあるファイルにはアクセスできなくなり、404エラーコードが返されます。
5) mod_evasiveを使用してDoS攻撃に対抗する
ウェブサーバーをDoS(サービス拒否)攻撃から保護するには、mod_evasiveモジュールを有効にする必要があります。これは、DoS攻撃を検知し、攻撃が放置された場合よりも被害を最小限に抑えるサードパーティ製モジュールです。下記からダウンロードできます。
6) mod_securityを使用してApacheのセキュリティを強化する
このモジュールはApacheのファイアウォールとして機能し、トラフィックをリアルタイムで監視できます。また、Webサーバーへのブルートフォース攻撃も防止します。mod_securityモジュールは、お使いのディストリビューションのデフォルトのパッケージマネージャーを使用してインストールできます。
7) リクエストサイズの制限
ApacheにはHTTPリクエストの合計サイズに関する制限がないため、DoS攻撃につながる可能性があります。リクエストサイズを制限するには、Directoryタグ内にApacheディレクティブ「LimitRequestBody」を使用します。値は、要件に応じて0~2GB(2147483647バイト)の範囲で設定できます。
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Apache ログ形式
サーバーのセキュリティが強化されると、ログの確認が問題発見のための主要なツールとなります。Apacheのログには、サーバーでよく発生する問題を検出するのに役立つ詳細な情報が含まれています。
アクセスログを作成するには、mod_log_configモジュールを有効にする必要があります。
Apacheの設定ファイルで使用できる3つのディレクティブ
- TransferLog: ログ ファイルを作成します。
- LogFormat: カスタムフォーマットを指定します。
- CustomLog: ログファイルの作成とフォーマット。
TransferLog ディレクティブは Apache の設定ファイルで使用でき、設定されたパラメータに従って仮想ホストのログファイルをローテーションします。
<VirtualHost www.example.com> ServerAdmin webmaster@example.com DocumentRoot /usr/www/example/httpd/htdocs/ ServerName www.example.com ServerAlias example.com www.example ErrorLog /usr/www/example/httpd/logs/error_log TransferLog /usr/www/example/httpd/logs/accesslog CustomLog /usr/www/example/httpd/logs/accesslog combined </VirtualHost>
XNUMX 種類の Apache ログ形式
- 一般的なログ形式
- 結合されたログ形式
Apache 設定ファイル、つまり apache2.conf (Debian/Ubuntu)または httpd.conf(rpm ベースのシステム)。
一般的なログ形式
LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog logs/access_log common
Apacheによって生成される共通ログ
[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test
結合されたログ形式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined CustomLog log/access_log combined
ここでは、
- %h はリモートホストです。
- %l は identd によって特定されたユーザーの識別情報です。
- %u は HTTP 認証によって決定されるユーザー名です。
- %t は、サーバーがリクエストの処理を終了した時刻です。
- %r はクライアントからのリクエスト行です。 (「GET/HTTP/1.0」)
- %>s は、サーバーからクライアントに送信されるステータス コード (500、404 など) です。
- %b はクライアントへの応答サイズ(バイト単位)です。
- リファラーとは、このページにリンクしたページのことです。 URL.
- User-agent はブラウザの識別文字列です。
Apache によって生成された結合ログ:
199.187.122.91 - - [06/Mar/2014:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
Custom Logは、サーバー上の各仮想ホストごとに個別のログファイルを作成します。設定ファイルの仮想ホストセクションで指定する必要があります。
以下に仮想ホストの設定を示します。生成されるログは、その仮想ホストに合わせてカスタマイズされ、フォーマットが組み合わされます。
初めての本番Webサーバーの設定
設定、セキュリティ、ログ記録が完了すれば、最後のステップは、それらすべてを統合して本番環境を構築することです。
1. 本番環境のWebサーバーを稼働させるには、専用の Linux、Unix、 Windows, macOS, etc.
2. Webサーバーには 直接ネットワーク接続 と 静的IPアドレス その上で設定されています。
3. すべての モジュール ウェブページを実行するために必要です。ウェブサーバーがPHPページを処理する場合、PHPモジュールを有効にする必要があります。
- また、良い アンチウイルス マルウェアやウイルス攻撃からWebサーバーを保護するために構成され実行されているアプリケーション。また、 update 最大限の効果を得るために、設定されたウイルス対策またはマルウェア対策アプリケーションを、手動による介入なしに定期的に実行します。
- ウェブサーバーでホストするドメインが数百個ある場合は、 各ドメインのファイルシステム割り当て量の制限、各ドメインが作成できるデータベースの数、ドメインごとのメールアカウントの数など。
- ウェブサーバーが以下のように設定されている場合 共有ホスティングサービスでは、ウェブサーバー上のユーザーを制限する必要があります。共有ホスティングのユーザーには、重要なファイルを破損したり、サーバー全体を破壊したりしないよう、最小限のユーザー権限しか与えないようにする必要があります。Apacheにはそのような機能は備わっておらず、これを実現するには、サードパーティ製のアプリケーションやOSのカスタマイズが必要となります。
- を追加する場合は、 新しいドメイン ウェブサーバー上では、追加したドメインのすべての機能を有効にするために、数百もの設定項目を編集する必要があります。
- ホストされているドメインの XNUMX つが必要とする場合 異なるPHP設定 他のドメインと比べて、Apache のコアにこれを実装するのは非常に複雑で、Web サーバーの広範なカスタマイズが必要です。
- 実稼働 Web サーバーには、 ファイアウォール サーバーに高い負荷をかける可能性のある不要なトラフィックをブロックします。 適した コマンドラインを使ったルール作成は複雑です。不要なトラフィックをブロックするための効果的なファイアウォールルールを作成するには、LinuxまたはUnix環境に関する専門知識が必要です。IPTABLEはnetfilterモジュールをベースとしており、OSレベルのファイアウォールとして、管理者がサーバー上の送受信トラフィックに対するルールを作成できます。
- 運用 Web サーバーには、次のようないくつかの異なるアプリケーションが必要です。 メール, FTP ファイルアップロード用、 ドメインネームシステム パークドメインの場合。これらのアプリケーションすべてをコアとなるLinuxまたはUnixシステム上で管理するには、それぞれの技術に関する専門知識が必要です。
つまり、複数のドメインのウェブサーバーを管理することは非常に複雑な作業であり、数百もの設定ファイルを編集し、各アプリケーションをカスタマイズして目的の結果を得る必要があると言えるでしょう。設定ミスが発生した場合、初心者にとってトラブルシューティングは非常に困難です。
Cpanel または類似のソフトウェアを使用した解決策
cPanelは、ウェブサーバーをグラフィカルに管理する方法を提供します。cPanelは、使いやすく設定も簡単な大規模ホスティングサービスを提供することを目的としています。ホスティングとウェブサーバー管理への参入障壁を技術的に低減し、複雑な作業を容易にします。ウェブサーバーの運用に必要な一般的なシステム管理タスクを実行するための、便利で使いやすいウェブインターフェースを多数提供しています。
cPanel は独自のバージョンのソフトウェアをコンパイルします。
通常のLinuxプラットフォームでWebサーバー(Apache)を再コンパイルする必要がある場合は、必要なモジュールを手動で選択または検索する必要があります。cPanelは、スクリプトベースのWebサーバーコンパイル方法であるEasyApache機能を提供しています。
ウェブサービスを提供するだけでなく、 MailDNS、FTP、その他Webアプリケーションに必要な多くのサービス。
SSLのインストール、異なるPHPモジュールを使用したApacheの再コンパイル、Webセキュリティの更新、効果的なIPTABLEルールの設定、FTPユーザーの追加、各ドメインのメールアカウントの作成、ドキュメントルートのウイルス対策スキャン、データベースの作成など、LinuxまたはUnixベースのホスティングに関する専門知識を必要とするタスクは、cPanelを使用すれば簡単に完了できます。
一般的な管理タスクの修正、インストール、トラブルシューティングを行うためのスクリプトが多数用意されています。
バックアップと復元機能を提供するため、ファイルをバックアップストレージに手動でコピーする必要がなくなります。ドメインをバックアップする場合、cPanelはドキュメントルートフォルダ、メールアカウントとメール、FTPアカウント、データベース、DNSレコード、その他のアプリケーションを含むtarファイルを作成します。
また、充実したドキュメントが用意されており、ユーザー同士が活発に議論し、問題解決のための情報交換ができる大規模なコミュニティも存在します。
だから、それは言うことができます cPanelの これは、必要な機能を備えたWebサーバー管理のための強力なアプリケーションです。ドメイン管理のための使いやすいインターフェースを提供し、コアWebサーバーの管理に伴う複雑さを回避する仕組みを備えています。
cPanelには、Plesk、ISPConfig、Ajenti、Kloxo、Open Panel、ZPanelなど、多くの競合製品が存在する。

















