java - slf4j

Development/Java 2012. 3. 24. 12:11


Simple Logging Facade for Java
Developer(s)Ceki Gülcü
Stable release1.6.4 / October 31, 2011; 4 months ago
Written inJava
Operating systemCross-platform
TypeLogging Tool
LicenseMIT License
Websitehttp://www.slf4j.org

Simple Logging Facade for Java (SLF4J) provides a Java logging API by means of a simple facade pattern. The underlying logging backend is determined at deployment time[clarification needed] and may be java.util.logging,log4j or logback.

The separation of the client API from the logging backend reduces the coupling between an application and any particular logging framework. This can make it easier to integrate with existing or third-party code or to deliver code into other projects that have already made a choice of logging backend.

SLF4J was created by Ceki Gülcü as a more reliable alternative to Jakarta Commons Logging framework.[citation needed]

Contents

  [hide

[edit]Similarities and Differences with Log4j

  • Five of Log4j's six logging levels are used. FATAL has been dropped on the basis that inside the logging framework is not the place to decide when an application should terminate and therefore there is no difference between ERROR and FATAL from the logger's point of view.
  • Logger instances are created via the LoggerFactory, which is very similar in Log4j. For example,
 private static final Logger LOG = LoggerFactory.getLogger(Wombat.class);
  • In Logger, the logging methods are overloaded with forms that accept one, two or more values.[1] Occurrences of the simple pattern {} in the log message is replaced in turn with the values. This is simple to use yet provides a performance benefit when the values have expensive toString() methods. When logging is disabled at the DEBUG level, the logging framework does not need to evaluate the string representation of the values. In the following example, the valuescount or userAccountList only need to be evaluated when DEBUG is enabled; otherwise the overhead of the debug call is trivial.
 LOG.debug("There are now " + count + " user accounts: " + userAccountList); // slow
 LOG.debug("There are now {} user accounts: {}", count, userAccountList);    // faster
  • Similar methods exist in Logger for isDebugEnabled() etc. to allow more complex logging calls to be wrapped so that they are disabled when the corresponding level is disabled, avoiding unnecessary processing.
  • Unlike Log4j, SLF4J offers logging methods that accept markers. These are special objects that enrich the log messages and are an idea that SLF4J has borrowed from logback.

[edit]See also

[edit]External links

[edit]References


================================================================================================

Log4J는 다음과 같은 String Concatenation 문제가 있다.

LOGGER.debug("Hello " + name);

이를 해결하기 위해 다음과 같이 할 수 있다.

if (logger.isDebugEnabled()) {
    LOGGER.debug("Hello " + name);
}

하지만 코드가 지저분해진다.

SLF4J는 다음과 같은 방법으로 코드를 깔끔하게 유지하면서,

String Concatenation 문제도 해결하였다.

LOGGER.debug("Hello {}", name);

SLF4J는 API와 구현 (implementation)을 decouple한다.

SLF4J API를 사용하고, 구현은 Log4J를 비롯한 다른 Logging Framework를 활용할 수 있다.

SLF4J는 Bridging을 지원한다.

SLF4J가 Log4J, commons-logging 등의 API를 mimic해서 API를 제공함으로써

호출이 SLF4J로 reroute되도록 한다.

따라서, Log4J, commons-logging 등의 depedencies를 제거하고,

SLF4J만을 사용할 수 있다.

다음과 같은 조합이 추천된다.

SLF4J API + Log4J implementation

이를 위해 추가할 라이브러리는 다음과 같다.

slf4j-api.jar // Main API
slf4j-log4j.jar // SLF4J Log4J implementation

예제 코드는 다음과 같다.

package learningtest.slf4j;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Slf4jTest {
 @Test
 public void test() {
  Logger log = LoggerFactory.getLogger(Slf4jTest.class);

  log.debug("Hello, world!");
  log.debug("Hello, {}!", "world");
 }
}

Reference:
http://blog.frankel.ch/thoughts-on-java-logging-and-slf4j

출처 - 
http://devday.tistory.com/2017


===================================================================================


자바 2008/12/29 17:36
지금까지 자카르타 Commons-Logging 을 사용하고 있었는데 최근에는 parameterized messages 를 지원하는slf4j가 많이 쓰이는 것 같다.Commons-Logging이라면 보통 다음과 같이 if 문으로 로깅을 남길지 말지를 비교하는데 if문은 코드를 영 깔끔하지 못하게 한다.더불어 문자열을 조합하느라 무시못할 자원을 소비한다.
1.if (logger.isDebugEnabled()) {
2.logger.debug("The new entry is " + entry + " It replaces " + oldEntry);
3.}
slf4j에서는 이 부분을 다음과 같이 깔끔하게 처리할 수 있다.
1.logger.debug("The new entry is {} It replaces {}", entry, oldEntry);
이와같이 parameterized messages기능을 이용하면 굳이 if문을 쓸 필요가 없다.
그렇다면 파라메터가 3개 이상일 때는 어떻게 하면 될까? 다음과 같이 Object의 배열을 생성하면 된다.
1.logger.debug("Value {} was inserted between {} and {}."new Object[] {newVal, below, above});


출처 - http://avatar72.tistory.com/17







'Development > Java' 카테고리의 다른 글

SHA1 해쉬 구하는 클래스  (0) 2012.04.12
SpringMVC에서 log4j 사용  (0) 2012.04.01
서블릿 load-on-startup  (0) 2012.03.21
java 바이트코드 컨트롤 및 분석 - ASM  (0) 2012.03.19
패키지 이름 정의  (0) 2012.03.18
Posted by linuxism
,



Atom은 웹로그나 최신 소식과 같은 웹 컨텐츠의 신디케이션을 위한 XML 기반의 문서 포맷이자, 웹로그 편집을 위한 HTTP 기반의 프로토콜이다.

역사[편집]

2003년 6월에 샘 루비는 무엇이 "체계적인 로그"를 만드는가에 대한 논의를 위한 위키를 만들었다. 사람들은 곧 RSS를 대체하기 위한 새로운 신디케이션 포맷을 논의하기 시작했다. 얼마 후에 로드맵(RoadMap) 프로젝트[1]가 만들어졌고, 상당한 참여자들의 주목을 끌었다. 이 새로운 포맷은 블로거 API나 라이브저널 XML-RPC 클라이언트/서버 프로토콜과 같은 블로그 편집 프로토콜의 대안의 역할도 할 수 있도록 방향이 정해졌다.

이 시점에서, 결정 절차의 부재로 인해 논의가 다소 산만하게 진행되었다. 명칭도 문제가 되었는데, Atom으로 확실히 결정되기 전에는 파이(Pie), 에코(Echo), 네코(Necho) 등의 명칭이 혼재했다. 7월 초, 'Atom 0.2'로 알려진 중간 결과물이 나온 후부터 메일링 리스트를 통해 논의가 이루어졌다. 이 단계에서 마지막 중간 결과물인 'Atom 0.3'이 12월에 공개되었다. 이 버전은 여러 신디케이션 도구에 광범위하게 적용되었으며, 특히 블로거나 G메일 같은 구글 관련 서비스에도 사용되기 시작했다.

2004년에는 프로젝트를 W3C나 IETF 같은 표준화 단체로 옮기는 것을 검토하기 시작했다. 논의 끝에 IETF로 결정이 났으며, 애텀펍 워킹 그룹(Atompub Working Group)이 2004년 6월에 조직돼 헌장을 만들고 절차를 세웠다. 초기의 작업은 신디케이션 포맷에 중점을 두었고, 몇 번의 초안이 나온 후에 'Atom 1.0'이 2005년 7월 발표되어, 8월에 RFC 인터넷 표준이 되기 전의 마지막 단계인 "제안 표준"(proposed standard)으로 인정받았다.

2005년 8월 현재에는 출판 프로토콜과 신디케이션 포맷의 다양한 확장에 대한 작업이 진행 중이다. 최근의 개발과 논의에 대해서는 Atom 위키에서 찾아볼 수가 있다.

[편집]

다음은 Atom 피드 문서의 한 예이다.

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>견본 피드</title>
 <subtitle>재치 있고 통찰력 있는 촌평을 기입해보라</subtitle>
 <link href="http://example.org/"/>
 <updated>2003-12-13T18:30:02Z</updated>
 <author>
   <name>아무개</name>
   <email>ahmooge@example.com</email>
 </author>
 <id>urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6</id>
 
 <entry>
   <title>Atom 기반의 로봇이 이리저리 헤집고 있다</title>
   <link href="http://example.org/2003/12/13/atom03"/>
   <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
   <updated>2003-12-13T18:30:02Z</updated>
   <summary>내용 요약</summary>
 </entry>
 
</feed>

같이 보기[편집]

바깥 고리[편집]






Atom (아톰)는  상의 다양한 콘텐츠를 제공하는 XML 문서 포맷 과 콘텐츠를 편집하기위한 통신 프로토콜 등 일부 사양 군의 총칭이다.

개요 편집 ]

주된 사양은 위의 두 가지. 하나는 콘텐츠를 제공하는 피드 의 형식을 규정하는 "Atom 전달 형식"(Atom Syndication Format), 다른 하나는 웹 콘텐츠를 편집하기위한 "Atom 출판 프로토콜"(Atom Publishing Protocol)에서 , 통칭 Atom API 또는 AtomPP 라고도 불리는 것이있다.

원래 The Atom Project 로 유지가 Wiki와 메일 링리스트에서 토론하면서 풀뿌리으로 시작, 현재 활동 장소는 IETF (Internet Engineering Task Force) 에 인계되어 워킹 그룹으로 표준화 활동이 이루어지고있다.

