'분류 전체보기'에 해당되는 글 104건

카테고리 없음
yum provides libcrypto.so.4


Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: ftp.daum.net
 * base: ftp.daum.net
 * epel: mirror.nus.edu.sg
 * extras: ftp.daum.net
 * updates: ftp.daum.net
openssl097a-0.9.7a-9.el5_2.1.i386 : The OpenSSL toolkit
Repo        : base
Matched from:
Other       : libcrypto.so.4

카테고리 없음
1. Install libevent
Use yum
# yum install libevent
# yum install libevent-devel

2. download memcached source and Install
http://www.danga.com/memcached/download.bml
# tar -xvzf memcached-version.tar.gz
# cd memcached-version
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/lib/
# make
# make install

3. Set init.d
download script file
http://wiki.bookworm.pe.kr/dokuwiki/lib/exe/fetch.php?media=memcached.script.tar
# cd /
# tar -xvf memcached.script.tar
# cd /etc/init.d
# chkconfig --add memcached
check ntsysv command


카테고리 없음
eventmachine
# yum install gcc-c++

mechanize
# yum install libxml2-devel
# yum install libxslt-devel

mysql
# yum install mysql-devel

swiftiply
mapper.o error
(a) modify
/usr/local/lib/ruby/gems/1.8/gems/swiftiply-0.6.1.1/ext/fastfilerader/mapper.cpp
(b) add header
#include <cstring>
#include "unistd.h"
(c) Run "setup.rb"
/usr/local/lib/ruby/gems/1.8/gems/swiftiply-0.6.1.1/ruby setup.rb

카테고리 없음

1. make directory
# mkdir /opt/rails

2. Install ruby 1.8.7
# wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.7-p22.tar.gz
# tar xvfz ruby-1.8.7-p22.tar.gz
# cd ruby-1.8.7-p22
# ./configure
# make
# make install

3. Install RubyGems
RubyGems is standard package management program of Ruby
# wget http://rubyforge.org/frs/downlad.php/60718/rubygems-1.3.5.tgz
# tar xvfz rubygems-1.3.5.tgz
# cd rubygems-1.3.5
# ruby setup.rb

4. Install rails
# gem update --system
# gem install rails --include-dependencies

5. Install mongrel
# gem update --system
# gem install mongrel --include-dependencies
# gem install mongrel_cluster --include-dependencies
카테고리 없음
Very Simple

Start -> RUN
Input "notepad c:\windows\system32\pidgen.dll

3 line right side




카테고리 없음

msvcr71.dll 파일을 c:\windows\system32\에서 찾도록 설정이 되어있는 것 같음..
java_home 디렉토리에 bin 디렉토리에 msvcr71.dll을 c:\windows\system32 안에 복사하면 문제 해결
카테고리 없음

1. Only SWAT Coverage
Hudon -> Build(clover포함) -> Unit Test 생략 -> Clover가 만들어준 Jar 파일을 활용한 서비스 등록 -> SWAT으로 Ui Test 진행 -> Clover Coverage DB File 획득! -> maven을 이용한 clover2로 Report 생성

2. With Unit test Coverage
Hudson -> Build(Clover 포함) -> Unit Test 진행 -> Clover가 만들어준 Jar 파일을 활용하여 서비스 등록 -> SWAT으로 Ui Test 진행 -> Clover Coverage DB File 획득 (Unit Test + Ui Test 결과) -> maven을 이용한 clover2로 Report 생성



결과는 굿!

카테고리 없음

Setting

edit project pom.xml file

insert reporting tag to pom.xml file

<reporting>
        <plugins>
                <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <version>2.2</version>
