Apacheの設定について
公開しっぱなしになっているApache
ブログのリンクやらtwitterのリンクしかはりつけていない存在価値が微妙な私のHP、よくよく考えてみると、当初の目的がLinuxの勉強がてら色々試そうというものだったことを思い出しました。
ソースからビルドしておいて満足してた感があったので、ちょっと弄ってみました。
どっこい
久々に見たhttpd_conf、デフォルトの状態からとりあえず大量のコメント行を除去した状態で放置してありました。
稼働しているのはわかっているのですが、なんとなくstatusを叩いてみたところ
$ /etc/init.d/httpd status Not Found The requested URL /server-status was not found on this server.
ポカーン。
け、研修では見れたはずなのですが…
改めてhttpd_confを眺めていると、server-statusの部分がごっそり消えていることがわかりました。
なんで消えているかって上述したコメント行を見境なく削除したからに他なりません。
仕方がないので、以下をhttpd_confに追記。
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from localhost </Location>
ホストベースのアクセス制御はすぐに忘れてしまいますが、Order deny,allowの場合、以下の感じが覚えやすかったです。
access = "allow" host = "all" if host == "all": access = "deny" if host == "localhost": access == "allow"
で、意気揚々とrestartをかけようとしたら
$ /etc/init.d/httpd restart (13)Permission denied: AH00072: make_sock: could not bind to address [::]:80 (13)Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down AH00015: Unable to open logs
次は何ですか…と調べると、WellknownPortがふってある場合はサービス起動にroot権限が必要になるらしいです。
とりあえずstatusは成功するようになりました。(実験のために一瞬server-statusが日本国内に開放されていたのは秘密である)
Options
Documentrootの設定のところで、Optionsという項目が存在します。
色々と設定値があるようですので、まとめ。
ExecCGI | cgi-binディレクトリ以外でCGIプログラムを実行できる。 |
Includes | SSIを許可する。 |
FollowSymLinks | リンク先のファイルを参照する。 |
Indexes | DirectoryIndexで指定されたファイルが内場合、ファイル一覧を表示する。 | ALL | 全てのオプションを利用。 |
None | 全てのオプションを無効。 |
# /etc/init.d/httpd restart AH00526: Syntax error on line [行数] of [apacheのPATH]/httpd.conf: Either all Options must start with + or -, or no Option may.
何か変更を加えると、必ず何か問題が起きますね。てへ。
ここでちょっとハマったのですが、ひとつの設定値に"-"をつけてしまうと、他の設定値にも符号をつけないといけなかったみたいです。
つまり、
Options -Indexes +FollowSymLinks
としてあげないとダメだったと。
とりあえず、今日はここまで。