ラベル Subversion の投稿を表示しています。 すべての投稿を表示
ラベル Subversion の投稿を表示しています。 すべての投稿を表示

2010年1月21日木曜日

1/20 Git 1.6.6.1 released。gitがsubversionのversionを追い抜いた

git 1.6.6.1
http://git-scm.com/

subversion 1.6.6
http://subversion.tigris.org/

Linus曰く「Subversionは史上最も無意味なプロジェクト」 - スラッシュドット・ジャパン
http://slashdot.jp/developers/article.pl?sid=07/12/03/1024220
Subversion ユーザーのための Git: 第 1 回 Git 入門
http://www.ibm.com/developerworks/jp/linux/library/l-git-subversion-1/

2010年1月3日日曜日

Install Tutorial: Ubuntu 9.10, Apache with SSL, Subversion over HTTP / HTTPs(digest authentication), and Trac

例によって
Install Tutorial: Ubuntu 9.04, Apache with SSL, Subversion over HTTP / HTTPs, and Trac - NewInstance
http://en.newinstance.it/2009/08/27/tutorial-ubuntu-904-apache-with-ssl-subversion-over-http-https-and-trac/
を元ネタ・たたき台にする。


-http/httpsで同じコンテンツが見られるようにする
-Subversion/tracの認証はdigest

SVNクライアントはrapidsvn,kdesvnなどが良い。

SSLの証明書については
[SOLVED] HOWTO How to renew an expired Dovecot IMAP/POP3 SSL certificate - Ubuntu Forums
http://ubuntuforums.org/showthread.php?t=707161
などを参照。

sudo cat /etc/ssl/private/ssl-cert-snakeoil.key
であらかじめ入っているものが見られる。


apt-getでのインストール時に必要であれば--no-install-recommendsというオプションをつける。


Apache2,Subversionをいれる。
$ sudo apt-get install subversion curl apache2 libapache2-svn

-Apache2の設定を整理する
$ sudo a2dissite default
$ sudo /etc/init.d/apache2 stop

http/httpsで同じ内容を見せる際にdefault/default-sslの両方の内容を同じように編集するのは無駄なので片寄せする
$ cd /etc/apache2/sites-available/
$ sudo cp default 100-default
$ sudo cp default 101-default-core
$ sudo cp default-ssl 102-default-ssl

100と102が101の設定をincludeするように設定する。
101を変更すれば100(http),102(https)のディレクトリ構成が同時に変更される。


最初と最後のVirtualHostの行を削る
$ sudo gedit 101-default-core
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

最初と最後のVirtualHost以外を消してIncludeに置き換える
$ sudo gedit 100-default
<VirtualHost *:80>
Include /etc/apache2/sites-available/101-default-core
</VirtualHost>

VirtualHost内のServerAdmin~Directoryタグの内容をIncludeに置き換える
$ sudo gedit 102-default-ssl
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
Include /etc/apache2/sites-available/101-default-core

# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
$ sudo gedit ../ports.conf
IfModuleの所にNameVirtualHost *:443を追加する
NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
NameVirtualHost *:443
Listen 443
</IfModule>

siteのload
$ sudo a2ensite 100-default
$ sudo a2ensite 102-default-ssl

Apacheの起動
$ sudo a2enmod ssl
$ sudo /etc/init.d/apache2 start

動作確認
$ curl http://localhost/
$ curl -k https://localhost/


/varの容量を割り当てるのは熟練した運用の経験が必要な為、/home以下に各種環境を構築する

$ sudo mkdir /home/svn
任意のproject名でdirectoryを作る。ここでは「project1」
$ sudo mkdir /home/svn/project1
$ sudo chown www-data.www-data /home/svn/project1
$ sudo -u www-data svnadmin create /home/svn/project1

(必要に応じてバックアップ$ sudo cp /etc/apache2/mods-available/dav_svn.conf /etc/apache2/mods-available/dav_svn.conf.bak)
$ sudo gedit /etc/apache2/mods-available/dav_svn.conf

末尾に以下を追加
<Location /svn/project1>
DAV svn
SVNPath /home/svn/project1
AuthType Digest
AuthName "project1"
AuthUserFile /etc/subversion/project1.passwd
Require valid-user
</Location>