Atom 워킹 그룹이 내거는 모토는 다음 네 가지이다.

  • 특정 벤더에 의존하지 않는
  • 모든 사람이 자유롭게 구현할 수
  • 누구나 자유롭게 확장 가능하다
  • 사양을 명확하게하고 상세하게 정의

Atom Syndication Format 편집 ]

웹 사이트의 업데이트 정보 등의 메타 데이터 및 콘텐츠 전달 (Syndication), 저장 (Archive)을 맡는 XML 문서 사양. 블로그와 뉴스 RSS · Atom 수집기 (RSS 리더라고도 함) 응용 프로그램에 가입 할 때 이용하는 것이이 형식으로 작성된 파일이된다. 대부분의 RSS · Atom 수집기는 RSS의 버전과 Atom을 지원한다. 단순히 Atom 같은 경우이 형식을 가리키는 경우가 많다.

용도 편집 ]

블로그 나 뉴스 사이트의 업데이트 정보 전달에만 그치지 않고 MP3 나 동영상 등의 리치 미디어 전송에도 사용할 수있다. 확장 성이 높기 때문에 메타 데이터의 유통 방법으로 범용 적으로 사용할 수있게되어있다.

현재 편집 ]

IETF에서 RFC 4287 으로 사양이 공개되어 널리 이용되고있다.

샘플 편집 ]

<? xml version = "1.0"encoding = "utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title> Example Feed </ title>
 <link href="http://example.org/"/>
 <updated> 2003-12-13T18 : 30:02 Z </ updated>
 <author>
   <name> John Doe </ name>
 </ author>
 <id> urn : uuid : 60a76c80-d399-11d9-b93C-0003939e0af6 </ id>

 <entry>
   <title> Atom-Powered Robots Run Amok </ title>
   <link href="http://example.org/2003/12/13/atom03"/>
   <id> urn : uuid : 1225c695-cfb8-4ebb-aaaa-80da344efa6a </ id>
   <updated> 2003-12-13T18 : 30:02 Z </ updated>
   <summary> Some text </ summary>
 </ entry>

</ feed>

Atom Publishing Protocol 편집 ]

블로그 나 Wiki 같은 웹 콘텐츠 ( 자원 )를 편집 할 수있는 응용 프로그램 수준의 통신 프로토콜입니다. 그러면 Atom 출판 프로토콜에 대응 한 응용 프로그램에 대한 바탕 화면의 소프트웨어 및 데이터베이스, 휴대폰 등의 모바일 기기와의 직접적인 연계가 가능하게된다. 약어는 원래 AtomPP 였지만 이후에 AtomPub 라고 불리게되었다.

Atom 출판 프로토콜은 HTTP 기반 통신 프로토콜 REST 아키텍처 스타일을 준수하고있다. 또한 통신에 전달되는 형식은 "Atom 전달 형식"기반의 XML 문서이다.

용도 편집 ]

데스크톱 및 모바일과 웹과를 잇는 가교로서 여러가지 용도에 사용할 수있다. 이미 데스크톱 및 모바일 응용 프로그램에서 블로그에 게시하거나 편집 할 수있는 응용 프로그램이 다수 존재한다.

현재 편집 ]

IETF로 이관되기 전에는 Atom API라고했지만, "Atom 출판 프로토콜"(Atom Publishing Protocol)라는 정식 명칭으로 변경되었다. 현재 RFC 5023 로 사양이 공개되고있다.

또한 Atom API라고하고 있었을 무렵의 드래프트 사양 0.9 을 사용하여 블로그 관련 응용 프로그램은 실제로 널리 이용되고있다.

사례 편집 ]

Atom API 서버 구현 편집 ]

Atom API 클라이언트 구현 편집 ]

향후 전망 편집 ]

현재는 블로그에서의 이용이 주로되어 있지만, 요즈음 주목 받고왔다 Web API, REST API의 대표격으로서 다양한 용도로 사용되어가는 것이 예상된다. 전송 포맷이라는 점에서는 유사 기능을 가진 RSS도 있지만, 방송 포맷과 통신 프로토콜의 사양이 IETF 표준 조직에서 제대로 책정되고 있다는 것은 향후 본격적인 이용을 밀어주는 것으로 보인다.

관련 항목 편집 ]

외부 링크 편집 ]




출처 - http://ko.wikipedia.org/wiki/Atom










RSS
웹 브라우저에서 사용되고있는 RSS 피드 아이콘
확장자. rss , . xml , . rdf
MIME Typeapplication / rss + xml
파생XML

RSS(Really Simple Syndication)는 뉴스나 블로그 사이트에서 주로 사용하는 콘텐츠 표현 방식이다. 웹 사이트 관리자는 RSS 형식으로 웹 사이트 내용을 보여 준다. 이 정보를 받는 사람은 다른 형식으로 이용할 수 있다.RSS 리더에는 웹기반형과 설치형이 있다. 웹기반형 리더는 간단한 계정등록으로 어디에서든 이용할 수 있다는 장점을 가지고 있다.

RSS가 등장하기 전에는 원하는 정보를 얻기 위해 해당 사이트를 직접 방문하여야 했으나, RSS 관련 프로그램(혹은 서비스)을 이용하여 자동 수집이 가능해졌기 때문에 사용자는 각각의 사이트 방문 없이 최신 정보들만 골라 한 자리에서 볼 수 있다.

또한 RSS는 팟캐스팅과 같은 미디어 배포의 용도로도 사용된다. RSS 2.0 의 〈enclosure〉태그 내에MP3 나 MOV 등의 미디어 파일을 첨부하여 배포하면, 팟캐스팅 클라이언트를 이용해 파일을 내려 받아 감상할 수 있다.

RSS 2.0은 공식적으로 완료된 것으로 선언되었으며, 하버드 대학교가 저작권을 보유하고 있다.

목차

  [숨기기

[편집]여러 표준

RSS는 XML 기반의 표준이며, 여러 표준들이 존재한다. 표준들은 크게 RDF (또는 RSS 1.*)과 RSS 2.* 로 나뉜다.

  • RDF (RSS 1.*)
    • RSS 0.90
    • RSS 1.0
    • RSS 1.1
  • RSS 2.0
    • RSS 0.91
    • RSS 0.92
    • RSS 2.01

[편집]아톰과의 비교

RSS와 아톰 모두 모든 주요 피드리더들에게 널리 지원된다. 아톰보다 더 일찍 피드리더 기능이 도입되면서 RSS가 널리 이용되어 인기를 끌게 되었다. 그러나 아톰은 라이선스가 덜 제한적이고 IANA 등록 MIME 타입XML 이름공간, 상대 URI 지원, RELAX NG 지원과 같이 RSS에 비해 몇 가지 이점이 있다.[1] 기술적으로 아톰은 이 둘 사이에서 더 진보화된 신디케이션으로 간주된다.[2]

아래의 표는 아톰과 동일한 RSS 요소를 요약해 놓은 것이다.

RSS 2.0아톰 1.0
author author
category category
channel feed
copyright rights
description subtitle
description summary 또는 content
generator generator
guid id
image logo
item entry
lastBuildDate (channel에서) updated
link link
managingEditor author 또는 contributor
pubDate published (entry의 하부요소)
title title
ttl -







RSS 는 뉴스 및 블로그 등 각종 웹사이트 의 갱신 정보를 간단하게 정리해 전달하기위한 몇 가지 문서포맷 의 총칭이다.

목차

  [ 숨기기 ] 

개요 편집 ]

  • R DF s ite s ummary (RSS 0.9, RSS 1.0)
  • R ich S ite s ummary (RSS 0.91)
  • R eally s imple s yndication (RSS 2.0)

상기와 같이 "RSS"라는 단어는 이름의 여러 표준이 존재하고 각각 작성하는 방법과 용도가 다르기 때문에 약간의 혼란이 보인다.

일본어 사이트는 대중적 RSS의 대부분이 RSS 1.0 을 이용하고 있기 때문에 일반적으로 RSS는 RDF site summary 로 인식되고있다 요청 출처 ] .

블로그 의 갱신 정보의 배포로 사용되는 경우가 대부분을 차지하고 있지만, 뉴스 전달 사이트에서 최신 뉴스를 방송국에서 프로그램 정보를, 그 외 각종 기업에서 보도 자료와 신제품 정보, 지원 정보를 RSS를 이용한 헤드 라인 정보로 제공하는 사례도 늘고있다. 또한 음성 데이터 파일 을 공개하는 방법이다 포드 캐스팅 에도 사용되고있다.

또한 RSS를 지원하는 웹사이트에서 RSS를 지원하고있는 것을 명확하게하기 위해 다음과 같은 표시가 사용되는 경우가 많다.

  • Feed-icon.svg
  • Rssicon 3614.gif
  • XML icon.svg

RSS 포맷의 역사와 변천 편집 ]

RSS는 RDF의 채용을 둘러싸고 현재 분열 상태에있어 1.0과 2.0 두 계열로 나뉘어있​​다. 당초 0.9은 RDF를 기반으로 데이터 형식을 사용했지만, 0.91에서는 단순화하기 위해 RDF를 사용하지 않고되었다. 이후 1.0에서 0.9 계열을 이어받아 복잡한 RDF를 사용하여 응용성이 높은 데이터를 이용할 수 있도록했다. 반면 2.0은 0.91을 이어받아, 콘텐츠 배포에 특화하여 복잡한 RDF를 배제하고있다.

RSS 0.9 편집 ]

