Apache の設定は httpd.conf ファイルによって設定されるため、次の設定手順は httpd.conf ファイルで変更されます。
メインサイトの構成 (基本構成)
(1) 基本構成:
ServerRoot "/mnt/software/apache2" #Apache ソフトウェアがインストールされている場所。他の指定されたディレクトリに絶対パスが指定されていない場合、ディレクトリはこのディレクトリからの相対パスになります。
PidFile logs/httpd.pid #最初の httpd プロセス (他のすべてのプロセスの親プロセス) のプロセス番号ファイルの場所。
Listen 80 #サーバーがリッスンするポート番号。
ServerName www.clusting.com:80 #メイン サイト名 (Web サイトのホスト名)。
ServerAdmin admin@clusting.com #管理者の電子メール アドレス。
DocumentRoot "/mnt/web/clusting" #メイン サイトの Web ページの保存場所。
次は、メイン サイトのディレクトリのアクセス制御です:
<ディレクトリ "/mnt/web/clusting">
Options FollowSymLinks
AllowOverride None
Orderallow,deny
Allow from all
上記のディレクトリ属性設定には、主に次のオプションがあります:
Options : 設定 特定のディレクトリでどの機能が使用されるか、共通の値と基本的な意味は次のとおりです。
ExecCGI: このディレクトリで CGI スクリプトの実行が許可されます。
FollowSymLinks: ファイル システムがこのディレクトリ内のシンボリック リンクを使用できるようにします。
インデックス: ユーザーがディレクトリにアクセスしたときに、DirectoryIndex で指定されたホームページ ファイル (index.html など) が見つからない場合、ディレクトリ内のファイル一覧がユーザーに返されます。
SymLinksIfOwnerMatch: シンボリック リンクを使用する場合、シンボリック リンクのファイル所有者が実際のファイルの所有者と同じである場合にのみアクセスできます。
その他の使用可能な値と意味については、http://www.clusting.com/Apache/ApacheManual/mod/core.html#options を参照してください。
AllowOverride: 許可されていますhtaccess ファイル内のディレクティブのタイプ (.htaccess ファイル名は変更可能で、ファイル名は AccessFileName ディレクティブによって決定されます):
None:AllowOverride が None に設定されている場合。このディレクトリで .htaccess ファイルを検索しないでください (サーバーのオーバーヘッドを軽減できます)。
All: すべてのディレクティブは .htaccess ファイルで使用できます。
その他の使用可能な値と意味 (オプション FileInfo AuthConfig Limit など) については、http://www.clusting.com/Apache/ApacheManual/mod/core.html# を参照してください。 AllowOverride
Order: アクセス中に許可と拒否の 2 つのアクセス ルールのどちらを優先するかを制御します:
Allow: アクセスが許可されるホストのリスト (利用可能なドメイン名またはサブネット、例:Allow) 192.168.0.0/16 から)。
Deny: アクセスを拒否されたホストのリスト。
詳しい使用方法については、http://www.clusting.com/Apache/ApacheManual/mod/mod_access.html#order
DirectoryIndexindex.htmlindex.htmindexを参照してください。 .php #ホームページ ファイルの設定 (この例では、ホームページ ファイルは、index.html、index.htm、index.php に設定されています)
(2) サーバーの最適化 (MPM: マルチ) -Processing Modules)
apache2 の主な利点は、マルチプロセッサのサポートが向上していることです --with-mpm オプションは、コンパイル中に apache2 の動作モードを決定するために使用されます。現在の apache2 がどのような動作メカニズムを使用しているかがわかっている場合は、httpd -l コマンドを使用して Apache のすべてのモジュールをリストし、それがどのように機能するかを知ることができます。
prefork: httpd -l が prefork.c をリストする場合
StartServers 5 #Apache の起動時に開始される httpd プロセスの数。
MinSpareServers 5 #サーバーによって維持されるアイドル プロセスの最小数。
MaxSpareServers 10 #サーバーによって維持されるアイドル プロセスの最大数。
MaxClients 150 #同時接続の最大数。
MaxRequestsPerChild 1000 #各子プロセスが強制終了されるまでにサービスが要求される回数。 0 は制限がないことを意味し、1000 に設定することをお勧めします。
この動作モードでは、サーバーの起動後に 5 つの httpd プロセスが開始されます (ps -ax を介して、親プロセスを含めて合計 6 つ) |grep httpd コマンドで確認できます)。ユーザーが接続すると、Apache はアイドル プロセスを使用して接続を提供し、親プロセスが子プロセスをフォークします。メモリ内のアイドル プロセスの数が MaxSpareServers に達するまで。このモードは、一部の古いバージョンのプログラムとの互換性を目的としています。私のデフォルトのコンパイル時オプション。
worker: httpd -l で worker.c がリストされる場合は、次のセクションを構成する必要があります:
StartServers 2 #Start 番号Apache によって開始された httpd プロセスの数。
MaxClients 150 #同時接続の最大数。
MinSpareThreads 25 #サーバーによって維持されるアイドル スレッドの最小数。
MaxSpareThreads 75 #サーバーによって維持されるアイドル スレッドの最大数。
ThreadsPerChild 25 #各子プロセスによって生成されるスレッドの数。
MaxRequestsPerChild 0 #各子プロセスが強制終了されるまでにサービスが要求される回数。 0 は制限がないことを意味し、1000 に設定することをお勧めします。
このモードでは、スレッドを使用して顧客の接続を監視します。新しいクライアントが接続すると、アイドル状態のスレッドの 1 つが接続を受け入れます。サーバーは起動時に 2 つのプロセスを開始し、各プロセスによって生成されるスレッドの数は固定されている (ThreadsPerChild によって決定される) ため、起動時には 50 のスレッドが存在します。 50 スレッドでは不十分な場合、サーバーは自動的にプロセスをフォークし、さらに 25 スレッドを生成します。
perchild: httpd -l で perchild.c がリストされる場合は、次のセクションを構成する必要があります:
NumServers 5 #サーバーの起動時に開始される子プロセスの数
StartThreads 5 #各子プロセスの開始時に開始されるスレッドの数
MinSpareThreads 5 #メモリ内のアイドル スレッドの最小数
MaxSpareThreads 10 #アイドル状態のスレッドの最大数
MaxThreadsPerChild 2000 #終了するまでに各スレッドをリクエストできる最大回数。 0 は制限されません。
MaxRequestsPerChild 10000 #再フォークされるまでに各子プロセスが処理される回数。 0 は制限がないことを意味します。
このモードでは、子プロセスの数は固定されており、スレッドの数は制限されません。クライアントがサーバーに接続すると、アイドル状態のスレッドがサービスを提供します。アイドル状態のスレッドの数が十分でない場合、子プロセスは新しい接続を提供するためにスレッドを自動的に生成します。このモードはマルチサイト サーバーに使用されます。
(3) HTTP リターン ヘッダー情報の設定:
ServerTokens Prod #このパラメータは、http ヘッダーによって返される Apache のバージョン情報を設定します。利用可能な値と意味は次のとおりです:
Prod: ソフトウェア名のみ (例: apache)
Major: メジャー バージョン番号を含む (例: apache/2)
Minor: マイナー バージョン番号を含む (例: apache/2.0
Min: Apache の完全なバージョン番号のみ。例: apache/ 2.0.54
OS: オペレーティング システムの種類が含まれます。例: apache/2.0.54 (Unix)
Full: モジュールとモジュールのバージョン番号が含まれます。 Apache でサポートされているもの。例: Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g
ServerSignature Off #ページでエラーが発生したときにサーバーのバージョン情報を表示するかどうか。推奨設定は Off です。
(4) 永続接続設定
KeepAlive On #永続接続機能を有効にします。つまり、クライアントがサーバーに接続すると、データのダウンロード後も接続が維持されます。
MaxKeepAliveRequests 100 #接続サービスのリクエストの最大数。
KeepAliveTimeout 30 #接続を継続する時間 接続が再度データを要求しない場合、接続は切断されます。デフォルトは 15 秒です。
エイリアスの設定
DocumentRoot で指定されたディレクトリにないページの場合は、シンボリック接続またはエイリアスのいずれかを使用できます。エイリアスの設定は次のとおりです。
Alias /download/ "/var/www/download/" #アクセスするときは、次のように入力できます: http://www.custing.com/download/
<ディレクトリ "/var/www/download"> #このディレクトリのアクセス制御設定を構成します
オプション インデックス マルチビュー
AllowOverride AuthConfig
順序許可、拒否
すべてから許可
CGI 設定
ScriptAlias /cgi-bin/ "/mnt/software/apache2/cgi-bin/" # アクセス時: http ://www.clusting.com/cgi-bin/ 。ただし、このディレクトリ内の CGI スクリプト ファイルには実行権限が必要です。
<ディレクトリ "/usr/local/apache2/cgi-bin"> #ディレクトリ属性の設定
AllowOverride なし
オプション なし
順序許可、拒否
すべてから許可
個人ホームページ設定 (public_html)
UserDir public_html (ユーザーのホームページは、ユーザーのホーム ディレクトリ URL http: / の下の public_html ディレクトリに保存されます) /www.clusting.com/~bearzhang/file.html は /home/bearzhang/public_html/file.html ファイルを読み取ります)
chmod 755 /home/bearzhang #他のユーザーがファイルを読めるようにします 。
UserDir /var/html (URL http://www.clusting.com/~bearzhang/file.html は /var/html/bearzhang/file.html となります)
UserDir /var/www/*/docs (URL http://www.clusting.com/~bearzhang/file.html は /var/www/bearzhang/docs/file.html となります)
ログ設定
(1) エラーログの設定
ErrorLog logs/error_log #ログの保存場所
LogLevel warn #ログ レベル
表示形式は次のとおりです。
[Mon Oct 10 15:54:29 2005] [error] [client 192.168 . 10.22] /download/ へのアクセスに失敗しました。理由: ユーザー管理者にアクセスが許可されていません
(2) アクセス ログ設定
ログのデフォルトの形式は次のとおりです:
LogFormat " %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" の結合
LogFormat "%h %l %u %t " %r " %>s %b" common #common はログ形式名です
LogFormat "%{Referer}i -> %U" リファラー
LogFormat "%{User-agent}i" エージェント
CustomLog logs/access_log common
形式のパラメータは次のとおりです:
%h -- クライアントの IP アドレスまたはホスト名
%l --これは、クライアントの identd によって決定される RFC 1413 の ID です。出力内の「-」記号は、ここでの情報が無効であることを示します。
%u --HTTP 認証システムによって取得された Web ページにアクセスしたクライアントの名前。認証がある場合にのみ有効であり、出力内の記号「-」は、ここでの情報が無効であることを示します。
%t -- サーバーがリクエストの処理を完了した時刻。
"%r" -- 引用符は、顧客から送信されたリクエストの内容であり、多くの有用な情報が含まれています。
%>s -- これはサーバーからクライアントに返されるステータス コードです。
%b -- 最後の項目は、応答ヘッダーを除いてクライアントに返されるバイト数です。
"%{Referer}i" -- この項目は、リクエストが送信された Web ページを指定します。
"%{User-Agent}i" -- この項目は、顧客のブラウザから提供されるブラウザ識別情報です。
以下はアクセス ログの例です:
192.168.10.22 - bearzhang [10/Oct/2005:16:53:06 0800] "GET /download/ HTTP/1.1" 200 1228
192.168.10.22 - - [10/Oct/2005:16:53:06 0800] "GET /icons/blank.gif HTTP/1.1" 304 -
192.168.10.22 - - [10/Oct/2005: 16: 53:06 0800] "GET /icons/back.gif HTTP/1.1" 304 -
各パラメーターの詳細な説明については、http://www.clusting.com/Apache/ を参照してください。 ApacheManual/logs.html
httpd.conf 内のユーザー認証設定
(1):
AccessFileName .htaccess
......................
エイリアス /download / "/var/www/download/"
<ディレクトリ "/var/www/download">
オプション インデックス
AllowOverride AuthConfig
ディレクトリ>
(2) パスワード ファイルを作成します:
/usr/local/apache2/bin/htpasswd -c /var/httpuser/passwords bearzhang
(3) パスワードを要求するようにサーバーを設定し、どのユーザーがアクセスを許可されているかをサーバーに伝えます。
vi /var/www/download/.htaccess:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /var/httpuser/passwords
Require user bearzhang
# Require valid-user #all valid user
仮想ホスト構成
(1) IP アドレスに基づく仮想ホスト構成
Listen 80
DocumentRoot /www/example1
サーバー名 www.example1.com
DocumentRoot /www/example2
サーバー名www.example2.org
(2) IP およびマルチポートに基づく仮想ホスト構成
Listen 172.20.30.40:80
Listen 172.20. 30.40:8080
リッスン 172.20.30.50:80
リッスン 172.20.30.50:8080
DocumentRoot /www/example1-80
ServerName www.example1.com
DocumentRoot /www/example1-8080
サーバー名 www.example1.com
DocumentRoot /www/example2-80
サーバー名 www.example1.org
DocumentRoot /www/example2-8080
ServerName www.example2.org
(3) 単一 IP を持つサーバーアドレス ドメイン名ベースの仮想ホスト構成:
# Apache がポート 80 でリッスンすることを確認します
Listen 80
# すべての IP アドレスで仮想ホスト要求をリッスンします
NameVirtualHost *:80
DocumentRoot /www/example1
ServerName www.example1.com
ServerAlias example1.com. *.example1.com
# その他のディレクティブはこちら
DocumentRoot /www/example2
ServerName www.example2.org
# その他のディレクティブはこちら
< /VirtualHost>
(4) 複数の IP アドレスを持つサーバー上でドメイン名ベースの仮想ホストを構成します:
Listen 80
# これは、172.20.30.40 で実行されている「メイン」サーバーです。
ServerName server.domain.com
DocumentRoot /www/mainserver
# これは別のアドレスです
NameVirtualHost 172.20.30.50
DocumentRoot /www/example1
ServerName www.example1.com
# その他のディレクティブはこちら ...
DocumentRoot /www/example2
ServerName www.example2.org
# その他のディレクティブはこちら ...
(5) 異なるポートで異なるサイトを実行します (マルチポート サーバー上でドメイン名ベースの仮想ホストを構成します):
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080
DocumentRoot /www/otherdomain-80
ServerName www.example2.org
DocumentRoot /www/otherdomain-8080
(6) ドメイン名ベースと IP ベースのハイブリッド仮想の構成ホスト:
Listen 80
NameVirtualHost 172.20.30.40
DocumentRoot /www/example1
ServerName www.example1.com
DocumentRoot /www/example2
ServerName www.example2.org
DocumentRoot /www/example3
ServerName www.example3.net
SSL 暗号化構成
まず、構成の前にいくつかの基本的な概念を理解しましょう:
証明書の概念: まずルート証明書が必要で、次にそのルート証明書を使用してサーバー証明書とクライアント証明書が発行されます。一般に理解されているように、サーバー証明書とクライアント証明書は水平的な関係にあります。 SSL は認証のためにサーバー証明書をインストールする必要があります。したがって、この環境では、ルート証明書、サーバー証明書、クライアント証明書の少なくとも 3 つの証明書が必要です。通常、証明書を生成する前に秘密キーがあり、その秘密キーを使用して証明書要求が生成され、証明書サーバーのルート証明書を使用して証明書が発行されます。
SSL で使用される証明書は自分で生成することも、商用 CA (Verisign や Thawte など) によって署名することもできます。
証明書の発行に関する問題: 商用証明書を使用している場合は、特定の署名方法について関連する販売者の指示を確認してください。親しい友人が発行した証明書の場合は、CA を使用できます。 openssl に付属する sh スクリプト ツール。
別のクライアントに証明書を発行しない場合は、クライアント証明書を生成する必要はなく、クライアントとサーバーは同じ証明書を使用します。
(1) conf/ssl.conf 構成ファイルの主なパラメータは次のように構成されています。
Listen 443
SSLPassPhraseDialog buildin
#SSLPassPhraseDialog exec:/path/to/program
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex file:/usr/local/apache2/logs/ssl_mutex
<仮想ホスト _default_:443>
# 仮想ホストの一般的なセットアップ
DocumentRoot "/usr/local/apache2/htdocs"
ServerName www.example.com:443
ServerAdmin you@example.com
ErrorLog /usr/local/apache2/logs/error_log
TransferLog /usr/local/apache2/logs/access_log
SSLCipherSuite 上の
#SSLEngine ALL:!ADH:!EXPORT56:RC4 RSA: HIGH:中: 低: SSLv2: EXP: eNULL
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server .key
CustomLog /usr/local/apache2/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
(2) 自己署名の作成と使用の注意事項:
a.Apache サーバーの RSA 秘密 キー を作成します
/usr/local/openssl/bin/openssl genrsa -des3 -out / usr/local/apache2/conf/ssl.key/server.key 1024
b.証明書署名リクエスト(CSR)を作成します
/usr/local/openssl/bin/openssl req -new -key /usr/local/apache2/conf/ssl.key/server.key -out /usr/local/apache2 /conf/ssl.key/server.csr
c. CA
/usr/local/openssl/bin/openssl req -x509 -days 365 -key /usr/local/apache2/conf/ssl の RSA キーを使用して、自己署名 CA 証明書(X509 構造)を作成します。 key/server.key -in /usr/local/apache2/conf/ssl.key/server.csr -out /usr/local/apache2/conf/ssl.crt/server.crt
/usr/ local/openssl/bin/openssl genrsa 1024 -out server.key
/usr/local/openssl/bin/openssl req -new -key server.key -out server.csr
/usr/local/openssl/ bin/openssl req -x509 -days 365 -key server.key -in server.csr -out server.crt
(3) 自己の CA (承認)、この CA を使用してサーバーを停止する
mkdir /CA
cd /CA
cp openssl-0.9.7g/apps/CA.sh /CA
./CA.sh -newca
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.csr newreq.pem
./CA.sh -sign
cp server.key /usr/local/apache2/conf/ssl.key/
以上がApacheの設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。