Recently I started to use Apache http server again. I am trying to build a SVN repository which can be accessed through HTTPS.
Environment
Ubuntu
Apache 2.2.17 source
Doc: http://httpd.apache.org/docs/2.2/
Build
./configure --prefix=/home/gerald/servers/httpd-2.2.17 --enable-ssl --enable-dav --enable-so
make
make install
add bin directory to your PATH
add man pages:function addManPath() { if (($# != 1)); then return 0; fi path="$1" if [ "x$MANPATH" == "x" ]; then export MANPATH="$(manpath):$path" else export MANPATH="${MANPATH}:$path" fi } addManPath "~/servers/httpd-2.2.17/bin/man"
start up apache server: apachectl start
benchmarking: ab -n 10000 -c 100 http://localhost:80/
Show modules:
httpd -M //show all loaded modules
httpd -S // show parsed virtual host settings
httpd -l //listed compiled in modules
httpd -L //list available configuration directives
httpd -V //show compile settings (not settings for compiling the whole package, the settings for compiling the server - httpd).
Configure SSL
Prepare your certificate and private key.
Uncomment line "Include conf/extra/httpd-ssl.conf" in httpd.conf.
Change file "conf/extra/httpd-ssl.conf". The most important directives are SSLCertificateFile and SSLCertificateKeyFile.
Test whether you can access your website through HTTPS.
SSL + SVN
Get modules dav_svn and authz_svn
dpkg-deb -x libapache2-svn_1.6.5dfsg-1ubuntu1_i386.deb
copy two module (.so files) to apache modules directory.
Configure modules
Edit file <Apache>/conf/extra/dav_svn.load
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
Edit file <Apache>/conf/extra/httpd.conf, add following two lines
Include conf/extra/dav_svn.load
Include conf/extra/dav_svn.conf
Edit file <Apache>/conf/extra/dav_svn.conf
<Location /svn/> <!-- trailing / is necessary!! --> DAV svn
SSLRequireSSL # enforce use of HTTPS #SVNPath /var/lib/svn SVNParentPath /home/svn/projects SVNListParentPath on AuthType Basic AuthName "Subversion Repository" AuthUserFile Apache_Dir/conf/dav_svn.passwd # To enable authorization via mod_authz_svn AuthzSVNAccessFile Apache_Dir/conf/dav_svn.authz Require valid-user </Location>
Create authentication and authorization files
Create password file: htpassword -cm <Apache>/conf/dav_svn.passwd gerald
Edit file <Apache>/conf/dav_svn.authz
[groups] admin=gerald guests=guest [/] @admin=rw [repository_name:/directory] @admin=rw
Test
Restart Apache httpd server.
Go to https://your_ip/svn/ (note: the trailing / is necessary!)
Permission Problem
If you see following error when you try to commit some code:
follow these steps:svn: Commit failed (details follow):
svn: Can't open file '/path/to/your/repo/db/txn-current-lock': Permission denied
- Execute command: ps -wwf $(pgrep httpd)
You should say one of the processes is run as root. All other processes are run as daemon (in my case). - To make httpd able to access(read/write) your svn repository, you should set the file permissions of svn repository correctly.
chown -R gerald:daemon /path/to/svn/repo
chmod -R 770 /path/to/svn/repo
No comments:
Post a Comment