처음 RSS이다 RSS 0.9은 RDF site summary [1] [2] 로 1999 년 3 월 미국 넷스케이프 커뮤니케이 션 이 자사의 포털 사이트 "My Netscape"에서 "채널"더 쓰는 위해 책정한 것이다. RDF 구문을 이용한 때문에 RDF site summary 했다.

그 넷스케이프 커뮤니케이 션 즈는 RDF 구문의 사용을 중지하고 자신의 XML 형식을 사용하여 요소를 확장하고 더 풍부한 정보를 제공할 수 있도록했다 RSS 0.91을 개발했다.

RSS 0.91 편집 ]

rich site summary 로 변경되었습니다 RSS 0.91, RSS 0.9 요소를 확장하는 목적으로 만들어진 1999 년 7 월이 버전이 출시되었다. RDF를 사용하지 않고 독자적인 XML 로 작성된다.

유저 랜드 소프트웨어 회사 ( UserLand Software )의 '스크립팅 뉴스'( ScriptingNews )에서 저작권 날짜 정보 등 여러 가지 요소를 도입해 확장되었다. 지금까지의 RSS 0.9 더 많은 정보를 전달할 수 있도록 되었기 때문에, rich site summary [3] 라고, 그 파생된 RSS 0.92, RSS 2.0 기반으로되어있다.

RSS 0.91의 등장 이후, RSS가 가지는 " 콘텐츠 전송 "기능에 대한 수요가 더욱 높아졌다. 따라서보다 풍부한 컨텐츠 제공을 목표로하는 저자가 자신의 요소를 RSS에 추가 버리는 등, 형식의 확장에있어서 혼란이 일어나게되었다.

RSS 1.0 편집 ]

이러한 혼란 속에서, RSS에서 자주 사용되는 어휘와 사용되는 요소들을 "코어"로 정의하고 그 이외는 확장하는 측이 자신의 어휘를 "모듈"로 정의하여 핵심 어휘와 확장성을 보장시키려는 제안 RSS-DEV 작업 그룹 내에서 일어나고 그 결과로 2000 년 12 월 RSS 1.0이 릴리즈되었다.

RSS 1.0은 0.9 시대에 사용되었던 RDF를 다시 채용하여 RSS가 가지는 " 메타 데이터 기술 "로서의 측면을 주목적으로 둔 형식으로되어있다.

또한 RSS 코어 모듈 외에 공식 모듈로, Dublin Core 모듈 Syndication 모듈 및 Content 모듈이 결정되었다. 이것은 RSS 0.9 불만이었다 어휘 결핍을 해소하고 또한 콘텐츠 유통 수단으로 RSS 1.0을 채용하는 방법을 남기는 것이되었다.

RSS 1.0의 등장은 (메타 데이터 기술 기술로서의) RSS의 핵심 어휘 및 확장성을 보장되었다. 그러나 RDF를 다시 채용한 모듈의 XML 네임 스페이스의 합병증은 모든 RSS 피드들을 만족시키지 않고, RSS 0.91 계의 형식을 확장하는 움직임이 다시 보인다되었다.

RSS 0.92 / RSS 2.0 편집 ]

RSS 1.0 가지고 갈 길은 반드시 누구나가 좋아하는 것은 아니다고하지만 RSS 0.91 이후에 일어나고 있었다 형식 확장의 혼란은 피할 필요가 있었다.따라서 확장을 옵션으로 제공하며 RSS 0.91에 호환되게하는 방법이 제안되어 그것을 받아 2000 년 12 월 사용자 랜드 소프트웨어 회사에서 RSS 0.92이 발표되었다.

유저 랜드 소프트웨어 회사는 이후에도 호환성을 유지하면서 RSS 0.93, RSS 0.94는 확장을 계속했지만, 2002 년 8 월에 RSS 0.91에서 RSS 0.94까지 모든 포맷에 대한 호환성을 보장했다 RSS 2.0을 수립하고이를 really simple syndication [4] 라고 명명했다.

RSS 2.0은 어디 까지나 0.9x 계의 흐름을 이어받는 규격이며, RSS 1.0의 후속이 아니다. 각각의 목표로하는 방향성은 동일하지 않기 때문에, 장면에 따라 구분하여 사용할 수있다.

2003 년 7 월, RSS 2.0 제정의 중심 인물, 데이브 위너 ( Dave Winer )의 이적과 함께 사양도 하버드 로스쿨 버크 맨 센터로 이관되었다.

향후의 전망 편집 ]

RSS 1.0과 RSS 2.0의 관계에 대한 버전을 나타내는 숫자의 대소 관계에서 전자가 구 규격으로 후자가 후계 규격이라는 오해가 보여지지만, 이것은 사실이 아니다. RSS 2.0은 단순하게 대가로 RSS 1.0가 갖추는 (RDF에 따라) 강력한 표현력을 포기했기 때문에 RSS 1.0을 대체하지 않습니다. 그래서 RSS 1.0은 장면에 따라 앞으로도 계속 이용되어가는 눈에된다.

한편, RSS 2.0을 대체 콘텐츠 전송 기술로서 IBM의 샘 루비 ( Sam Ruby ) 등이 중심이되어, Atom 이라는 새로운 규격이 책정됐다. Atom에는 웹로그 툴 "무버블 타입"( Movable Type ) 업체의 식스 아파트 사 ( Six Apart )과 스탠포드 법대 로렌스 레식 교수, XML 개발자 팀 브레이 ( Tim Bray ) 등 이지지를 표명하며 구글社도 자사 서비스 Gmail (지 메일)로 메일 내용을 Atom 피드에서 제공하는 서비스를 실시하고있다. 새로운 피드 기술 Atom 과 현재 RSS와의 충돌에 의해 새로운 혼란이 예상된다.

RSS 이용 편집 ]

RSS의 취득 · 등록에는 RSS 리더 ( 피드 리더 모두)라는 소프트웨어를 사용한다. 또한 RSS를 생성하고 추가하는 소프트웨어도 있지만 비교적 간단한 XML 형식이므로 직접도 가능하다.

도서관의 RSS 편집 ]

정보를 취급하는 전문 기관으로 도서관에서도 RSS 활용 서비스 예는 증가하고있다. 알리미 등은 가장 활용하는 예제이다. 교토대학 도서관기구 등은 학생 및 연구원을위한 RSS에 대한 개요와 활용 방법 등을 정리하고있다. 또 농림 수산 연구 정보 센터는 최신 잡지, 신착 도서 정보도 RSS를 통해 전달하고있다.

참고 문헌 편집 ]

주석 편집 ]

  1. ^ "RDF의 웹 사이트 요약"을 의미한다.
  2. ^ RDF는 Resource Description Framework 를 참조하십시오.
  3. ^ "내용이 풍부한 웹 사이트 요약"을 의미한다.
  4. ^ "정말 단순 전달"을 의미한다.

관련 항목 편집 ]

외부 링크 편집 ]

 









'Web > Common' 카테고리의 다른 글

/favicon.ico 에 대해  (0) 2012.04.19
삼성 모바일OS '타이젠'…구글-모질라 제쳐  (0) 2012.04.08
UX와 UI에 대한 차이점  (0) 2012.03.05
URI & URL  (0) 2012.02.11
MIME  (0) 2012.02.11
Posted by linuxism
,

기존 설치 파일 삭제

먼저 설치되어있던 아파치, mysql, php 를
# yum remove httpd
# yum remove mysql
# yum remove php 로 제거


아파치 설치

가. 소스코드로 apache만 설치
http://httpd.apache.org 사이트에서 아파치 다운로드
httpd-2.2.15.tar.gz 다운
# tar zxvf httpd-2.2.15.tar.gz
# cd httpd-2.2.15
#./configure --prefix=/usr/local/apache-2.2.15 --enable-so --enable-rewrite --with-mpm=worker \

--enable-headers

 

인터넷에서 접할 수 있는 여러 apache 설치 문서에서 -–bindir, --sbindir, --enable-layout 등을

사용하여 리눅스 공용 bin, sbin dir로 옮기는 경우가 있는데, 관리상 불편을 초래하므로
절대 권장하지 않는다.

--prefix

설치경로에 몰아 넣는 디폴트 설정에 따르도록 하자.
--enable-so

옵션은 동적공유객체(DSO) 사용 옵션으로 설치 당시의 공유객체들을 정적으로 사용하고 나중에 추가 될 공유객체들의 httpd.conf 에서 추가할 수 있게 한다. (httpd –l 로 확인)
--with-mpm=worker

다중처리모듈을 worker로 설정한다. worker 방식은 쓰레드를 사용하여 많은 사용자수에 유연하게 대응할 수 있는 높은 확장성(scalability)이 특징이다.
리눅스에서 설치 시 기본값은 prepork 인데, 쓰레드를 사용하지 않으며 MaxClient 256 제한이라는 단점이 있다. worker 옵션을 적용하면 더 적은 메모리를 사용하여 더 빠른 속도를 낼 수 있다 --enable-rewrite

정규표현식을 사용하여 URI를 포워딩 해주는 유용한 모듈로써 파라미터를 숨겨서 깔끔한 URI 처리가 가능하다.
--enable-headers

IE6 버전에서 각각의 프레임에서 쿠키를 구울 수 없는 것을 헤더를 직접 컨트롤함으로써 사용 가능하게 하는 목적으로 쓰인다.


# make
# make install

 

심볼릭 링크를 만든다.
# ln -s /usr/local/apache-2.2.15 /usr/local/apache

환경설정
# vi /etc/profile
다음을 추가한다.
# Apache 2.2.15
export APACHE_HOME=/usr/local/apache
export PATH=$PATH:$APACHE_HOME/bin


/etc/profile을 저장한 후
# source /etc/profile

 

