使えるネットVPSとの戦い【マイリポジトリ作成編】(1)
2007年10月2日
ので、やってみたら、望むものが作れるまで5日間掛かった。夢というのは叶えがたきものですな。
この件について、nobu氏とberian氏に忘れるまで忘れないような恩を受けました。(すぐ忘れるけど)
最終的な目的ですが、Web経由でアクセスできるリポジトリを建てることと、ある程度のセキュリティを確保することです。
ということで、Subversion + Apache + SSL を使って、マイリポジトリサーバを構築することにしました。
それでは、さっそく開始。
ちなみに、ココとかココとか他にも記事に上げてないことをしているので、もしかするとライブラリが足りなくて、明記している以外の yum install をする必要があるかもしれません。
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/以下のファイルは、共有ライブラリを参照するパスの設定を行っている。なお、設定はここだけではなく、ユーザ別の環境変数でも設定できたり色々あるらしい。(けど、未調査)
使えるネット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
/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.