Re: タイトルなし
ありがとうございます。構造を意識した甲斐がありました。
つたない文章で誤字脱字などよくありますが、よかったらこれからも覗いてください
| URL | 長倉 怜二#-
CentOS7+Apache2でWebサーバを構築するメモです
メインの設定ファイルはhttpd.confですが、いつのバージョンからなのか設定ファイルをインクルードするようになってバラバラになってます。
設定ファイルのパス
httpd.confの設定項目はディレクティブと呼ばれます。以下が主なディレクティブです。
Apacheは1クライアントごと1プロセスを使って処理されます。クライアントからの接続は親プロセスが待ち受け、クライアントが接続した場合、子プロセスが処理を行います。あらかじめ一定数のプロセスを待機させることでパフォーマンスの向上を図っています。
キープアライブとは:
通常、Webページにアクセスする際、一つ一つのファイルごとに接続・GET・切断の処理を繰り返しています。そこでもっとスマートに出来ないだろうかということで、一度接続したら一定時間内なら何回でもリクエストを送れるようにする仕組みをキープアライブといいます。
.htaccessは外部設定ファイルのデフォルト名です。公開ディレクトリの任意の階層に配置します。.htaccessファイルに記述した内容はそのディレクトリ配下のみにおいてhttpd.confの設定を上書きすることが可能となります。
以下はhttpd.confのAccessFilenameディレクティブで外部設定ファイルのファイル名を指定した例です。
AccessFilename .htaccess
この外部設定ファイルの上書きを許可するにはhttpd.confのAllowOverrideディレクティブで許可する必要があります。また以下のパラメータを記述することで.htaccessで上書き可能な範疇も指定できます。
AuthConfig | 認証に関する設定を有効化 |
---|---|
Indexes | DirectoryIndexなどの設定を有効化 |
FileInfo | ファイルタイプの制御を有効化 |
Limit | Order,Allow,Denyによる設定を有効化 |
Options | Optionsの設定を有効化 |
None | .htaccessを無効化 |
All | 変更可能なすべての設定を有効化 |
.htaccessによる変更をすべて許可する例
AllowOverride All
apacheではコアモジュールと後から読み込めるモジュールの2種類があります。頻繁に使うモジュールはコンパイル時に組み込んでしまったほうがパフォーマンス的にはよろしいのですが、あまり使わないモジュールを組み込んでおくと逆にパフォーマンスが低下しかねません。その辺は環境に応じて考えるべき点ですね。
モジュールをロードするにはhttpd.confのLoadModuleディレクティブで指定します。
LoadModule rewrite_module modules/mod_rewrite.so
組み込み済みのモジュールを確認するにはhttpd -lコマンドを実行します。(Debian系はapache2 -l)
# httpd -l
組み込み済みとロード済みのモジュールを確認するにはhttpd -Mを実行します。(Debian系はa2enmod)
# httpd -M
Debian系のa2enmodではモジュール名をつけるとモジュールの有効化、a2dismodでモジュールの無効化ができます。
# a2enmod rewrite
# a2dismod rewrite
Apacheでは指定したディレクトリ以下のアクセスに対して認証をかけることができます。認証方式にはベーシック認証とダイジェスト認証が利用できます。
名前の通りシンプルな認証方式です。ユーザ名とパスワードはBASE64でエンコードされた状態でやり取りされます。暗号化はされていないため危険な認証方式です。
httpd.conf
<Directory "/var/www/basic"> AuthType Basic #方式 AuthName "Hello World" #ダイアログに表示される文言 AuthUserFile /etc/httpd/conf/.htpasswd #パスワードファイル Require valid-user #アクセス可能なユーザを指定(valid-user=存在するユーザすべて) </Directory>
htpasswdコマンドでパスワードファイルを作成やユーザとパスワードの管理を行います。
Usage: htpasswd [オプション] ファイル名 ユーザ名
主なオプションは以下の通りです。
パスワードファイルとユーザを作成
# htpasswd -c /etc/httpd/conf/.htpasswd user
ユーザのパスワードを更新
# htpasswd /etc/httpd/conf/.htpasswd user
ユーザを削除
# htpasswd -D /etc/httpd/conf/.htpasswd user
.htpasswdファイルの中身は「ユーザ名:パスワードハッシュ」という形で各ユーザの情報が記述されています。
user:$apr1$Udnd5rVj$GvpUn.xfatBk63rwmEyyu1 admin:$apr1$zLHp1sqL$Nv/tI./jOsmmIp1t79.QV.
httpdデーモンを再起動して認証をかけたディレクトリにアクセスすると、このような認証ダイアログが表示されるようになります。
チャレンジレスポンス方式の認証方式です。
httpd.conf
<Directory "/var/www/digest"> AuthType Digest AuthName "Hello World" AuthUserFile /etc/httpd/conf/.htdigest Require valid-user </Directory>
ダイジェスト認証のパスワードファイルを作成・管理する場合はhtdigestコマンドで行います。
# htdigest -c /etc/httpd/conf/.htdigest "Hello World" user
AuthNameディレクティブは基本認証の場合ではダイアログメッセージの指定に過ぎませんが、ダイジェスト認証では認証を行う領域を指定します。
そのため、AuthNameとhtdigestコマンドの領域名が合っていなければなりません。
Re: タイトルなし
ありがとうございます。構造を意識した甲斐がありました。
つたない文章で誤字脱字などよくありますが、よかったらこれからも覗いてください
| URL | 長倉 怜二#-
通りすがりですが、このブログいいね
記事に見出しをはじめ要素が適切に使われてて見やすい
ブックマークしました。たまに覗きに来ます
| URL | 通りすがり#-