2008-02 / 2008-02-22

前のエントリ: dovecotでimapアクセスできない [ubuntu]
次のエントリ: ActivePerlのppmがGUIになってる [perl]

Apache2.2 SSL WebDAV おまけでPHP
2008-02-22-1 / カテゴリ: [Apache][PHP][linux][ubuntu] / [permlink]

某サイトでゲットした大量の某曲を友人と共有するために整備してみた。
元々 apache-ssl(1.3系) 使ってたが、WebDAV するなら 2.x系がいーだろーと入れ替えてみた。

# aptitude apache2
とりあえず、ベースはこれで入る。
設定を見てみると、httpd.conf じゃなくて、複数ファイル構成になってるっぽい。調べると、debian系のスタイルっぽい?
自分で分けたとか、デフォルトでそうとかならともかく、突然やられると迷う…


1 SSL対応

mod-ssl とかはない。最初から付いてる(が無効になってる)。
使えるモジュールは mods-available 以下に設定ファイルが転がっている。そのうち、有効になっているモジュールが mods-enabled からリンクされている。
モジュールを有効にするには、a2enmod を available 以下のファイル名(拡張子なし)で実行
# a2enmod ssl
無効にするには a2dismod

んで、設定。システムワイドに設定してもいいけど、モジュールと同様にサイトについても sites-available 以下にサイト毎にファイル分割管理されるみたいなんで、バーチャルサーバ設定にしてみる。
設定はデフォルトの sites-available/default をベースに、/usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-ssl.conf.gz を必要なとこだけパクってくればいい。サーバ証明書は前([2005-08-28-1])のを流用。(その後CAの期限が切れて作りなおしたような…)

こんな感じ(コメント除く)
<VirtualHost 192.168.0.10:443>
	
	DocumentRoot "/var/www/ssldocs"
	ServerName www.example.org:443
	ServerAdmin www@example.com
	ErrorLog /var/log/apache2/error-ssl_log
	TransferLog /var/log/apache2/access-ssl_log
	
	SSLEngine on
	
	SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
	
	SSLCertificateFile /etc/ssl/servkey/server.crt
	SSLCertificateKeyFile /etc/ssl/servkey/server.key
	
	SSLCACertificateFile /etc/ssl/servkey/ca.crt
	
	<FilesMatch "\.(cgi|shtml|phtml|php)$">
	    SSLOptions +StdEnvVars
	</FilesMatch>
	<Directory "/usr/lib/cgi-bin">
	    SSLOptions +StdEnvVars
	</Directory>
	
	BrowserMatch ".*MSIE.*" \
	         nokeepalive ssl-unclean-shutdown \
	         downgrade-1.0 force-response-1.0
	
	CustomLog /var/log/apache2/ssl_request_log \
	          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
	
</VirtualHost>
443/TCP による listen は、ports.conf に
Listen 80
<IfModule mod_ssl.c>
    Listen 443
</IfModule>
があるはずなので特に問題ないはず。



2 DAV対応

システムロケールがUTF8だから日本語は問題ないだろーとタカをくくっていたが…問題なかった。モジュールも入ってるので有効化するだけ。
# a2enmod dav
# a2enmod dav_lock
# a2enmod headers
dav_fs は dav を入れると、依存のために勝手に有効化する。headers は windows からアクセスする際のおまじないに必要。
設定は、さっきのバーチャルサーバに追加する。サイト全体でもいいけど、特定フォルダを DAV 設定するので、エイリアスを作る。
Alias /webdav "/var/www/webdav"
<Location "/webdav">
	Dav on
	Order allow,deny
	Allow from all
	Header add MS-Author-Via "DAV"

	AuthUserFile /var/www/.htpasswd
	AuthGroupFile /dev/null
	AuthName "Input Password"
	AuthType Basic
	require user foo bar
</Location>
まぁこんな感じ。
basic認証は、.htaccess 使ってもいいけど、DAVアクセスはシステムワイドに設定されてる(.htで始まるファイルへの)アクセス制限が効かないので、サーバ設定にしといた方がよい。
Header 設定は、windowsがアクセスする際に、存在しないファイルへのアクセス要求による利用不可能状態になるのを防ぐための設定。
DAVLockDB については、mods-available/dav_fs.conf に設定されているので、ここには特に記述は必要ない。

ちなみに dav 設定では、シンボリックリンクが効かない。代替手段として、Alias を使う…しかないんかな。ちなみに、日本語はシステムロケールと設定ファイルのエンコードが合ってれば特に問題ない。
こんな感じ
Alias /webdav/music/初音ミク "/share/music/ニコニコ/初音ミク"
Alias /webdav "/var/www/webdav"
ディレクトリも作っておく
$ sudo mkdir -p /var/www/webdav/music/初音ミク  (root(LANG=C)だと作れん…)
Alias の記述順に注意
(あ、なんの曲かバレたな)



3 PHP設定

少なくとも、ubuntu 7.10 の基本リポジトリには、apache2.2 で使える php4 パッケージはなさげ。
php使いじゃないのと、とりあえず中で飼ってる pukiwiki が動けばいいので、php5 で問題なし。
# aptitude install libapache2-mod-php5
# a2enmod php5



4 ついでにCGI設定 とか

# a2enmod cgi
# a2enmod suexec
ユーザ権限で動かすために。


つーか、共有相手って同じマンションの向かいの部屋だから、頑張ればWLANでもいいんだけどな…(笑)
Referrer (Inside): [2011-03-08-1] [2005-09-05-2]
前のエントリ: dovecotでimapアクセスできない [ubuntu]
次のエントリ: ActivePerlのppmがGUIになってる [perl]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12