旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

使えるネットVPSとの戦い【マイリポジトリ作成編】(1)

2007年10月2日

専用サーバを借りたら自分のリポジトリを持とうと思っていました。
ので、やってみたら、望むものが作れるまで5日間掛かった。夢というのは叶えがたきものですな。

この件について、nobu氏とberian氏に忘れるまで忘れないような恩を受けました。(すぐ忘れるけど)

【はじめに】
最終的な目的ですが、Web経由でアクセスできるリポジトリを建てることと、ある程度のセキュリティを確保することです。
ということで、Subversion + Apache + SSL を使って、マイリポジトリサーバを構築することにしました。

それでは、さっそく開始。
ちなみに、ココとかココとか他にも記事に上げてないことをしているので、もしかするとライブラリが足りなくて、明記している以外の yum install をする必要があるかもしれません。

【OpenSSLのインストール】
SSL認証のためにOpenSSLをインストールします。yumに無いのでソースから入れる。

cd /usr/local/src
wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz
tar fvxz openssl-0.9.8e.tar.gz
cd openssl-0.9.8e
./config \
--prefix=/usr/local/openssl \
-fPIC shared
make
make install

※最新版ソースは http://www.openssl.org/source/ から取得した。

続けて、今入れたOpenSSLライブラリへのパスを設定する。
openssl.confファイルを新規作成して

cd /etc/ld.so.conf.d
vim openssl.conf

以下の行のみを記入する

/usr/local/openssl/lib

今行った設定を反映する

ldconfig

※参考までに、 /etc/ld.so.confファイルや/etc/ld.so.conf.d/以下のファイルは、共有ライブラリを参照するパスの設定を行っている。なお、設定はここだけではなく、ユーザ別の環境変数でも設定できたり色々あるらしい。(けど、未調査)

【Apache2.2のインストール】
使えるネットVPSには元々入っているApacheがあるが、今回はSVNと連携させるため再構築する必要がある。
前準備として、元Apacheのプロセスを止める

httpd -k stop

Apacheのソースを取得し、展開する

cd /usr/local/src
wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.2.6.tar.gz
tar fvxz httpd-2.2.6.tar.gz

※最新版ソースは http://httpd.apache.org/download.cgi から取得した

aprとapr-utilは、ApacheとSVNで共通のものを参照する必要があるため、個別にインストールする。
aprのインストール

cd /usr/local/src/httpd-2.2.6/srclib/apr
./configure \
--prefix=/usr/local/apr
make
make install

apr-utilのインストール

cd /usr/local/src/httpd-2.2.6/srclib/apr-util
./configure \
--prefix=/usr/local/apr \
--with-apr=/usr/local/apr
make
make install

apacheのインストール

cd /usr/local/src/httpd-2.2.6
./configure \
--prefix=/usr/local/apache-2.2.6 \
--enable-mods-shared=most \
--enable-dav \
--enable-dav-fs \
--enable-dav-lock \
--enable-cgi \
--enable-cgid \
--enable-proxy \
--enable-proxy-balancer \
--enable-so \
--enable-ssl \
--with-ssl=/usr/local/openssl \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr
make
make install

※–enable-proxy と –enable-proxy-balancer は、RailsでMongrelを動かすのに必要(らしい)ので、実際のオペレーションとしては入れた。マイリポジトリを作るのみなら不要(らしい)。

これも不要っちゃ不要ですが、フォルダ名が若干長いのでシンボリックリンクを張りました

cd /usr/local
ln -s apache-2.2.6 apache
【Apacheの設定】
/usr/local/apache/conf/httpd.conf を開いて、いくつか修正を行う。

まずは、Apache実行ユーザの設定を行う。
Apache実行ユーザ=SVNリポジトリ権限のユーザとなるように、UserとGroupをwebadminに変更する。(もちろん、任意のユーザでも良い)
使えるネットVPSの場合は、webadminは元から居るはず。

#User daemon
#Group daemon
User webadmin
Group webadmin

続けて、SSL設定ファイルを読み込むようにする
以下のInclude行が最初はコメントアウトされているので、以下のように解除する

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

お次は /usr/local/apache/conf/extra/httpd-ssl.conf を開いて、修正を行う。
秘密鍵と自己証明書の格納フォルダ名を示す以下の2行を、修正する必要があるなら修正する

SSLCertificateFile "/usr/local/apache-2.2.6/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache-2.2.6/conf/server.key"

今回は以下のように変えた(ディレクトリ名ダサくてすみません)

SSLCertificateFile "/usr/local/apache-2.2.6/ssl_key_and_crt/server.crt"
SSLCertificateKeyFile "/usr/local/apache-2.2.6/ssl_key_and_crt/server.key"
【秘密鍵と自己署名証明書の作成】
格納用ディレクトリを作成する

cd /usr/local/apache-2.2.6
mkdir ssl_key_and_crt
cd ssl_key_and_crt

サーバ側の秘密鍵の生成
passの入力が求められるが、後でApacheを再起動するたびに使うことになるので、あまり適当じゃない文字列を入力する。

/usr/local/openssl/bin/openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.++++++
.........++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:

自己証明書の生成、passは先ほどと同じものを入力すること。
その他の項目は任意だが、入力なしでEnterは止めて、何かしら入力した方がいい。(後でSVNクライアントでSSL通信をした時に、これが原因でエラーになったことがある)

/usr/local/openssl/bin/openssl req -new -x509 -days 3650 -key server.key -out server.crt
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.