VPS Debian 環境で git や maven レポジトリを構築
Debian 6でgit / mavenのレポジトリを構築していきます
開発用ユーザ作成
開発者用アカウントを作成していない場合は作成する ※ 前回記事参照- カゴヤVPS Debian5 から 6 へアップグレードして Apache と FTP 接続環境を構築
- http://nantokaworks.com/?p=753
アカウントdevuserをwww-dataグループに追加
# gpasswd -a devuser www-data
gitやmavenレポジトリファイルの作成はdevuserで行う
WebDav
○ WebDavモジュールのロード
# a2enmod dav
Enabling module dav. Run '/etc/init.d/apache2 restart' to activate new configuration!
# a2enmod dav_fs
Considering dependency dav for dav_fs: Module dav already enabled Enabling module dav_fs. Run '/etc/init.d/apache2 restart' to activate new configuration!
WebDav (git / maven)日本語対策
WebDavを利用する前に日本語ファイル対策のためにApacheモジュールをインストールする。
# aptitude install libapache2-mod-encoding
# vim /etc/apache2/mods-available/encoding.conf
<IfModule mod_encoding.c> EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS SJIS AddClientEncoding "cadaver/" EUC-JP </IfModule>
○ encodingモジュールロード
# a2enmod encoding
Enabling module encoding. Run '/etc/init.d/apache2 restart' to activate new configuration!
git / maven用 SSL設定
今回、gitやmavenへのアクセスは http (80番ポート)を使わず https (443番ポート)を使いたいと思います。○ SSLモジュールのロード
# a2enmod ssl
Enabling module ssl. See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates. Run '/etc/init.d/apache2 restart' to activate new configuration!
○ https設定の確認
Apacheデフォルトのhttpsサイト定義 default-sslを使って設定します。
DocumentRootをhttpサイト定義defaultと同じ設定にします。
(defaultのサイト定義は前回記事参照)
# vim /etc/apache2/sites-available/default-ssl
DocumentRoot /var/www/ ↓ DocumentRoot /home/www-data/public_html/ <Directory /var/www/> ↓ <Directory /home/www-data/public_html/>
確認のため /home/www-data/public_html/index.html 作成
default-sslを有効にする
# a2ensite default-ssl
Enabling site default-ssl. Run '/etc/init.d/apache2 reload' to activate new configuration!
○ Apache再起動
# /etc/init.d/apache2 restart
https://exsample.com/ (:443)で確認
httpsでアクセスすると信用できないサイトとブラウザでエラー画面が表示されると思います。
これはApacheデフォルト(もしくは次に作る)証明書の出所が信頼できないということで表示されます。
Webサイトとして公開するのであれば別ですが、SSLアクセスを行うためだけなのでここでは無視します。
○ 証明書作成
新しい証明書を作ってdefault-sslに設定してみます
# mkdir /etc/apache2/ssl
# cd /etc/apache2/ssl
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf apache.pem
証明書ファイルを設定します
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key ↓ SSLCertificateFile /etc/apache2/ssl/apache.pem SSLCertificateKeyFile /etc/apache2/ssl/apache.pem
○ Apache再起動
# /etc/init.d/apache2 restart
https://exsample.com/ (:443)で確認
git
○ gitレポジトリルートディレクトリ作成- gitレポジトリ配置場所
- /home/devuser/git/repos
$ mkdir -p /home/devuser/git/repos
# chown www-data:www-data /home/devuser/git/repos
# chmod g+s+w /home/devuser/git/repos
○ Apaceh設定
Apacheのサイト定義ファイルにgitレポジトリフォルダーを追加する
# vim /etc/apache2/sites-available/default-ssl
<Directory /home/devuser/git/repos/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> # # This is to permit URL access to GIT WebDav. # Alias /git "/home/devuser/git/repos/" <IfModule mod_dav.c> DAVMinTimeout 600 <Location /git> DAV On Deny from all Allow from all </Location> </IfModule>
○ Apache再起動
# /etc/init.d/apache2 restart
ひとまずフォルダ内の一欄が表示されます。
ファイルが無いので中身は無いですが。
gitレポジトリBasic認証
このままだと誰でもアクセスできるので、ひとまずBasic認証の設定を行います。 ここではgitクライアントからのアクセス用にgituserを設定します 注)Basic認証 ユーザー ≠ git ユーザー○ gitアクセス用ユーザ作成
gitアクセス用ユーザをgituserとしてパスワードファイルを任意の場所に生成
# htpasswd -c /path/to/.git-htpass gituser
New password: パスワード入力 [enter] Re-type new password: 再度パスワードの入力 [enter] Adding password for user gituser
ユーザ名、パスワードはクライアント側で必要となるため把握しておく
○ 確認
$ vim /path/to/.git-htpass
gituser:xxxxxxxxxxxx //パスワードは暗号化されている
○ その他のユーザ管理コマンド
- ユーザ追加
# htpasswd /path/to/.git-htpass user2
- ユーザ削除
# htpasswd -D /path/to/.git-htpass user2
○ サイト定義にBasic認証の設定を追加
# vim /etc/apache2/sites-available/default-ssl
<Directory /home/devuser/git/repos/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> # # This is to permit URL access to git WebDav. # Alias /git "/home/devuser/git/repos/" <IfModule mod_dav.c> DAVMinTimeout 600 <Location /git> DAV On Deny from all Allow from all # 以下追加 AuthName "Git Repository Server" AuthType Basic AuthUserFile "/path/to/.git-htpass” Require valid-user # 以上追加 </Location> </IfModule>
○ Apache再起動
# /etc/init.d/apache2 restart
https://exsample.com/git/ へアクセス
ユーザ名パスワードを認証画面が表示され、正しいパスワード入力でディレクトリ一覧が表示されることを確認する
git(-core)インストール
# aptitude install git-core
○ 確認
$ git --version
git version 1.7.2.5
○ git サーバ側レポジトリ作成
$ cd /home/devuser/git/repos/
$ mkdir repo1.git
$ cd repo1.git
$ git init --bare --shared=true
$ git update-server-info
$ cd ..
# chmod g+s+w repo1.git
- repo1.gitレポジトリURL
- https:// exsample.com /git/repo1.git/
○ git クライアント側のホームディレクトリにBasic認証情報を配置する
以下、Windows XPで検証
- _netrcファイル 配置場所
C:Documents and Settingsgituser_netrc
- 記述内容
-
machine exsample.com login gituser password パスワード
_netrcファイルが存在しない場合、git push時にユーザ名 / パスワードの入力を求められる
○ クライアントからgitコマンドを実行する
(gitはインストール済みと仮定)
・git push
サーバ側で所謂「俺々証明書」を発行しているため、証明書チェックを行わないよう設定
$ git config --global http.sslVerify false
レポジトリ作成
$ git init
$ git remote add origin https://exsample.com/git/repo1.git/
type nul > README ←windowsの~ファイル生成コマンド
$ git add .
$ git commit -m "initial import"
$ git push origin master
pushできればOK
・git clone
$ git clone https://exsample.com/git/repo1.git/
○ レポジトリ確認
$ git config remote.origin.url
https://exsample.com/git/repo1.git/
maven
mavenレポジトリルートディレクトリ作成- mavenリポジトリ配置場所
- /home/devuser/maven/repos
$ mkdir -p /home/devuser/maven/repos
# chown www-data:www-data /home/maven/git/repos
# chmod g+s+w /home/devuser/maven/repos
○ mavenアクセス用ユーザ作成
パスワードファイルを任意の場所に生成
mavenアクセス用ユーザをmvnuserとしてパスワードファイルを任意の場所に生成
# htpasswd -c /path/to/.mvn-htpass mvnuser
New password: パスワード入力 [enter] Re-type new password: 再度パスワードの入力 [enter] Adding password for user mvnuser
ユーザ名、パスワードはクライアント側で必要となるため把握しておく
○ 確認
$ vim /path/to/.mvn-htpass
mvnuser:xxxxxxxxxxxx //パスワードは暗号化されている
○ サイト定義にBasic認証の設定を追加
# vim /etc/apache2/sites-available/default-ssl
<Directory /home/devuser/maven/repos/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> # # This is to permit URL access to maven WebDav. # Alias /maven "/home/devuser/maven/repos/" <IfModule mod_dav.c> DAVMinTimeout 600 <Location /maven> DAV On Deny from all Allow from all AuthName "Maven Repository Server" AuthType Basic AuthUserFile "/path/to/.mvn-htpass” Require valid-user </Location> </IfModule>
○ Apache再起動
# /etc/init.d/apache2 restart
https://exsample.com/maven/ へアクセス
ユーザ名パスワードを認証画面が表示され、正しいパスワード入力でディレクトリ一覧が表示されることを確認する
mavenレポジトリBasic認証
○ maven クライアント側のホームディレクトリにBasic認証情報を配置する以下、Windows XPで検証
- settings.xmlファイル 配置場所
C:Documents and Settingsgituser.m2settings.xml
- 記述内容
-
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<servers>
<server>
<id>http-basic-repository</id>
<username>mvnuser</username>
<password>パスワード</password>
</server>
</servers>
</settings>
○ 俺々証明書のサイトにmaven deploy(javaでアクセス)すると BUILD FAILURE が発生する
次の記事を参考に InstallCert.java をコンパイル・実行することで mvn deployを実行出来るようになりました。
注意点としてmvn deploy を実行するjavaと他のjavaとをしっかり区別しないと嵌ります。(生成されるフォルダが変わる)
- javaでSSL接続をすると、PKI PATHの構築に失敗となる
- http://www.melange.co.jp/blog/?p=2345