<configuration>
 <configLocation>/env/hudson/jobs/cafe_main/workspace/cafe_main/checkstyle.xml</configLocation>
                        </configuration>
                </plugin>
                <plugin>
                   <groupId>com.atlassian.maven.plugins</groupId>
                   <artifactId>maven-clover2-plugin</artifactId>
                   <version>${clover.version}</version>
                   <configuration>
                     <licenseLocation>/env/clover.2.x.license</licenseLocation>
                     <generateHtml>false</generateHtml>
                     <generateXml>true</generateXml>
                   </configuration>
                </plugin>
                <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-project-info-reports-plugin</artifactId>
                        <version>2.0.1</version>
                </plugin>
                <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>jdepend-maven-plugin</artifactId>
                </plugin>
                <plugin>
                        <artifactId>maven-pmd-plugin</artifactId>
                        <configuration>
                           <sourceEncoding>utf-8</sourceEncoding>
                           <minimumTokens>10</minimumTokens>
                           <includeTests>false</includeTests>
                           <targetJdk>1.6</targetJdk>
                           <targetJdk>${maven.compiler.target}</targetJdk>
                        </configuration>
                </plugin>
                <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>findbugs-maven-plugin</artifactId>
                        <version>2.0-SNAPSHOT</version>
                        <configuration>
                           <xmlOutput>true</xmlOutput>
                           <xmlOutputDirectory>
                               ${project.build.directory}/findbugs
                           </xmlOutputDirectory>
                        </configuration>
                </plugin>
                <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>taglist-maven-plugin</artifactId>
                        <configuration>
                           <tags>
                              <tag>TODO</tag>
                              <tag>FIXME</tag>
                              <tag>@todo</tag>
                              <tag>@deprecated</tag>
                           </tags>
                        </configuration>
                </plugin>
                <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>cobertura-maven-plugin</artifactId>
                        <configuration>
                           <formats>
                              <format>xml</format>
                           </formats>
                        </configuration>
                </plugin>
        </plugins>
    </reporting>

insert to maven goals

clean:clean
process-classes
war:inplace
clover2:instrument
clover2:aggregate
clover2:clover
-Dmaven.clover.licenseLocation=/env/clover.2.x.license
cobertura:cobertura
findbugs:findbugs
pmd:pmd
checkstyle:checkstyle
-Dmaven.test.failure.ignore=true
-Dmaven.revision.check=false
카테고리 없음

출처 : http://ryudaewan.springnote.com/pages/610881

왜 Apache HTTP Server와 Tomcat을 연동하는가?

Apache Tomcat(이하 Tomcat)은 아마도 가장 널리 알려진 JSP / Servlet Engine일 것입니다. JSP / Servlet 명세에 대한 참조 구현물(Referencial Implementation, 흔히 줄여서 RI라고도 하죠) 역할도 하고 있으며, 실 업무에서도 꽤 씁니다(왕년에 Naver Blog를 쓸 때 한번은 Java Exception Trace log가 Web Browser에 표시된 것을 본 적이 있었습니다. 그 덕에 Naver Blog가 Tomcat을 쓴다는 것을 알았죠).

 

그러나 실전에서는 web server와 tomcat 같은 JSP/Servlet Engine 둘을 연동해서 쓰지, tomcat만 쓰지는 않습니다. 그 이유는 아래와 같습니다.

성능 상의 이유

JSP/Servlet Engine 상에서 동작하는 Servlet이나 JSP라는, (동일한 HTTP Request를 보내도 매 번 그 결과가 다를 수 있는) 동적인 HTTP Response를 생성해 보내는 것들입니다. 그에 비해 단순한 HTML 문서, image, CSS(Cascading Style Sheet), Javascript file은 거의 변할 일는 (동일한 HTTP Request를 보내면 그 결과가 늘 같은) 정적 contents입니다. 이런 정적 contents는 통상적으로 Web Server가 JSP/Servlet Engine보다 더 빠르게 service합니다.

 

감이 오시나요? 결국 정적 content는 정적 contents 처리에 강한 Web Server가 처리하고, 동적 contents는 JSP/Servlet Engine이 맡는 것입니다. 일단 HTTP Request를 Web Server가 먼저 받아보고 정적 contents를 요구하면 자신이 처리하고, 동적 contents request라면 이 request를 JSP/Servlet Engine에게 넘기죠. 아니면 특정 URL pattern이 들어오면 JSP/Servlet Engine으로 넘기는 방법도 있습니다. 결국 이렇게 하면 부수적으로 동적 contents 생성하느라 바쁜 JSP/Servlet Engine에 부하를 덜 줄 수 있고 정적 contents service하느라 귀중한 JVM Heap을 아낄 수 있는 이점도 누릴 수 있습니다.

보안 상의 이유

보통 JSP/Servlet Engine은 중요한 업무 절차에 대한 구현을 가지고 있게 마련입니다. 단순한 image, CSS 같은 정적 contents를 담은 Web Server보다 더 안전해야 보호해야 한다는 뜻이 됩니다. 보통 어떤 기업 같은 조직의 network를 구성할 경우 외부 network와 조직의 network를 방화벽(firewall)으로 단절시키고 방화벽에 규칙(rule)을 등록, IP packet이 제한적으로만 그 방화벽을 넘다들 수 있도록 합니다. 안전성이 더 높아야 하는 server들이 있는 network zone는 여기에 한 번 더 방화벽을 칩니다. 그리고 이 두 방화벽 사이의 network zone을 DMZ라고 합니다.

 