Apache 실행
apachectl start

 

iptables 에서 80 추가

# service iptables stop

# vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

# service iptables start


입력 후 브라우저에서 http://localhost/ 입력 후 내용이 뜨면 성공.


확인 후 아파치 종료
# apachectl stop


아파치 자동실행을 위해 /etc/rc.d/rc.local 제일 마지막 줄에 다음 내용 추가
# vi /etc/rc.d/rc.local
/bin/sh -c '/usr/local/apache/bin/apachectl start'

저장 후 빠져나옴

 

나. 소스코드로 apache와 openssl 설치 (update 2011.5.24)

설치 버전

Apache - httpd.2.2.19.tar.gz

openssl - openssl-1.0.0d.tar.gz

 

설치 순서

openssl 설치 -> 개인키와 인증서 생성 -> -> apache 설치(mod_ssl는 apache 2.x 설치 시 포함)

 

 

설치 방법
1. openssl 설치

시스템에 openssl이 설치 되어 있는지 확인한다.

# rpm -qa | grep openssl

만약 설치 되어 있다면 다음 단계로 개인키와 인증서를 생성한다.

 

http://www.openssl.org에서 openssl-1.0.0d.tar.gz 를 다운 받아 설치한다.
   # tar xvfz openssl-1.0.0d.tar.gz
   # cd openssl-1.0.0d
   # ./config --prefix=/usr/local/openssl
   # make; make install

 

 

2. 개인키와 인증서 생성

openssl 을 이용하여 인증서를 만든다.

인증서를 보관할 디렉토리를 정하고 해당 위치에서 명령어를 입력한다.

 

Root 인증서(self-signed certificate)를 발행(issue)한다.

# openssl req -new -x509 -days 3650 -sha1 -newkey rsa:1024 \
-nodes -keyout server.key -out server.crt \

-subj '/O=company/OU=dev/CN=www.company.com'

Generating a 1024 bit RSA private key

....................++++++

......++++++

writing new private key to 'server.key'

-----

server.key는 개인키이므로 root만 읽을 수 있도록 한다.

# chmod 600 server.key

 

옵션 내용을 살펴보자

  • -x509 는 인증서가 요청(request)되었다는 의미보다는 인증서가 요구(required)된다는 것을 언급한다. 즉 인증서를 직접 생성한다는 것이다. server.crt 와 함께 self-signed 발행의 가장 큰 특징의 옵션이다.
  • -days 365 는 인증서가 일년 후에 만료된다는 것이다. 기간을 확장할 수 있다. 만료기간을 늘리고 싶다면 만료시점을 기억했다가 필요할 때 갱신(renew)하면 될 것이다.
  • -sha1 SHA1 암호방법을 사용했음을 의미한다.
  • rsa: 1024 RSA의 키 길이를 1024 bit로 두었다는 뜻이다(역자주: 요즘은 1024bit의 안정성 때문에 2048bit로 가고 있는 추세이다. 하지만 암호화 연산 시간이 3~4배 늘어난다).
  • -nodes 암호문을 쓰지 않음을 의미한다.
  • -keyout, -out private 키(server.key) 와 인증서(server.crt)의 저장위치를 지정한다. 키는 반드시 root 권한만이 읽을 수 있어야 한다. 반면, 인증서는 누구라도 읽을 수 있게 한다. 즉 Apache를 사용하는 유저가 읽을 수 있어야 한다.
  • -subj 이 플래그는 회사 이름, 부서 이름, 웹 사이트 주소를 설정한다. 이것을 그냥 두면 프롬프트로부터 입력을 받게 된다. CN은 여러분이 적은 웹 사이트의 주소와 반드시 일치해야 한다. 그렇지 않으면 인증서가 일치하지 않게 되고 사용자가 접속할 때 경고 메시지를 받게 된다. 접속암호를 사용하지 않았나 다시 한 번 확인해 보자.

 

 

3. apache 설치

http://www.apache.org에서  httpd-2.2.17.tar.gz를 다운받는다.

 

설치하기 에 서버에 접속하는 클라이언트의 수를 256 에서 8192 로 늘려주자.

이렇게 하면, 설치 후 httpd.conf 파일에 기본값 256 으로 설정되어 있는데 8192 까지 조절할 수 있다.

# tar xvfz httpd-2.2.19.tar.gz
# cd httpd-2.2.19

 

# vi ./server/mpm/prefork/prefork.c

 

#ifndef DEFAULT_SERVER_LIMIT

#define DEFAULT_SERVER_LIMIT 256

#endif

부분을 찾아 256을 8192로 바꿔준다.

 

openssl 설치 여부 및 아파치의 mod_ssl을 확인한다.
# rpm -qa | grep openssl

openssl 을 rpm  설치하였다면 다음 처럼 컴파일 한다. 

./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-ssl

# make; make install

 

위와 같이 컴파일 하면 다음과 같이 핵심 모듈 들만 static하게 컴파일 되고

나머지 기본 모듈들은 /usr/local/apache2/modules/ 에 *.so모듈로 dynamic 하게 컴파일 된다.

단, mod_ssl.so는 기본으로 생성이 되지 않아 --enable-ssl 옵션을 해 줘야 한다.

그리고 httpd.conf 설정에서 LoadModule로 포함 되어 필요 시 dynamic하게 링크 하게 된다.

 

httpd -l명령으로 static 모듈 들을 확인 할 수 있다.

# httpd -l

Compiled in modules:

core.c

prefork.c

http_core.c

mod_so.c    

*.c 로 끝나는 것들이 static 하게 컴파일 된 것이다.

mod_so.c는 DSO방식으로 설치된 것을 말한다.

 

동적으로 추가 된 모듈들을 확인한다.

# ls /usr/local/apache2/modules

 

또는

아래와 같으나 대부분의 옵션이 1.x 에서 사용하는 것이다.

# ./configure --prefix=/usr/local/apache2 --enable-rule=SHARED_CORE --enable-module=so --enable-shared=max --enable-ssl 

# make; make install

 

위와 같이 컴파일 하면 모듈들이 대부분 코어와 함께 static하게 설치가 된다.

따라서 httpd.conf 설정에는 LoadModule로 포함 되어 있지 않다.

 

또는

openssl을 소스코드로 설치하였다면 ssl의 설치 경로를 지정하여 설치한다.
# ./configure --prefix=/usr/local/apache2 --with-ssl=/usr/local/openssl --enable-mods-shared=most --enable-ssl 

# make; make install

 

옵션 설명

--prefix=/usr/local/apache2

부분에는 아파치가 설치될 경로를 입력

--enable-rule=SHARED_CORE

아파치 코어를 DSO방식으로 컴파일 하는 옵션이다.

아파치 2.x에서는 enable-so 라는 옵션으로 mod_so 모듈을 올려준다. 즉, --enable-rule=SHARED_CORE는

더 이상 필요치 않는 옵션이다.

--enable-module=so

동적(DSO)가 아닌 정적으로 mod_so 모듈을 올리겠다는 말이다. mod_so는 아파치 core 와 함께 반드시

정적으로 올라가야 하는 모듈이다.

mod_so는 차후 DSO방식으로 모듈들을 추가하여 사용 하기 위해서 반드시 필요한 모듈이고 DSO로 컴파일 할 수 없는 모듈이다.

이 옵션을 주지 않아도 mod_so 모듈은 기본 값으로 정적으로 mod_so.c로 컴파일 된다.

이 옵션도 2.0 부터 enable-so 라는 옵션으로 대체되어 쓸모가 없어졌다고 볼 수 있다.

--enable-shared=max

아파치 핵심 모듈들을 DSO방식으로 컴파일 하라는 옵션이다.

src/modules/standard 밑에 모든 so 모듈을 DSO로 올림 

1점대 DSO에서는 enable-module과 enable-shared는 쌍으로 와야 한다 

이 옵션은 2점대에서는 --enable-mods-shared=most로 써야지 맞다.

--enable-so

아파치 2.0 부터는 DSO를 사용하기 위해 --enable-so 만 붙여 주면 된다

즉 아파치 1.x 의 옵션 --enable-module=so가 --enable-so로 변경 되었다.

--enable-ssl

mod_ssl 모듈을 생성해 준다. 따라서 --enable-module=so 옵션과 함께 또는 아무런 옵션

없이 --enable-ssl 만 사용하면 ssl 모듈도 mod_ssl.c로 정적으로 추가 되고, --enable-mods-

shared=most과 함께 사용되면 mod_ssl.so로 동적으로 모듈이 추가 된다.

--enable-setenvif

일부 Internet Explorer와의 호환을 위한 것

--enable-mods-shared=most

enable-so가 없느냐? 그건 간단하다. --enable-mods-shared=most 옵션(동적으로 올릴 거 지정해준다.)을

붙이면 --enable-so 가 자동으로 붙기 때문이다. 즉, --enable-mods-shared=most 하나면 다 해결

되는 것이다.

DSO란 LoadModule를 이용해서 동적으로 모듈을 올리는걸 말한다. --enable-mods-shared=most 이

옵션을 적어 주면, 대부분의 apache 옵션들이 LoadModule 문법에 의해 동적으로 올라가 있다.

(httpd.conf 를 확인해 보자.)

 

참고 사항

apache 2.x 버전에는 기본적으로 mod_ssl 모듈을 기본적으로 포함하고 있다.

apache 1.x를 계속 사용한다면 mod_ssl을 설치가 필요하다.(www.modssl.org)

하지만 apache 2.x을 설치 하였기 때문에 컴파일 시 ssl 모듈을 설정해 주면 된다.

 

