2月 152013
 

TortoiseSVNとApache+ActiveDirectory(Windows 2008 R2)でシングルサインオン(SSO)

TortoiseSVNでドキュメントやデータを管理していて、クライアントはドメインのWindows7なのでApacheのmod_auth_krbでシングルサインオンできないか、調べてみた。

Continue reading »

12月 122011
 

Apache+mod_dav_svnを利用していて、リポジトリが別サーバにあり、それをHTTPS亜アクセスすると、証明書エラーが発生する。

svn: OPTIONS of 'https://10.1.1.2/svn': Server certificate verification failed: certificate has expired, certificate issued for a different hostname, issuer is not trusted (https://10.1.1.2)

解決方法は、ちょっと強引かもしれないが、Apacheの実行ユーザであるapacheのホームディレクトリにsvnの環境ファイルを配置することにした。

mkdir /var/www/.subversion/
chown apache.apache /var/www/.subversion/
usermod -s /bin/bash apache
su - apache
svn --username hogehoge https://10.1.1.2/svn

ここで、

(R)eject, accept (t)emporarily or accept (p)ermanently? 

と聞かれるので、pと回答すれば保存される。これで完了。ユーザのシェルをBashにしたので、戻しておく。

usrmod -s /sbin/nologin apache
5月 082011
 

現在subversionをつかって、データのバージョン管理をつかっているのだが、分散型バージョン管理に乗り換えようと検討してみた。分散型バージョン管理としては、Git、Mercurial、Bazaarが有名で比較的Gitが有名だと思われる。Gitについても検討したのだが、日本語対応ができておらず、「構成」などの日本語ファイル名を使用しるとWindowsクライアントでエラー終了してしまう問題があった。

日本語の取り扱いについて調べてみたら、GitとMercurialはファイル名をバイナリ扱いに対し、BazaarがUnicodeとしているらしいので、試してみた。

結果的に、bazaarはsubversionのようなcopyをサポートしていない為、導入は見送りにした。

Continue reading »

5月 072010
 

HTTPSを使用したバーチャルホストについての設定メモ。HTTPとは違って、HTTPSはSSL証明書1つを使用し複数のドメインを管理する。通常SSL証明書にはCNは1つしか、ドメインを書けないので複数ドメインを管理できない。なので、別の対策が必要になる。
今回は、subjectAltNameを使用した設定についてメモ。他にも、Server Name Indicationやワイルドカードでの対応もできる。

環境

OS debian
Apache 2.2.9-10+lenny7
openssl 0.9.8g-15+lenny6

Continue reading »

4月 262010
 

Apacheにて複数のNamed Virtualサーバを運用しているが、ログをすべてシスログサーバに転送したく、方法を検討した。

ApacheではError_LogにてSyslogの指定が可能だが、ファシリティしか設定ができないし、アクセスログはSyslogの指定すらできない。

Rsyslogを使いたいので、本家の設定参考ページを確認したところ、どうやらパイプでプログラムに渡すしかないみたい。

PerlやCでプログラムを作ってもいいが、loggerコマンドがあるのでそれを使うことにした。処理の概要はこんな感じ。最後に処理を終了しているのは、システムログ(/var/log/syslogとか)にApacheログが書き込まれるのを防ぐため。

  1. Apacheはパイプでloggerを使いファシリティとタグを付けrsyslogに渡す
  2. rsyslogはファシリティとタグにより、保存するファイル先を選定する
  3. rsyslogはファシリティによりシスログサーバに転送する
  4. rsyslogはファシリティによりその処理を終了する

Apacheの設定はこんな感じ。

CustomLog "|/usr/bin/logger -p local1.info -t www.goodnai.com" combined
ErrorLog "|/usr/bin/logger -p local1.info -t www.goodnai.com-error"

local1をApacheで使うことにした。

rsyslogはこんな感じ

$template onlymsg,"%msg%\n"

if $syslogfacility-text == 'local1' and $syslogtag == 'httpd:' then /var/log/apache2/access.log;onlymsg
if $syslogfacility-text == 'local1' and $syslogtag == 'httpd-error:' then /var/log/apache2/error.log;onlymsg

if $syslogfacility-text == 'local1' and $syslogtag == 'domain1:' then /var/log/apache2/domain1.access.log;onlymsg
if $syslogfacility-text == 'local1' and $syslogtag == 'domain2-error:' then /var/log/apache2/domain1.error.log;onlymsg

if $syslogfacility-text == 'local1' and $syslogtag == 'domain2:' then /var/log/apache2/domain2.access.log;onlymsg
if $syslogfacility-text == 'local1' and $syslogtag == 'domain2-error:' then /var/log/apache2/domain2.error.log;onlymsg

if $syslogfacility-text == 'local1' and $syslogtag == 'www.goodnai.com:' then /var/log/apache2/www.goodnai.com.access.log;onlymsg
if $syslogfacility-text == 'local1' and $syslogtag == 'www.goodnai.com-error:' then /var/log/apache2/www.goodnai.com.error.log;onlymsg

if $syslogfacility-text == 'local1' then @192.168.0.10
if $syslogfacility-text == 'local1' then ~

domain1,domain2,www.goodnai.comってのが、複数運用しているVirtual hostになる。192.168.0.10はシスログサーバ。~(チルダ)でrsyslogの処理を終了している。