$ sudo htdigest -c /etc/subversion/project1.passwd "project1" svnuser
-cは新しくpasswdファイルを作る場合。""の中はAuthNameで設定したもの。最後が追加するユーザー名。
$ sudo a2enmod auth_digest
$ sudo /etc/init.d/apache2 restart

*ここではpasswordは「test」にした場合
$ curl --digest http://svnuser:test@localhost/svn/project1/
$ curl --digest -k https://svnuser:test@localhost/svn/project1/


tracのインストール

$ sudo apt-get install trac libapache2-mod-python
$ sudo mkdir /home/trac
$ sudo chown www-data.www-data /home/trac

100と102に読み込まれるtracの共通設定103を作る。
$ sudo gedit /etc/apache2/sites-available/103-default-trac

<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/trac
PythonOption TracUriRoot /trac
PythonOption PYTHON_EGG_CACHE /tmp
</Location>

<LocationMatch "/trac/[[:alnum:]]+/login">
AuthType Digest
AuthName "trac"
AuthUserFile /etc/trac/trac.passwd
Require valid-user
</LocationMatch>

100(http)に103を読み込む
$ sudo gedit /etc/apache2/sites-available/100-default
<VirtualHost *:80>
Include /etc/apache2/sites-available/101-default-core
Include /etc/apache2/sites-available/103-default-trac
</VirtualHost>


102(https)に103を読み込む
$ sudo gedit /etc/apache2/sites-available/102-default-ssl
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
Include /etc/apache2/sites-available/101-default-core
Include /etc/apache2/sites-available/103-default-trac

101と103を読み込むものを作ってそれを100,102で読み込んでも良い。

$ sudo htdigest -c /etc/trac/trac.passwd "trac" svnuser
$ sudo -u www-data trac-admin /home/trac/project1 initenv

Project Name [My Project]> project1
Database connection string [sqlite:db/trac.db]>
Repository type [svn]>
Path to repository [/path/to/repos]> /home/svn/project1

$ sudo /etc/init.d/apache2 restart
$ sudo -u www-data trac-admin /home/trac/project1 permission add svnuser TRAC_ADMIN


sites-availableに単体で完結しないsite設定があるのが気持ち悪い場合はどうしたものか。
-/etc/subversion/project1.passwd
-/etc/trac/trac.passwd
これらsvnとtracの認証のpasswdはrealmを同じにすれば統一出来るので一括して変更が可能になる。


to doというか備忘録というか後でやるLDAP
http://blog.acmelab.org/2007/09/02/ubuntu-server-setup-lampldapsvntracmoinmoin/

2009年9月21日月曜日

Install Tutorial: Ubuntu 9.04, Apache with SSL, Subversion over HTTP / HTTPs, and Trac 改

元ネタ或いは大いに参照すべきもの
Install Tutorial: Ubuntu 9.04, Apache with SSL, Subversion over HTTP / HTTPs, and Trac - NewInstance

より詳しい最新(Ubuntu9.10)の手順は
axis of evil Google: Install Tutorial: Ubuntu 9.10, Apache with SSL, Subversion over HTTP / HTTPs(digest authentication), and Trac
http://salvan-devmemo.blogspot.com/2010/01/install-tutorial-ubuntu-910-apache-with.html


冒頭のURLの手順から
-/etc/apache2/mods-available/dav_svn.conf
-/etc/apache2/sites-available/default
AuthTypeをBasicからDigestに変更し、passwordの生成はhtpasswdからhtdigestに変更する。引数は同じuser名の前にrealmを入れる。
hashの方式の違いからpasswordが変わるので別のfile名にする場合はAuthUserFileのpathも変える。
/etc/apache2/sites-available/defaultの末尾につけたtrac用の情報を/etc/apache2/sites-available/default-sslにも貼り付ける。
sudo a2enmod auth_digest
でdigest認証moduleを動かし、apacheを再起動する。


Firefox + HttpFox或いはWireshark等で認証がBasicからDigestになっている事を確認する。


Upgrading to 2.2 from 2.0 - Apache HTTP Server
The directive AuthDigestFile from mod_auth_digest has been merged with AuthUserFile and is now part of mod_authn_file.
という事でAuthUserFileをAuthDigestFileにする必要はない。


変更前
app 認証 ssl
subversion basic o
trac basic x

変更後
app 認証 ssl
subversion digest o
trac digest o

参考
core - Apache HTTP Server
Digest認証 - Wikipedia
Basic認証 - Wikipedia


関連
The Trac Project