apache 1.x에서는 DSO로 컴파일 하려면 다음 세 옵션이 필요하고

--enable-module=so 
--enable-rule=SHARED_CORE 
--enable-shared=max 

httpd -l 명령을 입력하면 그 결과 중 mod_so.c라는 것이 출력되면 DSO방식으로 설치된 것이다.

 

apache 2.x 에서는 DSO로 컴파일 하려면 다음 옵션만 필요하다.

--enable-mods-shared=most

이 옵션은 선택한 기능 중 모듈로 처리 가능한 모듈은 모두 so(shared object)로 처리 할 것을 지정하는 것이며, 이를 통해 아파치 웹 서버를 동적으로 구현할 수 있다. 일반적으로 아파치 웹 서버는 개별 기능(모듈)을 httpd라는 데몬 파일에 모두 집어 넣는 형태를 취한다. 이럴 경우 개별 기능을 다시 변경하려면 컴파일을 통해 httpd를 다시 생성하여야 하는 번거로움이 있다. 이러한 문제점을 해결하기 위하여 최소한의 기능(모듈)만 httpd에 포함시키고, 나머지 개별 기능(모듈)은 개별 파일(so 파일)로 처리하여 웹 서버를 구동할 때 참조하는 설정 파일인 httpd.conf에서 사용여부를 지정하는 방식으로 컴파일 할 것이다.

 

하지만 위 옵션들을 주지 않으면 핵심 모듈들이 기본적으로 정적으로 컴파일 된다.

공통적으로 enable-ssl 하여야 mod_ssl.so가 동적으로 추가가 된다.

 

재설치 할 때는 make clean 하여 기존 configure를 삭제한다.

 

 

4. 환경 설정
# vi /etc/profile
다음을 추가한다.
# for Apache
export APACHE_HOME=/usr/local/apache2
export PATH=$PATH:$APACHE_HOME/bin


/etc/profile을 저장한 후 적용
# source /etc/profile

 

iptables 에서 80 추가

# service iptables stop

# vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

# service iptables start

 

library PATH 잡아주기
# echo "/usr/local/apache2/lib" >> /etc/ld.so.conf
# echo "/usr/local/apache2/modules" >> /etc/ld.so.conf
# ldconfig

명령어나 프로그램에서 라이브러리가 필요할 때 찾는 PATH를 기록 해 줘야 한다. 기존에는 /usr/local/apache/lib 라는 경로가 지정되어 있지 않기 때문에 못 찾는 수가 발생한다. 미연에 방지 하기 위해서 적어주는 습관을 들이는 게 좋다. APM 설치 시에는 발생하지 않지만, 실질적으로 그러한 문제가 발생하고 있다. 프로그램 설치 후 꼭 ld 에 library 경로를 적어주기 바란다.

 

 

5. apache 설정

httpd.conf 파일 수정

# vi /usr/local/apache2/conf/httpd.conf

 

# mod_ssl.so 모듈이 동적으로 추가가 되도록 주석을 해제한다.(기본으로 해제 되어 있음)

LoadModule ssl_module modules/mod_ssl.so

 

# httpd-ssl.conf 설정이 포함 되도록 주석을 해제한다.

Include conf/extra/httpd-ssl.conf


# SSL Contents와 일반 Contents을 구분하기 위해 SSL 접근 Directory를 별도 설정한다.

<Directory "/usr/local/apache2/htdocs_ssl">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

 

 

httpd-ssl.conf 파일 수정

ssl은 가상호스트로 동작한다.

# vi /usr/local/apache/conf/extra/httpd-ssl.conf

 

# SSL Contents와 일반 Contents을 구분하기 위해 SSL 접근 Directory를 별도 설정한다.

DocumentRoot "/usr/local/apache2/htdocs_ssl"

 

# 개인키와 인증서를 다음 경로로 복사한다.

SSLCertificateFile "/usr/local/apache2/conf/server.crt"

SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"

 

 

6. 테스트하기
# /usr/local/apache/bin/apachectl start

https://localhost 했을 때 인증서 및 아파치 첫 화면이 보여야 함.

 

 

7. 기타

하나의 웹 서버로 암호화 및 기존의 방법을 모두 지원 하는 방법
보통 대부분의 사람들은 브라우저에서 https:// 같은 것을 거의 입력하지 않기 때문에
최초의 페이지는 http://로 하고 링크에다 https://를 넣는 것이 좋음.

이를 위해서 apache의 VirtualHost 기능을 이용.

-------------------httpd.conf ----------------------------------------

NameVirtualHost 206.67.100.194:80

  Listen 80
  Listen 443
  Port 80
  SSLDisable

 
  Port 80
  SSLDisable
  ServerAdmin cbrahmer@realpower.com
  DocumentRoot /www/realpower/public_html
  ServerName www.realpower.com
  ServerAlias *.realpower.com
  ErrorLog /www/logs/www.realpower.com-error_log
  CustomLog /www/logs/www.realpower.com-access_log combined
  CustomLog /www/logs/bigdog combined
   

 
  SSLEnable
  Port 443
  SSLCertificateFile /usr/local/ssl/certs/new.cert.cert
  SSLCertificateKeyFile /usr/local/ssl/certs/new.cert.key
  ServerAdmin cbrahmer@realpower.com
  DocumentRoot /www/realpower/public_html
  ServerName www.realpower.com
  ServerAlias *.realpower.com
  ErrorLog /www/logs/www.realpower.com-error_log
  CustomLog /www/logs/www.realpower.com-access_log combined
  CustomLog /www/logs/bigdog combined

 

 

. RPM으로 apache와 openssl 설치

일단  설치 환경을 만듭니다.

# yum install openssl

# yum install httpd

* yum으로 설치할때에는 -y 옵션을 가급적이면 주지 않도록 합니다. (초보자는 더욱!)

1. mod_ssl 설치. yum의 세계는 어찌나 다양한지 .. -0-;

 

# yum install mod_ssl

2. 설정 파일이 잘 위치하고 있는가 확인.

# ls /etc/httpd/conf.d/ssl.conf

* 여기까지 했으면 99% 완료한 것임.

3. 자~ 이제 귀찮은 설치를 진행하러 가볼까요? ㅋ
* 보안키가 설치될 곳은 /etc/httpd/conf 로 하겠습니다.
(일반적으로 다른곳에서 생성 후, 복사를 하는 게 보통입니다.:))
* .key 파일을 생성할때에는 두번의 phrases를 입력받습니다. 잘 기억해야 합니다.

# cd /etc/httpd/conf

# openssl genrsa -des3 -out ssl.key 1024

Generating RSA private key, 1024 bit long modulus

...++++++

............++++++

e is 65537 (0x10001)

Enter pass phrase for ssl.key:

Verifying - Enter pass phrase for ssl.key:

# openssl req -new -key ssl.key -out ssl.csr // name.csr 에도 역시 적당한 이름.

* csr 생성할때에 이것저것 물어봅니다. 순서는 아래와 같습니다.

 국가

 시/도

 구/군

 회사명

 부서명

 도메인 주소

 관리자 이메일

*A challenge password와 An optional company name은 입력하지 않습니다. 걍~ Enter gogo!

 

실제로 운영하는 경우에는 만들어진 ssl.csr 파일을 보내서 crt 파일을 받아야 하지만,
테스트용으로는 아래와 같이 crt를 만들면 됩니다.

# openssl x509 -in ssl.csr -out ssl.crt -req -signkey ssl.key -days 3650

Signature ok

subject=/C=KR/L=Seoul/O=Cemlin/OU=Tech/CN=Fedora14/emailAddress=admin@cemlin.ip.ne.kr

Getting Private key

Enter pass phrase for ssl.key:

* -days 의 옵션은 개발하는 기간동안 운영하도록 날짜를 조절합니다. (1년의 경우는 365로 수정)

/etc/httpd/conf 파일을 확인하여 ssl.key, ssl.crt, ssl.csr 3개의 파일이 생성되었는지 확인.

그리고! httpd의 Start!

# /etc/rc.d/init.d/httpd start

# Password 를 물어보면 입력합니다.

이상 끝!

 

 


MySQL 설치 (update 2011.05.25)
1. 설치

www.mysql.com 에서 mysql-5.4.2-beta 다운로드
# tar zxvf mysql-5.4.2-beta
# cd mysql-5.4.2-beta
# ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=utf8 --with-extra-charsets=all
# make
# make install


여기서 --prefix는 설치할 경로를 말하며 charset은 mysql에서 기본으로 utf8을 사용하겠다는 것이다.

 

 

2. 환경 설정

라이브러리를 등록하기 위해서 ldconfig를 사용하면 편리하다. 라이브러리기 있는 디렉토리를

지정. /etc/ld.so.conf를 수정하여 제일 아래 줄에 /usr/local/mysql/lib/mysql 를 추가 한다

# vi /etc/ld.so.conf

/usr/local/mysql/lib/mysql

 

그후 이를 적용시키기 위해

# ldconfig

 

시작 스크립트 파일 복사

mysql 서비스를 하기 위해서 아래와 같은 시작 스크립트 파일을 해당 위치에 복사 한다.

# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

 

MySQL 실행 디렉토리를 PATH에 추가

재시작시에도 PATH적용하기 위해 /etc/profile을 수정하여 PATH를 추가한다.

# vi /etc/profile

export PATH=$PATH:/usr/local/mysql/bin

 

바로 적용

# source /etc/profile

 

 

부팅시 자동 시작 되도록 등록 후 서비스 시작

# chkconfig mysqld on    

mysqld 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제

 

 

3. MySQL 서버의 초기 DB생성

# /usr/local/mysql/bin/mysql_install_db

