서론

이전부터 eclipse 를 많이 써 왔었는데 여기에 subversion 을 연동하게 되면 정말 강력한 개발 환경이 된다. 여기에 subversion 서버만 가지고 있다면 어디서든 eclipse 만 있다면 subversion 에 의해 내가 작업하던 환경을 빠르게 구축 할 수 있게 된다. 또한 이런 svnserver 를 아파치와 연동시키는 것이 가능한데 연동을 하게되면 웹에서 저장소를 직접 접근 할 수 있게 된다. 여기서는 apache 와 svnserver 를 연동하는 법을 알아보도록 하자

 

본론

1. subversion 설치

내 서버는 gentoo 이기 때문에 아래 명령어로 subversion 을 설치한다.

emerge subversion

2. subversion 저장소 생성

subversion 저장소는 repository 라고 불리우며 이 저장소에 소스가 저장되게 된다. 아래와같은 명령으로 생성하게 된다. 여기서 중요한것은 apache 로 접근해야 하기때문에 그룹을 apache 로 바꾸어 줘야 한다는것이다. 또한 apache 가 변경 할 수도 있기 때문에 그룹쓰기 권한을 추가해 준다.

svnadmin create cranix

chown –R root.apache cranix

chmod –R g+w cranix

3. 비밀번호파일 만들기

apache 에서 아무나 접근하지 못하도록 하기 위해서 apache 에서 제공하는 authn_file 모듈을 이용해 비밀번호를 걸어놓도록 하자. 아래와같은 명령으로 비밀번호 파일을 생성할수 있는데 적절한 위치에 위치시키자

htpasswd –c [패스워드파일이름] [유저아이디]

4. apache 설정 변경

apache 와 svn 이 연동하기 위해서는 모듈 파일의 로드가 필요한데 아래와같은 명령으로 로드 할수 있다. svn 말고도 위에서 만든 비밀번호를 인증하는 모듈도 필요한데 그것도 같이 로드시키자 물론 이미 로드되어있다면 건너뛰어도 무방하다.

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

LoadModule authn_file_module modules/mod_authn_file.so

내 서버에서는 svn.cranix.net 으로 접근하면 svn 에 접근할 수 있게 되는데 그에대한 가상호스트 설정은 아래와 같다. SVNPath 에다가 자신이 생성한 svn 저장소의 위치를 적어주고 AuthUserFile 에다가 생성한 비밀번호 파일의 위치를 적어주면 된다. SVNPath 말고 SVNParentPath 를 사용할 수도 있는데 이것은 여러 저장소에 접근할때 쓰는방법으로 저장소의 상위 디렉토리의 위치를 적어주고 웹에서는 http://svn.cranix.net/cranix 와 같은 형태로 접근하면 된다.

<VirtualHost svn.cranix.net:80>
        ServerName svn.cranix.net
        <Location "/">
                DAV svn
                #SVNParentPath /home/users/admins/svnroot
                SVNPath /home/users/admins/svnroot/cranix
                AuthType Basic
                AuthName "cranix repository"
                AuthUserFile /home/users/admins/svnroot/cranix/conf/htusers
                Require valid-user
                Order Deny,Allow
                Allow from all
        </Location>
</VirtualHost>

5. 테스트

모든 셋팅이 끝났다면 apache 를 재시작 한 다음에 http://svn.cranix.net 으로 접근해 보면 아래와같이 인증화면이 나오게되고 인증을 거치면 저장소가 보여지게 된다.

결론

svn 은 원래 팀 작업을 위해 있는 도구이다. 그러나 개인적으로 간단한 자료실로만 사용해도 훌륭한 도구가 될 수 있다. 이제는 어떤 작업을해도 svn 에 소스를 커밋 하기 전에는 불안하다. 이건 svn 증후군인가…

신고
by cranix 2009.08.07 16:42

서론

최근 페도라코어10 리눅스 시스템에 apache+ajp+tomcat 를 셋팅할 일이 생겨서 삽질끝에 작업을 완료하였다. 그래서 이번에 내 gentoo 리눅스 서버에도 미뤄두었던 tomcat 연동을 하기로 맘을 먹었다.

 

본론

1. apache 업그레이드 하기

mod_proxy_ajp 는 apache 2.2 버젼에서 추가된 모듈이기 때문에 그 이하의 버젼이라면 업그레이드 해야한다. gentoo 에서 아파치 업그레이드 하는방법은 아래 사이트를 참조하기 바란다. 여기서 중요한건 업그레이드 중에 make.conf 설정에서 APACHE2_MODULES 셋팅에 proxy_ajp 를 추가하고 나머지를 알맞게 변경해야 한다는 것이다.

http://www.gentoo.org/proj/en/apache/doc/upgrading.xml

2. 가상호스트 설정하기

아파치와 연동한 이유는 아파치의 다른 기능들을 그대로 쓰면서 톰켓도 돌아가게 하기 위해서 이다. 그래서 아파치의 가상호스트 설정으로 특정 서브도메인을 지정해서 해당 가상호스트로 들어오는 모든 요청은 톰켓으로 돌리도록 만들겠다. 먼저 아파치 가상호스트 설정에 아래와같이 추가해서 apps.cranix.net 으로 들어오는 모든 요청을 톰켓으로 돌리도록 한다.

