CentOS 6.2 상에서 간편하게(응?) subversion을 apache와 연동해서 띄워보자, 하고 일단 시작. 어떤놈이 어떤 버전이 좋으니 이런건 아무래도 모르므로, 걍 CentOS 6.2 미러에서 간편하게 찾아서 설치할 수 있는 놈으로 선택. 그러니까 httpd-2.2.15-15.el6.centos 요놈과 subversion-1.6.11-2.el6_1.4 요놈.
일단 RPM을 찾아서 설치. 그리고 두 놈을 연동시키기 위한 mod_dav_svn-1.6.11-2.el6_1.4 요놈도 설치.
흠. 그럴싸 해. 그런데 하는 김에 SSL도 넣어볼까? (로컬에서만 접속할꺼니까 별 의미는 없긴 하지만.) 일단 검색. 쭉 찾다보니 mod_ssl이라는 놈이 필요하네? mod_ssl-2.2.15-15.el6.centos 요 패키지도 추가. 그런 뒤에 도대체 어떻게 하나 찾아봤더니..
# htpasswd -cm dav_svn.passwd elenoa
New password:
Re-type new password:
Adding password for user elenoa
#
아파치를 실행!
# apachectl start
[Wed Feb 29 00:38:14 2012] [warn] module dav_svn_module is already loaded, skipping
Warning: DocumentRoot [/home/svn/empty] does not exist
httpd: apr_sockaddr_info_get() failed for backup_server_addr
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
#
음, /home/svn/empty를 안만들었고, 저장소 공간도 안만들었네. 일단 만들고 다시 시도.
# apachectl start
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
#
뭐 저거야 도메인 명이 없으니까 패스. 자, 이제 시작해볼까?
# svn co http://backup_server_addr/svn/Proj Proj/
svn: OPTIONS of 'http://backup_server_addr/svn/Proj': 200 OK (http://...)
#
.. 뭐니? 일단 repository 소유를 apache로 돌리고,
# chown -R apache:apache /home/svn
그래도 안되긴 한다. 뭔가 빼먹었나보지? 혹시 몰라서 /home/svn/empty/svn 디렉토리를 생성. 그러니까.. 어 되긴 된다. 인증을 요구하네. 인증하고 들어가보니..
# svn co http://backup_server_addr/svn/Proj Proj
Authentication realm: <http://backup_server_addr:80> Proj Backup Repository (Win, Proj)
Username: elenoa
Password for 'elenoa':
svn: Could not open the requested SVN filesystem
#
.. 뭐냐. 다시 /home/svn/empty/svn/Proj 디렉토리까지 생성. 이번에는..
# !svn
svn co http://backup_server_addr/svn/Proj Proj
Authentication realm: <http://backup_server_addr:80> Proj Backup Repository (Win, Proj)
Username: elenoa
Password for 'elenoa':
svn: Repository moved permanently to 'http://backup_server_addr/svn/Proj/'; please relocate
#
It's also possible that you have an object in the web root which has the same name as your repository URL. For example, imagine your web server's document root is /var/www and your Subversion repository is located at /home/svn/repo. You then configure Apache to serve the repository at http://localhost/myrepo. If you then create the directory /var/www/myrepo/ this will cause a 301 error to occur.
네. 그러니까 두번째 생성된 디렉토리가 잘못이라는거죠. 알겠거든요. 그러면 그 전 에러는 뭐냐구요.
SVNPath가 아니라 SVNParentPath 이거구나! (SVNPath로 잘 돌리는 사람들은 뭐지;)
# !svn
svn co http://backup_server_addr/svn/Proj Proj
Authentication realm: <http://backup_server_addr:80> Proj Backup Repository (Win, Proj)
Username: elenoa
Password for 'elenoa':
svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONS request for 'http://backup_server_addr/svn/Proj'
#
아싸! 이번에는 오류가 바뀌었다. 301에서 403으로! 아파치 로그에는 이렇게 남았다.
[Wed Feb 29 03:30:21 2012] [error] [client server_addr] The URI does not contain the name of a repository. [403, #190001]
아 만사가 귀찮아서 다시 SVNPath로 변경했더니 성공; 이건 뭐지. (애초에 OPTION 200 OK 떨어지던 상황은 어떻게 해결이된거지;)
나중에 생각해보니 보니 httpd.conf 내용들을 일부 정리했다. (뭘 뺐는지 기억도 안난다;) 대략 NameVirtualHost *:80을 넣었고, <VirtualHost> 구문 안의 서버 주소를 *로 변경한건 확실. 중간에 chcon도 한번 한듯 하다. chown은 아까 apache:apache로 넘겨놓은 상태지만 어쨌든 같은 퍼미션 문제이니 같이 정리.