Installing MySQL system tables...

OK

Filling help tables...

OK

 

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

 

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

 

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

/usr/local/mysql/bin/mysqladmin -u root -h CentOS5-Fujitsu.ustd.ip.or.kr password 'new-password'

 

Alternatively you can run:

/usr/local/mysql/bin/mysql_secure_installation

 

which will also give you the option of removing the test

databases and anonymous user created by default. This is

strongly recommended for production servers.

 

See the manual for more instructions.

 

You can start the MySQL daemon with:

cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

 

You can test the MySQL daemon with mysql-test-run.pl

cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl

 

Please report any problems with the /usr/local/mysql/bin/mysqlbug script!

 

The latest information about MySQL is available at http://www.mysql.com/

Support MySQL by buying support/licenses from http://shop.mysql.com/

 

# ls -l /usr/local/mysql/data

-> mysql, test가 보임

 

rpm으로 설치 하였다면 /var/lib/mysql 경로에 설치 된다.

이것은 mysql 계정 시 설정 되므로 /etc/passwd에서 확인 할 수 있다.

# grep mysql /etc/passwd

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false

 

 

4. MySQL 그룹 및 사용자 생성 후 초기 DB 소유권을 줌

# groupadd mysql

# useradd -M -d /usr/local/mysql -g mysql -s /bin/false -r mysql

# chown -R mysql.mysql /usr/local/mysql/data

-> -s /bin/false 옵션을 사용해서 유저의 로그인쉘을 사용할 수 없게 하게 함.

즉 mysql이라는 유저는 mysql 데몬을 실행하기 위한 유저일 뿐이라는 것이죠.

서버의 보안강화 측면에서 외부에셔 mysql 유저로 쉘 로그인은 할 필요가 없겠죠.

 

 

5. 데몬 구동 및 중지

# service mysqld start

or

# /etc/rc.d/init.d/mysqld start

Starting MySQL.[ OK ]

 

# ps -ef | grep mysql

root 7763 1 0 22:13 pts/2 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/CentOS5-Fujitsu.ustd.ip.or.kr.pid

mysql 7818 7763 0 22:13 pts/2 00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=/usr/local/mysql/data/CentOS5-Fujitsu.ustd.ip.or.kr.err --pid-file=/usr/local/mysql/data/CentOS5-Fujitsu.ustd.ip.or.kr.pid

 

# netstat -anpt | grep 3306

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7818/mysqld

 

※ root 계정으로 mysqld_safe 실행, mysql 계정으로 mysqld가 실행 이유 확인하기???

socket은 mysql 계정으로 mysqld가 open 하고 있다.

 

mysql을 구동시키는 권장방법 : /usr/local/mysqld_safe --user=mysql &

 

데몬 중지

# /etc/rc.d/init.d/mysqld stop

Shutting down MySQL[ OK ]

 

 

6. MySQL 계정 패스워드 적용

# mysql -u 계정 -p

하면 시스템에 없는 계정도 패스워드 없이 로그인 되지만 DDL 명령 등은 root 계정만 가능하다.

따라서 root 계정에 대한 password를 설정한다.

# /usr/local/mysql/bin/mysqladmin -u root password 'xxxx'

 

mysql를 접속할 수 있는 계정은 반드시 패스워드를 설정한다.

 

 

※ 아래와 같은 버그 발생시 대처

checking for termcap function library... configure: ~~~~

nucurses-devel을 설치한다.

# yum install ncurses-devel

 

make중 g++을 못 찾아 중단 됬을 경우

#yum install gcc-c++

 

g++을 설치했는데도 g++오류가 났을경우

make clean

make distclean

하고 다시 ./configure부터....

 

 


PHP 설치 (2011.06.03 update)
http://www.php.net 에서 php-5.3.6.tar.gz 다운로드

또한 php 설치 전에 설정 옵션에 포함하는 프로그램을 설치 한다. -> php 설치 매뉴얼 참조

 

사용된 옵션에 대한 짧은 설명

apxs2 - apache2 extension

mysqli - MySQLi is an improved version of the older PHP MySQL driver

 

라이브러리들이 rpm으로 설치 되어있다면 라이브러리 설치 위치 확인 후 다음과 같이 진행한다.
# tar zxvf php-5.3.6.tar.gz

# cd php-5.3.6
# ./configure \

--prefix=/usr/local/php \

--with-apxs2=/usr/local/apache2/bin/apxs \

--with-mysql=/usr/bin \

--with-mysqli=/usr/lib/mysql/mysql_config \

--with-gd=/usr/lib \

--with-zlib-dir=/lib \

--with-jpeg-dir=/usr/lib \

--with-png-dir=/usr/lib \

--with-freetype-dir=/usr/lib \

--with-mcrypt=/usr/local/include \

--with-libxml-dir=/usr/lib \

--enable-mbstring

 

or

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/bin --with-mysqli=/usr/lib/mysql/mysql_config --with-gd=/usr/lib --with-zlib-dir=/lib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/lib --with-mcrypt=/usr/local/include --with-libxml-dir=/usr/lib --enable-mbstring

 

or mysql를 소스코드로 설치 했다면

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-gd=/usr/lib --with-zlib-dir=/lib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/lib --with-mcrypt=/usr/local/include --with-libxml-dir=/usr/lib --enable-mbstring


# make
# make install

 

 

./configure 수행 시 에러 해결책

configure: error: libjpeg.(a|so) not found.

해결방법

# wget ftp://ftp.superuser.co.kr/etc/jpegsrc.v6b.tar.gz

# tar xvfz jpegtsrc.v6b.tar.gz

# cd jpegsrc-b6

# ./configure --enable-shared --enable-static

# make

# make install

/usr/bin/install: cannot create regular file `/usr/local/man/man1/cjpeg.1': 그런 파일이나 디렉토리가 없음

# mkdir -p /usr/local/man/man1

# make install

또는

# yum install libjpeg-devel


configure: error: libpng.(a|so) not found.

해결책 :

# yum install libpng-devel


Configure: error: freetype.h not found.
해결책 :

#yum install freetype-devel

 

configure: error: Unable to find gd.h anywhere under /usr/lib

해결책 :
[root@fedora14 php-5.3.6]# rpm -ql gd-devel

ln -s /usr/include/gd.h /usr/lib/gd.h

--with-gd 가 맞으며 --with-gd-dir 이란 옵션은 없다.

 

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

해결책 :

rpm으로 설치한 libmcypt를 지우고 소스코드로 재 설치한다.

# yum remove libmcrypt

# wget http://ftp.linux.co.kr/pub/etc/libmcrypt-2.5.7.tar.gz
# tar zxvfp libmcrypt-2.5.7.tar.gz
# cd libmcrypt-2.5.7
# ./configure && make && make install

또는

# yum install libmcrypt-devel

--with-mcrypt 가 맞으며 --with-mcrypt-dir 이란 옵션은 없다.

 

Configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!
해결책 :

# yum install mysql-devel

 

 

make install 시 문제점

chmod: cannot access `/usr/local/apache2/modules/libphp5.so': No such file or directory 

해결책 :

libphp5.so 파일을 생성할 권한이 없어서 생긴 문제입니다. 물론 root 권한으로 컴파일 하셨을 테지만 php configure시 에러 후  필요한 라이브러리를 설치했을 경우 가끔 발생하더군요. ./configure시 아무런 이상없이 넘어 가신다면 기존 php폴더를 삭제후 새로 압축 풀어서 컴파일 하시면 설치가 될 것 입니다.

즉, 소스코드 소유권을 root로 하여 처음부터 다시 시작한다.

 

 

php.ini 복사

# cp php.ini-dist /usr/local/lib/php.ini -> 5.2.x 버전인 경우
# cp php.ini-production /usr/local/lib/php.ini -> 5.3.x 버전인 경우

or

# cp php.ini-development /usr/local/lib/php.ini

 


다음은 아파치 설정 확인 또는 변경
libphp5.so 모듈이 제대로 입력되어있는지 확인 후 없으면 추가
# Example:

# LoadModule foo_module modules/mod_foo.so

LoadModule php5_module modules/libphp5.so -> 추가

#

 

# Note: The following must must be present to support

# starting without SSL on platforms with no /dev/random equivalent

# but a statically compiled-in mod_ssl.

#

AddType application/x-httpd-php .php .phtml .htm .html .inc .php5 .php4 .php3 -> 추가

AddType application/x-httpd-php-source .phps -> 추가

<IfModule ssl_module>

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

</IfModule>


저장 후 종료
아파치 재시작
# /usr/local/apache/bin/apachectl restart 혹은 start

 

만약 다음과 같은 에러가 발생 할 수 있다.

httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

 

해결 방법은

1. /etc/sysconfig/selinux 파일에서 다음과 같이 수정하여 SElinux의 사용을 해제

SELINUX=disabled

2. # restorecon -R -v /usr/local/apache/modules -> 에러 발생한다. 원인 아직 모름. 3번 사용

3. # chcon -t textrel_shlib_t /usr/local/apache/modules/libphp5.so

Test

제대로 설치되었는지 확인하기 위해 phpinfo.php 파일 작성
# cd /usr/local/apache2/htdocs/
# vi phpinfo.php
내용 작성
<? phpinfo() ?>
저장 후 종료

브라우져 실행 후 localhost/phpinfo.php 입력
phpinfo 내용이 보이면 성공

 

 

 

JDK + Tomcat + Tomcat Connectors 설치 (Update 2011.07.10)

 

아파치(Apache-2.x)에 톰캣(Tomcat-6.0.20)을 설치하는 방법입니다.
(JSP 페이지 가능하도록... 해준다능..)