<VirtualHost apps.cranix.net:80>
        ServerName apps.cranix.net
        ServerAdmin cranix@cranix.net
        ErrorLog "/home/users/admins/cranix/logs/apps_error_log"
        RewriteEngine On
        RewriteRule (.*) ajp://localhost:8009$1 [P]
</VirtualHost>

가상호스트 설정은 아파치에만 있는것이 아니다 톰켓 역시 하나의 서버이고 가상호스트 설정을 가지고 있다. 위에서 설정한 설정대로 아파치에서 먼저 요청을 받아서 톰켓으로 넘기게 되면 톰켓 역시 apps.cranix.net  이라는 도메인으로 받게 됨으로 가상호스트 설정을 해 주어야 한다. 톰켓 설정은 server.xml 파일을 열어서 아래 부분을 추가한다.

<Host name="apps.cranix.net" appBase="/home/users/admins/cranix/webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
                <Context path="" docBase="/home/users/admins/cranix/public_html" privileged="true"/>
</Host>

그리고 톰켓의 기본 http 포트인 8080 번은 쓰지 않을것이기 때문에 해당 Connector 태그는 주석을 걸어준다.

이제 /home/users/admins/cranix/webapps 디렉토리에 톰켓 어플리케이션을 올리게되면 http://apps.cranix.net/[어플리케이션명] 형태로 접근이 가능하게 된다.

3. 보안관련 셋팅하기

톰켓 혼자서 실행시키면 알아서 /WEB-INF 디렉토리나 /META-INF 디렉토리의 접근을 금지했지만 apache 와 같이 실행하면 설정을 해 주어야 한다. apache 의 설정파일에 아래 내용을 추가한다.

<LocationMatch “/WEB-INF”>

deny from all

</LocationMatch>

<LocationMatch “/META-INF”>

deny from all

</LocationMatch>

 

결론

서버작업은 언제나 삽질의 연속이다. 이 작업도 써놓은것은 얼마 안되지만 이 결과를 얻기 위해서 수많은 삽질을 했다. 그래도 역시나 깔끔해진 서버를 보면 뿌듯하긴 하다.

신고
by cranix 2009.08.07 15:47
- fedora 10 받기
페도라 공식 홈페이지 (무료)
CD-R 한장짜리 (700 MB) Fedora10 Live 받아서 설치하면 기본적으로 영어로 깔림.


- yum 으로 gcc, java, mysql, tomcat, php, php-mysql 설치
   - gcc
gcc-4.3.2-7.i386

   - java
java-1.6.0-openjdk
java-1.6.0-openjdk-devel
   - mysql
mysql-5.0.67-2.fc10.i386
mysql-gui-tools-5.0r12-9.fc10.i386
mysql-libs-5.0.67-2.fc10.i386
mysql-gui-common-5.0r12-9.fc10.i386
mysql-administrator-5.0r12-9.fc10.i386
mysql-query-browser-5.0r12-9.fc10.i386
mysql-server-5.0.67-2.fc10.i386
    - tomcat (yum install tomcat6\*)
tomcat6-jsp-2.1-api-6.0.18-6.2.fc10.noarch
tomcat6-6.0.18-6.2.fc10.noarch
tomcat6-webapps-6.0.18-6.2.fc10.noarch
tomcat6-admin-webapps-6.0.18-6.2.fc10.noarch
tomcat5-jsp-2.0-api-5.5.27-6.1.fc10.noarch
tomcat6-servlet-2.5-api-6.0.18-6.2.fc10.noarch
tomcat5-servlet-2.4-api-5.5.27-6.1.fc10.noarch
tomcat6-javadoc-6.0.18-6.2.fc10.noarch
jakarta-commons-collections-tomcat5-3.2-2.3.fc10.i386
jakarta-commons-dbcp-tomcat5-1.2.1-11jpp.4.fc10.i386
tomcat6-docs-webapp-6.0.18-6.2.fc10.noarch
jakarta-commons-pool-tomcat5-1.3-10.5.fc10.i386
tomcat6-lib-6.0.18-6.2.fc10.noarch
    - php (yum install php)
php-5.2.6-5.i386
php-cli-5.2.6-5.i386
php-common-5.2.6-5.i386
php-pdo-5.2.6-5.i386


    - php-mysql (yum install php-mysql)
php-mysql-5.2.6-5.i386

- vsftpd 설정
    1. touch /etc/vsftpd/chroot_list
    2. vsftpd.conf 수정
anonymous_enable=NO
chroot_local_user=YES
passwd_chroot_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

- apache+tomcat 연동하기
http://wiki.kldp.org/wiki.php/Apache2Tomcat5Howto2

- tomcat server.xml 설정에서 8080 기본 리슨을 삭제
- 각 유저 디렉토리 권한은 711, public_html 디렉토리 권한은 755 로 셋팅해야함


- setup 설정
setup 명령실행후 iptables 모두 죽이고 지금까지 설치한 데몬 모두 살리기


- SELinux 해제 (보안관리도구)
시스템 -> 관리 -> SELinux Management 가서 Disabled 로 바꿈


신고
by cranix 2009.03.25 13:51
| 1 |