이렇게 Web Server와 JSP/Servlet Engine을 따로따로 쓰면 DMZ에 덜 중요한 data를 가진 web server를 놓고 이중 방화벽 뒤에 있는 network zone에 JSP/Servlet Engine을 놓음으로써 높은 보안성을 획득하면서도 외부에 동적 contents를 제공할 수 있게 됩니다.

가용성 상의 이유

web server도 하나, JSP/Servlet Engine도 하나라면 둘 중 하나만 죽으면 정상적인 service가 불가능합니다. 따라서 절대 멈추면 안되는 service(세계화가 되면서 이런 요구 사항은 더 늘었습니다. 지구 상 어딘가는 늘 업무 시간이니까요)를 담당하는 web server, JSP/Servlet Engine은 두 개 이상을 가동하는 이중화를 적용합니다.

 

web server가 어떤 HTTP Request를 받아 이를 JSP/Servlet Engine으로 넘기려 할 때 그 JSP/Servlet Engine이 이중화가 되어 있다면 web server는 이 request를 좀 한가한 JSP/Servlet Engine에 넘긴다던지 할 수 있습니다(물론 실제로는 간단하게는 round robin부터 시작해서 이에 대한 여러가지 방법이 있습니다). 내지는 JSP/Servlet Engine 중 하나가 비정상적으로 종료한 상태이면 현재 살아 있는 JSP/Servlet Engine에게 이 request 처리를 위임, 전반적인 service 중단을 막을 수 있습니다.

 

준비물

  • Apache Tomcat

    • Apache Tomcat : Apache Tomcat 대표 site. Tomcat을 내려받으려면 가야 하는 곳.
  • Apache HTTP Server

    • Apache HTTP Server : Apache HTTP Server 대표 site.
    • Apache Lounge : Windows용 Apache HTTP Server 정보가 풍부함. Windows용 Apache HTTP Server는 여기에서 받을 것을 추천!
  • mod_jk

    • Apache Tomcat : Apache Tomcat 대표 site. mod_jk도 여기서 받을 수 있습니다(이 site에서는 mod_jk를 'Apache Connector'라고 부릅니다).

 

작업 절차

 

간단한 구성

간단한 구성이란, 개발이나 가벼운 Web Service 운영을 목적으로 하나의 Apache HTTP Server + 하나의 Tomcat 연동 구성을 하는 것입니다. 이 작업에 대한 구체적 작업 절차는 [tomcat]apache, tomcat 연동하기 글에서 잘 설명하고 있습니다(Windows / Linux에서 mod_jk로 Apache와 Tomcat 연동하는 것을 proxy_module과 같이 설치할 경우와 아닌 경우 모두 설명하고 있습니다).

 

고가용성을 위한 구성

Naver Blog와 같이 사용자가 많다거나 장애 등을 감내할 수 있는(Fault Tolerant) Web Service를 구성하려면 위 간단한 구성으로는 어렵고 여러 개의 Apache HTTP Server + 여러 개의 Tomcat 연동 구성을 해야 합니다. 이렇게 해야 일부 Apache HTTP Server나 Tomcat이 죽어도 나머지들이 request를 처리할 수 있지요. 이러한 특성을 고가용성(High Availability)이라 하는데 이 고가용성은 위와 같은 단순한 설정만으로는 얻기 어렵습니다. 이런 고가용성 설정은 '아파치와 톰캣을 활용한 대용량 웹서비스 운영'이란 글에서 잘 설명하고 있습니다.

 

참고 문헌

 

예시

  • Apache HTTPD 2.2 설정 file : mod_jk로 Apache HTTP Server 2.2와 Tomcat 6을 연동시킨 결과로 나온 Apache Web Server 2.2 설정 file.
  • Apache Tomcat 6 설정 file : mod_jk로 Apache HTTP Server 2.2와 Tomcat 6을 연동시킨 결과로 나온 Apache Tomcat 6 설정 file.
  • mod_jk.conf : 실제 mod_jk 설정 정보를 담은 mod_jk 설정 file.
카테고리 없음

if linux then

export MAVEN_OPTS="-Xmx1024M -XX:MaxPermSize=1024m"

1 ··· 5 6 7 8 9 10 11
블로그 이미지

개발자

우와신난다