가. JDK 설치 (Java SE Development Kit)
우선 JDK 가 필요하므로 아래 주소에서 다운로드 받습니다.
http://java.sun.com/javase/downloads/index.jsp

 

Sun 사이트에서는 wget 으로 받지 못하므로 직접 다운로드해서 FTP 로 서버에 올려줍니다. 

다운받은 JDK 파일에 실행 권한을 주고 설치를 진행합니다.

jdk-6uxx-linux-i586-rpm.bin 파일의 경우 rpm 파일을 만들고 설치까지 완료 합니다.

 

# chmod +x jdk-6u26-linux-i586.bin
# ./jdk-6u26-linux-i586.bin


Sun Microsystems, Inc. Binary Code License Agreement

for the JAVA SE DEVELOPMENT KIT (JDK), VERSION 6

SUN MICROSYSTEMS, INC. ("SUN") IS WILLING TO LICENSE THE
SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE CONDITION
THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY
CODE LICENSE AGREEMENT AND SUPPLEMENTAL LICENSE TERMS
(COLLECTIVELY "AGREEMENT"). PLEASE READ THE AGREEMENT
CAREFULLY.  BY USING THE SOFTWARE YOU ACKNOWLEDGE THAT
YOU HAVE READ THE TERMS AND AGREE TO THEM. IF YOU ARE
AGREEING TO THESE TERMS ON BEHALF OF A COMPANY OR OTHER
LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE LEGAL
AUTHORITY TO BIND THE LEGAL ENTITY TO THESE TERMS. IF
YOU DO NOT HAVE SUCH AUTHORITY, OR IF YOU DO NOT WISH
TO BE BOUND BY THE TERMS, THEN YOU MUST NOT USE THE
SOFTWARE ON THIS SITE OR ANY OTHER MEDIA ON WHICH THE
SOFTWARE IS CONTAINED.
................
................

Do you agree to the above license terms? [yes or no]

위의 라이센스에 동의하고 넘어가게 되면 현재 디렉토리에 압축이 풀어집니다.

압축이 풀어진 후 아래 메세지가 나오며 엔터를 눌러 빠져 나옵니다.

 

Java(TM) SE Development Kit 6 successfully installed.

Product Registration is FREE and includes many benefits:
* Notification of new versions, patches, and updates
* Special offers on Sun products, services and training
* Access to early releases and documentation

Product and system data will be collected. If your configuration
supports a browser, the Sun Product Registration form for
the JDK will be presented. If you do not register, none of
this information will be saved. You may also register your
JDK later by opening the register.html file (located in
the JDK installation directory) in a browser.

For more information on what data Registration collects and
how it is managed and used, see:
http://java.sun.com/javase/registration/JDKRegistrationPrivacy.html

Press Enter to continue.....


압축이 풀린 디렉토리를 원하는 곳으로 이동시킵니다.

 

# mv jdk1.6.0_26 /usr/local/jdk1.6
# ls -al /usr/local/jdk1.6
합계 19028
drwxr-xr-x 10 root root     4096  9월 20 18:20 .
drwxr-xr-x 17 root root     4096  9월 20 18:23 ..
-r--r--r--  1 root root     3767  7월 31 22:42 COPYRIGHT
-r--r--r--  1 root root    17179  7월 31 22:42 LICENSE
-r--r--r--  1 root root    28329  7월 31 22:42 README.html
-r--r--r--  1 root root    25390  7월 31 22:42 README_ja.html
-r--r--r--  1 root root    20768  7월 31 22:42 README_zh_CN.html
-r--r--r--  1 root root   249556  7월 31 22:42 THIRDPARTYLICENSEREADME.txt
drwxr-xr-x  2 root root     4096  8월  1 00:39 bin
drwxr-xr-x  7 root root     4096  8월  1 00:39 db
drwxr-xr-x 10 root root     4096  8월  1 00:39 demo
drwxr-xr-x  3 root root     4096  8월  1 00:39 include
drwxr-xr-x  7 root root     4096  9월 20 18:19 jre
drwxr-xr-x  3 root root     4096  9월 20 18:19 lib
drwxr-xr-x  4 root root     4096  8월  1 00:39 man
-r--r--r--  1 root root     5299  9월 20 18:20 register.html
-r--r--r--  1 root root     5731  9월 20 18:20 register_ja.html
-r--r--r--  1 root root     4909  9월 20 18:20 register_zh_CN.html
drwxr-xr-x  9 root root     4096  8월  1 00:39 sample
-rw-r--r--  1 root root 19029023  7월 31 22:42 src.zip

 

/etc/profile 환경설정 파일 맨 아래에 PATH 를 추가 해줍니다.

# vi /etc/profile

 

#Java Setting

export JAVA_HOME=/usr/local/jdk1.6

export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

export PATH=$PATH:$JAVA_HOME/bin

 

# source /etc/profile

 


나. 톰캣 설치

톰캣을 아래 주소에서 다운로드 합니다.
http://tomcat.apache.org/

apache-tomcat-7.x.x와 apache-tomcat-7.x.x-src 반드시 구분한다.

apache-tomcat-7.x.x-src는 소스 설치 버전이고,

여기선 binary(apache-tomcat-7.x.x) 설치를 설명한다.


압축을 푼 후 원하는 곳으로 이동시켜 줍니다.


# mkdir /usr/local/apache-tomcat

# mkdir /usr/local/tomcat
# mv apache-tomcat-7.0.16 /usr/local/apache-tomcat
# cd /usr/local
# ln -s apache-tomcat/apache-tomcat-7.0.16 tomcat

 

/usr/local/apache-tomcat 밑에 tomcat의 소스를 두고...
심볼릭링크로 /usr/local/tomcat 경로를 만들어서 접근한다...
이렇게 하면 tomcat 버젼을 바꿀 때마다 환경설정을 바꿀 필요도 없으면서..
현재 설치된 톰캣의 버젼을 바로 확인할 수 있어서 자주 이용한다.

 

[출처] CentOS 5.3에서 Java와 Tomcat 설치 - Tomcat을 서비스로 관리하기..|작성자 하늘우니


/etc/profile 환경설정 파일 맨 아래에 PATH 를 추가 해줍니다.

# vi /etc/profile
# Tomcat Setting
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin

 

저장 후 완료


환경설정을 적용시켜 줍니다.

# source /etc/profile
# echo $JAVA_HOME
/usr/local/jdk1.6
# echo $CATALINA_HOME
/usr/local/tomcat


로그 디렉토리, catalina.out 를 생성 해줍니다.

# mkdir $CATALINA_HOME/logs <- 현재 설치 버전에선 생성 되어 있다.
# chmod 777 $CATALINA_HOME/logs <- 777 퍼미션이 필요한지 검증 필요


쉘 스크립트에 실행 권한을 줍니다.

# chmod u+x $CATALINA_HOME/bin/* <- 현재 설치 버전에선 일부 적용 되어 있음


톰캣을 실행 해줍니다.

# catalina.sh start

Using CATALINA_BASE: /usr/local/tomcat

Using CATALINA_HOME: /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME: /usr/local/jdk1.6

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar

 

톰캣 실행을 위해서 tomcat 파일을 만든다.

# vi /etc/rc.d/init.d/tomcat

 

#!/bin/sh

# Startup script for Tomcat

#

# chkconfig: 35 85 15

# description: apache tomcat 6.x

#

# processname: tomcat

#

# Source function library.

. /etc/rc.d/init.d/functions

 

 

export JAVA_HOME=/usr/local/jdk1.6

export CATALINA_HOME=/usr/local/tomcat

export TOMCAT_HOME=/usr/local/tomcat

export CLASSPATH="."

 

PRGDIR="$TOMCAT_HOME/bin"

EXECUTABLE=startup.sh

UNEXECUTABLE=shutdown.sh

 

# Check that target executable exists

if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then

echo "Cannot find $PRGDIR/$EXECUTABLE"

echo "This file is needed to run this program"

exit 1

fi

 

# See how we were called.

case "$1" in

start)

echo -n "Starting Tomcat service: "

echo

daemon "$PRGDIR"/"$EXECUTABLE"

;;

stop)

echo -n "Shutting down Tomcat service: "

echo

daemon "$PRGDIR"/"$UNEXECUTABLE"

;;

restart)

$0 stop

sleep 2

$0 start

;;

*)

echo "Usage: $0 {start|stop|restart}"

exit 1

esac

echo

exit 0

 

##


만들어진 tomcat 파일은 /etc/rc.d/init.d/ 로 이동한다.

# mv tomcat /etc/rc.d/init.d/
# chmod 755 /etc/rc.d/init.d/tomcat


tomcat 서비스 등록하고 서비스 시작

# chkconfig --add tomcat

-> runlevel 3, 5번에 자동 등록 된다.
# service tomcat start

 


다. 톰캣 커넥터 mod_jk 모듈 설치

아파치와 연동하기 위한 mod_jk 모듈 설치

소스 코드 다운로드 : http://tomcat.apache.org/download-connectors.cgi


# tar xzvf tomcat-connectors-1.2.32-src.tar.gz
# cd tomcat-connectors-1.2.32/native
# chmod +x buildconf.sh <- 현재 설치 버전은 적용 되어 있음
# ./buildconf.sh

rm autom4te.cache

libtoolize --force --automake --copy

aclocal

autoheader

automake -a --foreign --copy

autoconf

rm autom4te.cache
#./configure \
--with-apxs=/usr/local/apache2/bin/apxs --with-java-home=$JAVA_HOME
# make && make install

 

※ configure 옵션

[root@fedora14 native]# ./configure --help

