初心者向けの Apache チュートリアル
アパッチとは?
Apacheは注目すべきアプリケーションソフトウェアです。商用Webサーバー市場で50%以上のシェアを持ち、世界で最も広く使用されているWebサーバーアプリケーションです。ApacheはUnix系オペレーティングシステムで最も広く使用されているWebサーバーアプリケーションですが、次のようなほぼすべてのプラットフォームで使用できます。 Windows、OS X、OS/2など。アパッチという言葉は、戦争と戦略立案のスキルで有名なアメリカ先住民の部族「アパッチ」の名前から取られています。
これは、同時接続ごとに新しいスレッドを作成する、モジュール式のプロセスベースの Web サーバー アプリケーションです。多数の機能をサポートしています。その多くは個別のモジュールとしてコンパイルされ、コア機能を拡張し、サーバー側のプログラミング言語のサポートから認証メカニズムまで、あらゆるものを提供できます。仮想ホスティングは、単一の Apache Web サーバーで複数の異なる Web サイトを処理できるようにする機能の 1 つです。
Apacheのインストール方法
パッケージやアプリケーションをインストールするには、さまざまな方法があります。 以下に参加者がいます –
- このオープンの特徴の一つが、 ソース Web アプリケーションは、誰でも自分の環境に合わせてインストーラーを作成できるという点で優れています。 これにより、Debian、Red Hat、FreeBSD、Suse などのさまざまなベンダーが、インストールされている他のアプリケーションやベース OS を考慮して、Apache のファイルの場所と構成をカスタマイズできるようになりました。
- ベンダーベースのインストーラーからインストールする以外に、ソース コードからビルドしてインストールするオプションが常にあります。 ソース ファイルからの Apache のインストールはプラットフォームに依存せず、すべての OS で動作します。
Apache Web サーバーはモジュール式アプリケーションであり、管理者は必要な機能を選択し、要件に応じてさまざまなモジュールをインストールできます。
すべてのモジュールは次のようにコンパイルできます。 動的共有オブジェクト (DSO は、実行中に複数のアプリで共有できるオブジェクト ファイルです) は、メインの Apache ファイルとは別に存在します。 DSO アプローチを強くお勧めします。これにより、サーバー構成へのモジュールの追加/削除/更新のタスクが非常に簡単になります。
Apache:Linux プラットフォームのインストール
Red Hat または rpm ベースのシステムの場合
rpm (RedHat パッケージ マネージャーは、Linux システムにアプリケーションをインストールするためのユーティリティです) ベースの Linux ディストリビューション、つまり Red Hat、Fedora、CentOs、Suse を使用している場合は、ベンダー固有のパッケージ マネージャーまたは rpm ファイルを直接構築することで、このアプリケーションをインストールできます。利用可能なソース tarball から。
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 を見つけてダウンロードできます。 こちら 。 ソース ファイルをダウンロードしたら、それを /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
上の例は、DSO 機能を使用した /usr/local/apache ディレクトリ内の Apache のコンパイルを示しています。 –enable-so オプションを使用すると、再コンパイルを必要とせずに、実行時に DSO メカニズムを介して必要なモジュールを Apache にロードできます。
インストールが完了すると、お気に入りのブラウザで Web サーバーのデフォルト ページを参照できます。サーバー上でファイアウォールが有効になっている場合は、OS ファイアウォールでポート 80 の例外を設定する必要があります。次のコマンドを使用してポート 80 を開くことができます。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
サービスiptables save
デフォルトが表示されます Apache2 のようこそ画面 サーバーの IP アドレスを参照して。
仮想ホストとは何ですか?
Apache Web サーバーは、 同じ サーバ。 Web サイトごとに個別のサーバー マシンや Apache ソフトウェアを使用する必要はありません。 これは、次の概念を使用して実現できます。 仮想ホスト or Vホスト。
Web サーバーでホストしたいドメインは、Apache 設定ファイルに別のエントリを持ちます。
Apache Virtualhost の種類
- 名前ベースの仮想ホスト
- アドレスベースまたは IP ベースの仮想ホスト。
名前ベースの仮想ホスト
名前ベースの仮想ホスティングは、単一の IP アドレスで複数の仮想サイトをホストするために使用されます。
名前ベースの仮想ホスティングを構成するには、必要なすべての Web サイトに対する Apache リクエストを受信する IP アドレスを設定する必要があります。 これは、Apache 構成内の NameVirutalHost ディレクティブによって行うことができます。 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 アドレスを構成する必要があります。 したがって、vhost Apache の数は、サーバーに構成されている IP アドレスの数によって決まります。 サーバーに 10 個の IP アドレスがある場合、10 個の IP ベースの仮想ホストを作成できます。
上の図では、1 つの Web サイト example2.com と exampleXNUMX.com に異なる 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>
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 を設定できます。
高速CGIつまり 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 パッセンジャーをインストールし、Ruby ページの提供にそれを使用するように Apache を構成することもできます。
(Phusion 乗客としても知られています)乗客」は、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
これらのモジュールを有効または無効にするには、Web サーバーがこれらのモジュールですでにコンパイルされている場合は、Apache 構成ファイルを編集し、これらのモジュールをコメント化またはコメント解除する必要があります。
Apache Web サーバーを保護する方法
Web サーバーを保護することは非常に重要です。つまり、他のユーザーが意図した情報のみを閲覧できるようにし、データを保護し、アクセスを制限することを意味します。
これらは、Apache Web サーバーのセキュリティを強化する一般的なものです。
1) Apache のバージョンと OS 情報を非表示にする:
Apache は、以下のスクリーンショットに示すように、エラー時にバージョンとオペレーティング システムの名前を表示します。
ハッカーはこの情報を使用して、サーバーまたは OS の特定のバージョンで公開されている脆弱性を利用した攻撃を開始することができます。
Apache Webサーバーがこの情報を表示しないようにするには、次のように変更する必要があります。
Apache 設定ファイルで使用できる「サーバー署名」オプション。 デフォルトでは「オン」になっていますが、「オフ」に設定する必要があります。
vim /etc/httpd/conf/httpd.conf
ServerSignature Off ServerTokens Prod
また、Web サーバーに Apache のみを返し、OS のメジャー バージョンとマイナー バージョンを抑制するように指示する「ServerTokens Prod」も設定しました。
設定ファイルを変更した後、設定を有効にするには、Apache Web サーバーを再起動/リロードする必要があります。
service httpd restart
2) ディレクトリリストを無効にする
ドキュメント ルート ディレクトリにインデックス ファイルがない場合、デフォルトでは、Apache Web サーバーはドキュメント ルート ディレクトリのすべてのコンテンツを表示します。
この機能は、Apache 設定ファイルで使用できる「オプション ディレクティブ」を使用して、特定のディレクトリに対してオフにすることができます。
<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 ルート ディレクトリ外のファイルへのアクセスを制限する
Web ルート ディレクトリの外側にあるファイルにアクセスできないようにしたい場合は、Web サーバー設定ファイルの「許可」および「拒否」オプションでディレクトリが制限されていることを確認する必要があります。
<Directory/> Options None AllowOverride None Order deny,allow Deny from all </Directory>
Web ルート ディレクトリ外へのアクセスを制限すると、Web サーバー上の他のフォルダーにあるファイルにアクセスできなくなり、404 リターン コードが返されます。
5) mod_evasive を使用して DoS 攻撃に反論する
Web サーバーを Dos (つまり、サービス妨害) から保護したい場合は、モジュール mod_evasive を有効にする必要があります。 これは、Dos 攻撃を検出し、攻撃が放置された場合と同じくらいのダメージを与えるのを防ぐサードパーティ モジュールです。 ここからダウンロードできます。
6) mod_security を使用して Apache のセキュリティを強化する
このモジュールは Apache のファイアウォールとして機能し、リアルタイムでトラフィックを監視できます。 また、Web サーバーへのブルート フォース攻撃も防ぎます。 mod_security モジュールは、ディストリビューションのデフォルトのパッケージ マネージャーを使用してインストールできます。
7) リクエストサイズの制限
Apache には、DoS 攻撃につながる可能性のある http リクエストの合計サイズに関する制限はありません。 Apacheディレクティブ「LimitRequestBody」のリクエストサイズをディレクトリタグで制限できます。 値は要件に応じて 0 ~ 2 GB (つまり 2147483647 バイト) に設定できます。
<Directory "/var/www/html/uploads"> LimitRequestBody 512000 </Directory>
Apache ログ形式
Apache ログは、サーバーに関する一般的な問題の検出に役立つ詳細情報を提供します。
アクセスログを作成するには、mod_log_configmodule を有効にする必要があります。
Apache 設定ファイルで使用できる XNUMX つのディレクティブ、つまり
- 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 によって決定されるユーザーの ID です。
- %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)"
カスタム ログは、サーバー上の仮想ホストごとに個別のログ ファイルを作成します。 構成ファイルの仮想ホストセクションで指定する必要があります。
以下の仮想ホスト構成を確認すると、生成されるログはその仮想ホスト用にカスタム化され、形式は結合されます。
最初の運用 Web サーバーを構成する
1. 実稼働 Web サーバーを実行するには、専用の Web サーバーが必要です。 Linux/Unix を実行する (物理/仮想またはクラウド インスタンス)、 Windows、MacOSなど
2. Web サーバーには 直接ネットワーク接続 フォルダーとその下に 静的IPアドレス その上で設定されています。
3. すべてが必要です。 モジュール Web ページを実行するために必要です。 Web サーバーが PHP ページを処理する場合は、PHP モジュールを有効にする必要があります。
- また、良いものも必要です アンチウイルス Web サーバーをマルウェアまたはウイルス攻撃から保護するために構成および実行されているアプリケーション。 仕組みも必要です update 構成されたウイルス対策/マルウェア対策アプリケーションを手動介入なしで定期的に実行することで、最大限のメリットを得ることができます。
- Web サーバーでホストされるドメインが数百ある場合は、次のことを実装する必要があります。 各ドメインのファイル システム クォータ、各ドメインが作成できるデータベースの数、ドメインあたりの電子メール アカウントの数などの制限。
- Web サーバーが次のように設定されている場合 共有ホスティング サービスでは、Web サーバー上のユーザーを制限する必要があります。 共有ホスティング ユーザーには、重要なファイルに損傷を与えたり、サーバー全体を破壊したりしないように、最小限のユーザー権限が必要です。 Apache はそのような機能を提供しておらず、これを実現するには別のサードパーティ製アプリケーションや OS のカスタマイズが必要です。
- を追加する場合は、 新しいドメイン Web サーバーでは、追加されたドメインのすべての機能を有効にするには、何百もの構成ファイルを編集する必要があります。
- ホストされているドメインの XNUMX つが必要とする場合 異なるPHP設定 他のドメインとは異なり、コア Apache Web サーバーにこれを実装するのは非常に複雑であり、Web サーバーを大幅にカスタマイズする必要があります。
- 実稼働 Web サーバーには、 ファイアウォール サーバーに高負荷を引き起こす可能性のある不要なトラフィックをブロックします。 実装する 適した コマンドラインによるルールは非常に複雑です。不要なトラフィックをブロックするための効果的なファイアウォール ルールを作成するには、コア Linux/Unix 環境の専門知識が必要です。IPTABLE は netfilter モジュールに基づいており、管理者がサーバー上の着信/発信トラフィックのルールを作成できる OS レベルのファイアウォールです。
- 運用 Web サーバーには、次のようないくつかの異なるアプリケーションが必要です。 メール, FTP ファイルのアップロードの場合、 ドメインネームシステム パークされたドメインの場合。 これらすべてのアプリケーションをコア Linux/Unix システム上で管理するには、それぞれのテクノロジーに関する専門知識が必要です。
したがって、複数のドメインの Web サーバーを管理するのは非常に複雑な作業であり、何百もの構成ファイルを編集し、各アプリケーションをカスタマイズして目的の結果を実現する必要があります。初心者にとって、構成ミスのトラブルシューティングは非常に困難です。
Cpanel または類似のソフトウェアを使用した解決策
Cpanel は Web サーバーをグラフィカルに管理する方法を提供します使いやすく設定も簡単な大規模ホスティング サービスを提供することを目的としています。cPanel により、ホスティングおよび Web サーバー管理への参入の技術的障壁が軽減されました。複雑なタスクが簡単になり、Web サーバーの操作に必要な一般的なシステム管理タスクを実行する、便利で使いやすい Web インターフェイスが多数提供されます。
cPanel は独自のバージョンのソフトウェアをコンパイルします。
Web サーバー、つまり通常の Linux プラットフォーム上の Apache を再コンパイルする必要がある場合は、必要なモジュールを手動で選択/検索する必要があります。 cPanel は、スクリプト ベースの Web サーバー コンパイル方法である Easyapache 機能を提供します。
Webサービスを提供するだけでなく、 Mail、DNS、FTP など、Web アプリケーションに必要なサービスが多数あります。
SSL のインストール、さまざまな PHP モジュールを使用した Apache の再コンパイル、Web セキュリティの更新、効果的な IPTABLE ルールの構成、FTP ユーザーの追加、各ドメインのメール アカウントの作成、ウイルス対策によるドキュメント ルートのスキャン、データベースの作成など、コア Linux/Unix ベースのホスティングに関する専門知識を必要とするタスクは、cPanel を使用すると簡単に完了できます。
一般的な管理タスクの修正、インストール、トラブルシューティングを行うスクリプトが多数提供されています。
バックアップと復元の機能を提供するため、手動でファイルをバックアップ ストレージにコピーする必要がありません。ドメインをバックアップする場合、cPanel はドキュメント ルート フォルダー、電子メール アカウントとメール、FTP アカウント、データベース、DNS レコード、その他のアプリケーションを含む tar ファイルを作成します。
また、堅牢なドキュメントも提供しており、問題について議論したり解決策を得たりできる非常に大きなユーザー コミュニティもあります。
だから、それは言うことができます cPanelの は、必要な機能を備えた Web サーバーを管理するための最適なアプリケーションです。ドメインを管理するための使いやすいインターフェイスと、コア Web サーバーの管理の複雑さを回避するメカニズムを提供します。
Plesk、ISPConfig、Ajenti、Kloxo、OpenPanel、Zpanel など、cPanel と競合する製品が多数あります。