일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Babel
- 3.5
- Powermockup
- eclipse
- Find
- tagx
- CentOS
- 파워목업
- linux
- yum
- 삽질
- NEXUS
- 이클립스
- 갈릴레오
- 연동
- 보드
- tomcat
- resin
- CentOS6
- svn
- Apache
- Galileo
- SSL
- 지름신
- netstate
- Java
- egrep
- trac
- subversion
- 권한변경
- Today
- Total
....
개발용 서버 설치 본문
== 설치프로그램 목록 ==
* CentOS 6.4
* 최소설치
* Apache2
* 모든 웹요청에 대한 Frontend 처리를 담당.
* JDK7
* Tomcat7
* 개발된 어플리케이션을 배포하고 테스트할 WAS
* Resin 4
* Java기반의 인프라 어플리케이션을 실행할 WAS
* Subversion
* 어플리케이션 리소스 형상관리
* Trac
* 이슈관리, 위키를 이용한 공용 문서 관리
== CentOS 6.4 ==
* 기본적인 디렉토리 및 파티션 설정등은 생략
* Base Server 패키지로 X를 제외하고 최소설치
* 설치 완료 후 다음 명령으로 OS 업데이트
* yum update
* 방화벽에 포트를 오픈
> HTTP(80), HTTPS(443), HTTP8080(8080)
> vi /etc/sysconfig/iptables
>> -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT ## Apache
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT ## Apache
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT ## WAS Tomcat
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9080 -j ACCEPT ## WAS Resin
* 방화벽 재시작
> service iptables restart
* SELinux 비활성화 (해당 단계를 건너뛸 경우 OTL을 맛보게 되는 수 있음.)
> vi /etc/sysconfig/selinux
>> 다음 내용으로 수정한다.
>> SELINUX=disabled
> reboot
* 어플리케이션을 실행할 일반 유저 권한 생성
> useradd app
> passwd app
>> [사용할 암호를 지정]
* app 계정에서 sudo 명령을 사용할 수 있도록 한다.
> ## 암호도 입력할 필요가 없도록 할 경우
> echo 'app ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/app
> ## 암호를 입력하도록 할 경우
> echo 'app ALL=(ALL) ALL' >> /etc/sudoers.d/app
* 환경설정 프로파일을 생성하고 작성한다.
* 안의 내용은 필요시 계속 추가한다.
> vi /etc/profile.d/내맘대로.sh
> #!/bin/sh
> CATALINA_HOME=/app/tomcat
> ......
== 필요한 프로그램 설치 ==
* 컴파일 지원을 위해 gcc를 설치한다.
> yum install gcc
* 콘솔상에서 편안한 파일전송을 위해 lrzsz를 설치
> yum install lrzsz
== Java Developement 설치 ==
* CentOS에서 제공하는 Open JDK를 설치
> yum install java-1.7.0-openjdk-devel
[root@dev ~]# java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (rhel-2.3.10.4.el6_4-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)
== Apache2 설치 ==
* yum으로 httpd-devel을 설치
* 동적 모듈 컴파일을 대비해 httpd-devel을 설치한다.
* yum install httpd-devel
* mod_python 설치
* Trac 연동을 위해 설치. CentOS Repository에서 없어졌다...
> cd /usr/local/src
> http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz
tar xvzpf mod_python-3.3.1.tgz
cd mod_python-3.3.1
./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/bin/python -prefix=/etc/httpd/modules
make && make install
* 기타 yum으로 설치할 수 있는 module 설치
> yum install mod_ssl mod_dav_svn
* 다음 내용을 /etc/httpd/conf/httpd 에서 수정
> # 서버의 이름을 지정한다. (안할 경우 시작할때마다 경고가 출력된다)
> ServerName dev.domainname.co.kr
> # 아파치가 실행될 유저를 지정한다.
> User app
> Group app
* 직접 관리하는 아파치용 config 파일을 만들어둔다.
> touch /etc/httpd/conf.d/service.conf
* 아파치에 대한 추가 기본설정 지정
> vi /etc/httpd/conf.d/service.conf
> ## SSL로 강제로 redirect 시킬 어플리케이션 컨텍스트를 정규식으로 지정
> ## 이곳에 지정하는 컨텍스트는 http로 서비스를 수행하지 않는다.
> <LocationMatch "^/(manager|tomcat|svn|trac|hudson)/">
> # Force clients from the Internet to use HTTPS
> RewriteEngine on
> RewriteCond %{HTTPS} !=on
> RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
> </LocationMatch>
>
> ## 인증이 필요한 컨텍스트 정의(트랙과 SVN으로 사용할 컨텍스트를 동시에 처리)
> <LocationMatch "^/(svn|trac)/">
> AuthType Basic
> AuthName "Subversion Repository"
> AuthUserFile /etc/httpd/conf/htpasswd
> Require valid-user
> </LocationMatch>
> chkconfig --level 345 httpd on
> chkconfig --list | grep httpd
== Subversion 설치 ==
* yum 으로 설치
> yum install subversion
* 저장소 디렉토리 생성 및 sample 저장소 생성
> mkdir /app/repos/svn
> chown app.app /app/repos/svn -R
> cd /app/repos/svn
> svnadmin create sample
* 다음 내용을 /etc/rc.local에 추가하고 실행한다.
> svnserve -d -r /app/repos/svn
* apache에 svn 컨텍스트 지정
> vi /etc/httpd/conf.d/service.conf
> ## Subversion module
> ## 인증, HTTPS제한은 apache공통에서 처리했으므로 생략
> <Location /svn>
> DAV svn
> SVNParentPath /app/repos/svn
> </Location>
* 아파치 재시작후 http://server/svn/sample 로 접속
> Revision 0:/ 과 같은 내용이 보이면 성공.
== Trac 설치 ==
* Trac설치에 필요한 프로그램 설치
> yum install python-devel
> yum install sqlite-devel
* Python easy_install을 이용해서 설치
> easy_install SQLObject
> easy_install Genshi
> easy_install Babel
> easy_install pysqlite
> easy_install Trac
* Trac 테스트 프로젝트 생성 및 실행 테스트
> mkdir /app/repo/trac
> cd /app/repo/trac
> trac-admin test initenv
> chown app.app /app/repos/trac -R
> tracd -p 80 /app/repo/trac/test --USER=app
> 브라우져로 http://localhost/test 접속해서 화면이 표시되는지 확인.
> ## 만약 tracd 실행시 권한 오류가 발생할 경우
>> selinux가 활성화 되어 있는지 확인
>> /app/repos/trac에 대한 app계정의 쓰기 권한이 있는지 확인
* 아파치에 Trac에 대한 설정을 지정
> vi /etc/httpd/conf.d/service.conf
> ## Trac module application
> ## 인증, HTTPS제한은 apache공통에서 처리했으므로 생략
> <Location /trac>
> SetHandler mod_python
> PythonInterpreter main_interpreter
> PythonHandler trac.web.modpython_frontend
> PythonOption TracEnvParentDir "/app/repos/trac"
> PythonOption TracUriRoot "/trac"
> PythonOption PYTHON_EGG_CACHE /app/repos/trac-cache"
> </Location>
* 서비스 시작 정지
> Apache 실행시 모듈로 로드되므로 Apache 서비스와 같이 관리된다.
== SSL 인증서 설치 ==
* yum으로 mod_ssl을 설치했다면 기본 인증서로 https를 바로 사용할 수 있지만 호스트명을 정식 URL로 하지 않은 경우 호스트명도 맞지 않고, 기간도 1년으로 좀 짧은 감이 있다.
* 정식 인증서를 사용하고자 한다면 아파치에 SSL인증서 설치하기를 검색하면 많이 나온다.
* 사설 CA인증서를 설치하려고 한다면 SSL CA 루트기관 구성하기.. 를 참조한다.
* yum으로 설치하면 tomcat 6.0이 실행되므로 7.0을 다운로드 받아 설치한다.
* 다운로드 : http://tomcat.apache.org/download-70.cgi 에서 tar.gz를 다운로드 받는다.
> cd /usr/local/src/tomcat
> wget http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.42/bin/apache-tomcat-7.0.42.tar.gz
> tar xvzpf apache-tomcat-7.0.42.tar.gz
> mv apache-tomcat-7.0.42 /app
> ln -s /app/apache-tomcat-7.0.42 /app/tomcat
* 환경설정
> vi /etc/profile.d/내맘대로.sh
> ## Tomcat의 홈디렉토리를 지정하고, Tomcat서비스가 실행될 계정을 지정한다.
> CATALINA_HOME=/app/tomcat
> TOMCAT_USER=app
> PATH=$PATH:$CATALINA_HOME/bin
> export PATH CATALINA_HOME TOMCAT_USER
* 톰캣의 설정파일 수정은 생략한다.
> 일괄배포를 이용한 WAR deploy를 이용할 경우 그냥 이용해도 무리 없다.
* 아파치에 Tomcat으로 위임할 컨텍스트를 지정한다.
> vi /etc/httpd/conf.d/service.conf
> ## Tomcat 에서 제공하는 어플리케이션 매핑..
> ProxyPass /tomcat ajp://localhost:8009/tomcat
> ProxyPass /manager ajp://localhost:8009/manager
> ProxyPass /probe ajp://localhost:8009/probe
== Resin 4 설치 ==
* 재배포중 톰캣이 다운되더라도 인프라는 가동되어야 한다.
* Nexus, Hudson등을 실행한다.
* 수시로 재배포하는 Tomcat의 재시작 시간이 길어지는 문제도 해결할 수 있다.
* Jetty 9은 Servlet3.1스팩을 지원하지만 도큐먼트에 아파치와 연동이 없어졌다.
* Jetty를 고려하였으나 hudson이 정상적으로 실행되지 못하는 문제를 해결할 수 없었다.
* Resin Pro버젼은 유료이나 일반 버젼은 오픈소스이다.
* Resin은 원격 배포 기능이 없고, Tomcat은 있다.
* 위 사항을 고려하여 Resin을 인프라용 WAS로 사용한다.
* 다운로드 사이트 : http://www.caucho.com/download/
> mkdir /usr/local/src/resin
> cd /usr/local/src/resin
> wget http://www.caucho.com/download/resin-4.0.36.tar.gz
> tar xvzpf resin-4.0.36.tar.gz
> mv resin-4.0.36 /app
> cd /app
> ln -s resin-4.0.36 resin
> chown app.app resin*
* 환경설정
> vi /etc/profile.d/내맘대로.sh
>> RESIN_HOME=/app/resin
>> PATH=$PATH:$CATALINA_HOME/bin:$RESIN_HOME/bin
>> export PATH CATALINA_HOME RESIN_HOME
* resin 환경설정
> $RESIN_HOME/conf/resin.properties
> ## 다음 줄들을 주석처리 (8080은 Tomcat에 양보하세요~)
> app.http : 9080
> web.http : 9080
* 아파치 연동 (http://www.caucho.com/resin-4.0/admin/starting-resin-apache.xtp#CompilingApache)
> ## 아파치연동용 모듈을 컴파일한다. (레진의 기본 실행 환경도 설정된다)
> ## 64비트 환경일 경우 컴파일 옵션 추가 필요 (./configure --help)
> cd $RESIN_HOME
> ./configure --prefix=/app/resin --with-apxs=/usr/sbin/apxs --with-apache-libexec=/etc/httpd/modules --enable-64bit --with-setuid=app --with-setgid=app
> make
> make install
* 아파치 설정
> vi /etc/httpd/conf/httpd.conf
> 파일 제일 하단에 Resin 컴파일시 임의로 추가된 설정이 있다.. 모두 삭제..
> vi /etc/httpd/conf.d/service.conf
> # mod_caucho Resin Configuration
> LoadModule caucho_module modules/mod_caucho.so
>
> <IfModule mod_caucho.c>
> ResinConfigServer localhost 6800
> CauchoConfigCacheDirectory /tmp
> CauchoStatus yes
> <Location /caucho-status>
> SetHandler caucho-status
> </Location>
>
> ## 연결할 어플리케이션 컨텍스트를 나열해서 caucho-request에 연결
> <LocationMatch "^/(resin-admin|resin-doc|nexus|hudson)+/">
> SetHandler caucho-request
> </LocationMatch>
> </IfModule>
* 아파치 재시작
== 서비스 관리 ==
* Apache
> # root 권한으로 실행되어야 한다.
> sudo service httpd stop|start|status
* Tomcat
> app 권한으로 실행되어야 한다.
> $CATALINA_HOME/bin/catalina.sh {start|stop|...}
* Resin
> app 권한으로 실행되어야 한다.
> $RESIN_HOME/bin/resin.sh {start|stop|...}
* Subversion
> root 권한으로 실행되어야 한다.
> 시작
>> svnserve -d -r /app/repos/svn
> 정지
>> pgrep svnserve | xargs kill -9
> 상태
> ps aux | grep svnserve