`configure' configures this package to adapt to many kinds of systems.

 

Usage: ./configure [OPTION]... [VAR=VALUE]...

 

To assign environment variables (e.g., CC, CFLAGS...), specify them as

VAR=VALUE. See below for descriptions of some of the useful variables.

 

Defaults for the options are specified in brackets.

 

Configuration:

-h, --help display this help and exit

--help=short display options specific to this package

--help=recursive display the short help of all the included packages

-V, --version display version information and exit

-q, --quiet, --silent do not print `checking...' messages

--cache-file=FILE cache test results in FILE [disabled]

-C, --config-cache alias for `--cache-file=config.cache'

-n, --no-create do not create output files

--srcdir=DIR find the sources in DIR [configure dir or `..']

 

Installation directories:

--prefix=PREFIX install architecture-independent files in PREFIX

[/usr/local]

--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX

[PREFIX]

 

By default, `make install' will install all the files in

`/usr/local/bin', `/usr/local/lib' etc. You can specify

an installation prefix other than `/usr/local' using `--prefix',

for instance `--prefix=$HOME'.

 

For better control, use the options below.

 

Fine tuning of the installation directories:

--bindir=DIR user executables [EPREFIX/bin]

--sbindir=DIR system admin executables [EPREFIX/sbin]

--libexecdir=DIR program executables [EPREFIX/libexec]

--datadir=DIR read-only architecture-independent data [PREFIX/share]

--sysconfdir=DIR read-only single-machine data [PREFIX/etc]

--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]

--localstatedir=DIR modifiable single-machine data [PREFIX/var]

--libdir=DIR object code libraries [EPREFIX/lib]

--includedir=DIR C header files [PREFIX/include]

--oldincludedir=DIR C header files for non-gcc [/usr/include]

--infodir=DIR info documentation [PREFIX/info]

--mandir=DIR man documentation [PREFIX/man]

 

Program names:

--program-prefix=PREFIX prepend PREFIX to installed program names

--program-suffix=SUFFIX append SUFFIX to installed program names

--program-transform-name=PROGRAM run sed PROGRAM on installed program names

 

System types:

--build=BUILD configure for building on BUILD [guessed]

--host=HOST cross-compile to build programs to run on HOST [BUILD]

--target=TARGET configure for building compilers for TARGET [HOST]

 

Optional Features:

--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)

--enable-FEATURE[=ARG] include FEATURE [ARG=yes]

--disable-dependency-tracking speeds up one-time build

--enable-dependency-tracking do not reject slow dependency extractors

--enable-shared[=PKGS]

build shared libraries [default=yes]

--enable-static[=PKGS]

build static libraries [default=yes]

--enable-fast-install[=PKGS]

optimize for fast installation [default=yes]

--disable-libtool-lock avoid locking (might break parallel builds)

--enable-netscape=DIR Build Netscape/iPlanet/SunONE nsapi redirector

plugin

--enable-jni DEPRECATED: Build jni_connect.so and enable

jni_worker

--enable-EAPI Enable EAPI support (mod_ssl, Apache 1.3)

--enable-maintainer-mode

Turn on debugging and compile time warnings

--enable-prefork Turn on prefork web server mode (single-threaded)

--disable-trace Exclude trace log code from compilation

--enable-api-compatibility

Only use httpd API functions available in all

production releases. This improves binary

compatibility of module builds with httpd releases

older than the release against we build (only

between minor versions).

--enable-flock Turn on flock for shared locking if present

 

Optional Packages:

--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]

--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)

--with-apxs[=FILE] Build shared Apache module.

FILE is the optional pathname to the apxs tool;

defaults to finding apxs in your PATH.

--with-gnu-ld assume the C compiler uses GNU ld [default=no]

--with-pic try to use only PIC/non-PIC objects [default=use

both]

--with-tags[=TAGS]

include additional configurations [automatic]

--with-apache=DIR Build static Apache module. DIR is the pathname to

the Apache source directory.

--with-java-home=DIR DEPRECATED: Where is your JDK root directory

--with-java-platform=VAL

DEPRECATED: Force the Java platform (value is 1 for

1.1.x or 2 for 1.2.x or greater)

--with-os-type=SUBDIR DEPRECATED: Where is your JDK os-type subdirectory

 

Some influential environment variables:

CC C compiler command

CFLAGS C compiler flags

LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a

nonstandard directory <lib dir>

CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have

headers in a nonstandard directory <include dir>

CPP C preprocessor

CXX C++ compiler command

CXXFLAGS C++ compiler flags

CXXCPP C++ preprocessor

F77 Fortran 77 compiler command

FFLAGS Fortran 77 compiler flags

 

Use these variables to override the choices made by `configure' or to help

it to find libraries and programs with nonstandard names/locations.

 

[root@fedora14 native]#

 

 

다음 경로에 mod_jk.so 모듈이 설치 되어 있으면 정상 설치

# ls -al /usr/local/apache2/modules/

-rwxr-xr-x. 1 root root 862265 2011-07-10 14:04 mod_jk.so

 


아파치 설정파일 httpd.conf에 내용 추가

# vi /usr/local/apache2/conf/httpd.conf

 

tomcat 연동 모듈인 mod_jk를 로딩 LoadModule 부분 찾아서 아래 내용 추가
LoadModule jk_module modules/mod_jk.so

 

인덱스페이지에 JSP 를 사용하도록 설정
DirectoryIndex index.html index.php index.jsp

 

apache의 root 경로 설정은 운영 상황에 맞게 설정한다.

Tomcat의 웹어플리케이션 기본 디렉토리로 Root 디렉토리를 변경 할 경우

/usr/local/tomcat/webapps/ROOT 밑에 디렉토리를 생성하여 JSP과 서블릿 파일을 저장하면 된다.

DocumentRoot "/usr/local/tomcat/webapps/ROOT"

 

루트 디렉토리에 접근 할 수 있도록 Deny 해제

<Directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

#Deny from all

Allow from all

</Directory>

 

jk_module의 환경 설정을 위해 맨 밑에 아래 내용 추가

#JK Connection Configuration

<IfModule jk_module>

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

JkRequestLogFormat "%w %V %T"

JkAutoAlias "/usr/local/tomcat/webapps"

JkMount /*.jsp ajp13

JkMount /servlet/* ajp13

JkUnmount /*.php ajp13

</IfModule>

 

만약 mod_jk.conf 파일을 별도로 /usr/local/apache/conf/extra에 만들었다면 다음 같이 내용 추가

#JK Connection Configuration

include conf/extra/mod_jk.conf <- 깔끔하므로 되도록 이 방법으로 쓰자.

 

※ JK Connection Configuration에 대한 설명

tomcat 컨테이너에 웹 루트 어플리케이션 디렉토리가 어디에 탑재되어 있는지 설정파일은 어디에 있는지 기타 설정에 대한 파일은 외부 파일로 따로 작성한다. conf 파일로 만들어 놓는다.

JkWorkersFile : tomcat 컨테이너와 port 통신을 위한 설정 부분으로 연동에 필요한 포트설정 부분

과 가상도메인 등의 기타 설정 파일 위치 지정 
JkLogFile : 로그 파일 위치를 지정한다. 
JkLogLevel : 로그 라벨을 지정한다. error 있을테고 info 등등
JkAutoAlias : 자동으로 tomcat 컨테이너에 탑재된 웹 어플리케이션 지정한다.

(설정 하지 않아도 차이가 없었다)
JkMount : 어떤url 패턴으로 서버하고 연결시킨 것인지 결정하는 것으로
           /*.jsp 를 하게되면 jsp 호출시 아파치가 톰캣서버를 호출하도록한다.
           * 이렇게 하게되면 모든  url 호출시 톰캣서버를 호출한다.
           (이렇게 하게되면 아파치의 서버를 호출하지 못한다.)
JkUnmount : 해당 url 패턴으로 톰캣서버를 호출하지 못하도록 한다.

 

아파치 /usr/local/apache/conf 디렉토리에 workers.properties 파일 생성

이것은 Apache 웹서버와 tomcat 컨테이너와 통신을 하기 위한 포트 설정 부분을 별도의 파일로 따로 작성한 것이다.
사용 할 worker 목록을 지정한다. ajp13 대신 local, default 등 원하는 이름으로 지정 할 수 있다.

worker.list=ajp13 처럼 ajp13 worker만 지정하였으며, 여러 개를 지정해야 할 경우 콤마로 구분
ajp13 worker에 대한 설정 시 톰캣 5.x는 ajp13을 기본적으로 제공한다.

# vi /usr/local/apache/conf/workers.properties
workers.tomcat_home=$CATALINA_HOME
workers.java_home=$JAVA_HOME

ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

 

저장 후 종료

 

아파치 재시작
# /usr/local/apache/bin/apachectl restart

 

JSP 작동 확인
http://서버IP:8080 <- 이것은 오직 tomcat만 호출한다.

http://서버IP/index.jsp

 

# netstat -anpt | grep 8009

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

phpinfo 페이지에서 mod_jk 모듈이 로드 됐는지 확인 [출처] Apache 2.0.x + php 5.x + mysql 5.x 설치하기 + mod_jk로 톰캣 연동|작성자 작은나무

 

 

 

'DB > MySQL' 카테고리의 다른 글

mysql index 설정  (0) 2012.03.30
Mysql Command Line Client charset 설정  (0) 2012.03.27
mysql storage engine - InnoDB  (0) 2012.03.19
Auto_increment예약어  (0) 2012.03.17
MySQL PASSWORD() 함수를 자바로 구현하기  (0) 2012.03.17
Posted by linuxism
,