とりえずよーやくWEBサーバをたてることができました(まぁhtml表示だけならデフォルトでできてるんだけど)。。
apacheは結構いじくりまわしてたんで、すぐ構築できると思ってたんですが、これがなかなか曲者で、結局かなり時間がかかってしまいました。はぁ~・・・・
■構築条件
・apacheはパッケージでインストールしているものを使用する(ソースからインストすると互換性やアップグレードやメンテ性でめんどいから。。)
・とりあえず今回はファイル置き場とWebDAVを構築。
・あと、ファイル置き場とWebDAVに関しては認証させる。
・メンテ用にサーバ全ディレクトリをWebDAVにてアクセスできるようにする。
■apache基本設定
パッケージインストの場合の設定ファイルは/etc/httpd/conf/httpd.conf
1.ポート確認
Listen 80
2.管理メールアドレス変更
3.ドキュメントルート確認
DocumentRoot "/var/www/html"
4.ドキュメントルートは自動インデックスリスト表示オフ
Options -Indexes FollowSymLinks MultiViews
~~
5.ドキュメントルートは".htaccess"をとりあえず無効確認(apache公式で推奨されているため。ポリシーの変更もありえるかも。。。)
AllowOverride None
~~
6.インデックスファイルファイル名追加(.phpは将来拡張のため)
DirectoryIndex index.html index.htm index.php index.html.var
7.ホスト名逆探知ONに変更
HostnameLookups on
8.ログの種類が"combined"になってること確認
CustomLog logs/access_log combined
9.サーバの種類表示「Apache」だけ表示するに変更
ServerTokens Prod
10.日本語最優先に変更
LanguagePriority ja en..
11.デフォルト言語無効に変更
AddDefaultCharset off
■ファイル置き場用ディレクトリ作成
アクセス許可に注意。書き込み可なら777。読み込みだけなら755に設定。
■ファイル置き場ディレクティブ設定
Options Indexes :ファイル置き場は自動インデックスリスト表示
AuthType Basic :認証形式
AuthName "Mani PublicDocuments"
AuthUserFile /var/bkup/.htpasswd :パスワードファイル
#AuthGroupFile /var/bkup/.htgroup :グループファイル(今回は使用しなかったのでコメントアウト)
Require user adimin user1 user2 :許可するユーザの記述
AddDefaultCharset UTF-8 :自動インデックスリストに必要。下記参照。
AllowOverride none :とりあえず.htaccessは未許可
Order allow,deny
Allow from all
・文字コードをUTF-8に変更した理由:基本設定11項目でサーバが送信する文字コードをoffに設定したため、自動インデックスリスト表示した際に、なぜかクライアント側にShift_JISで送信されてしまいます。なぜそうなるかは不明ですが。。。そうなるとサーバ自体のファイル文字コードはUTF8のため、日本語ファイルが文字化けしてしまいます。なので、暫定的処置として、ファイル置き場はUTF-8にすることに。しかしこうすると、他の文字コードで書かれたhtmlやテキストファイルをファイル置き場においたときに、開くと当然のごとく文字化けしてしまいます。Windows版apacheだと特に指定しなくても、ちゃんとインデックスリストはUTF-8で、しかもShift-JISのテキストファイルを開いたときはShift-JISにしてくれるんですが。。。なにゆえFedora版はだめなのでしょう。。。
・あと認証のグループについてですが、AuthGroupFileを指定し、Require group GroupNameにすると許可したグループのみアクセスできるはずなんですが、これもなぜかうまくいきません。いろいろ試しましたが結局個別にユーザ名を指定することで妥協しました。はぁ・・・・
■WevDAV構築
apacheをパッケージインストしているなら、モジュールの有効化やロックの設定などはすでに記述されているため、公開ディレクトリの設定だけですむみたいです。。。
・すでに記述されていたロックに関する設定
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
DAVMinTimeout 300
DAV On
AuthType Basic
AuthName "Mani WebDAV"
AuthUserFile /var/bkup/.htpasswd
#AuthGroupFile /var/bkup/.htgroup
Require user admin user1 user2
Order allow,deny
Allow from all
Alias /root "/" →メンテ用全ディレクトリのエイリアス設定
DAV On
AuthType Basic
AuthName "Admin"
AuthUserFile /var/bkup/.htpasswd
AuthGroupFile /var/bkup/.htgroup
Require user admin
Order allow,deny
Allow from 192.168.0.0/24 →ローカルIPのみ接続許可
・全ディレクトリWebDAVについてはセキュリティ的にはまずいかもしれません。なにせ、apacheやWebDAVのセキュリティホールつつかれた終わりですからね。しかしFTPだけだとすんごいめんどいんですよ。まぁ企業ならめんどいとかでは理由にはならないかと思いますが、個人サーバのでいいかなぁ~みたいなw。あとSambaにするって方法(普通はこれが一般的)もあるんでしょうが、無駄にポートを開けたくないのと、このサーバはいずれDMZに配置しようかと思ってるんですが、そんときルータ越えとセキュリティの観点からSambaは使用しないことにしました。まぁどうなるかある意味では楽しみかもw
・不思議なこと:普通WebDAVで日本語ファイルを扱うと文字化けしちゃいます。その対策に以前まではmod_encoding入れてたんですが、このパッケージのapacheだと標準のままで日本語いけちゃいます。うーん、、不思議。。。ただ@ITの記事とかみていると、クライアントがWindowsの時はうまくいくようですが、他のOS(たとえばLinuxでEUC使ってるクライアントとか)だとやはり文字化けしちゃうようです。まぁWindowsユーザしか前提においてないのでそのままでいっか~。
・WinXPのバグ(?)対策:WinXPでWebDAVにアクセスしようとすると、「ユーザアカウント」の代わりに「ホスト名\ユーザアカウント」の形式で認証を試みようとします。そのため普通に入力すると失敗しちゃいます。これもmod_encoding入れるとなおるらしいということで、mod_encoding挑戦してみました。 が、途中で挫折。。。。 原因はapacheをパッケージでインストールしているところにありました。mod_encodingはapacheをソースからインストーしてあることを前提にMakeファイルなどの変数が設定されていますので、コンパイル時にエラーが出ちゃいます。(それでもiconv_hookはインストできました) しかも、手動でMakeファイル内の変数書き換えてやろうとしましたが、コンパイルに必要なapsxが我がサーバにはインストされていません。yumでお手軽インストやろうとしたらリポジトリサーバに接続できません。仕方なくFedoraミラーサーバから直でrpm(httpd-devel-2.0.54-10.i386.rpm)落としてきたら、依存関係で足りないrpm続出。もうこの頃には力尽きてましたので、mod_encodingは後日暇時にインストールすることに閣議決定。
さて、XPのバグどうしよかなぁーと思って調べていると、Webフォルダをネットワークプレース追加時にWindowsの"WebClient"サービスを一時停止することで問題解決をはかれるということが判明しました。実際この方法でやってみると成功しました。1回登録して、"WebClient"を有効にしてマイネットワークから接続にいくと正常につながります。とういうことは、マイネットワーク登録時のみWebClientを無効にしてやればいいということですね。とりあえず、当面はこの方法で運用していくことに。まぁクライアントには迷惑かかりますが、致し方ありません。だってもう疲れちゃったしぃ~~。
Apache2のWebDAV機能を使う
[SPS] Windows XP クライアントから FQDN の URL を指定して Web フォルダを作成できない