한국어

Programming

twin 주소복사
조회 수 547 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

PC에 웹 서버 구축하기_0 (Apache + PHP + MySQL)

 

들어가면서.

PHP + MySQL 로 Facebook 웹 페이지 형태의 게시판을 만들기 위해 사용하는 노트북의Windows 8 운영 시스템에 Apache + PHP + MySQL로 구성한 웹 서버를 구축해 놓고 잘 사용하다가, 운영체제 업데이트 중 뜻하지 않은 실수(세상에…업데이트 중인데 power long key로 시스템을리부팅시켜버렸어요…ㅠ.ㅠ)로 노트북이 Booting 되지 못하는 상태에 빠져서….눈물을 머금고 노트북에 Windows 7 Ultimate 64 bit 운영체제를 재설치 했답니다…
PC Drivers 들도 다 설치하고 나니 다시 Apache + PHP + MySQL 로 웹서버를 구축할까 아님Hosting 서비스 받고 있는 서버를 그냥 이용할까 하다가 Windows 7 운영체제에 다시 한번 웹 서버 구축을 하면서 기존에 했던 내용을 좀 더 깔끔히 정리해서 포스팅 해보려 합니다. 동일 내용으로 기존에 다른 곳에 포스팅한게 있는데 아주 깔끔히 정리되어 있지 않은 상태라…..
 서버 설치 와 한글 지원을 위한 설정 및 테스트 등도 진행하고 이후에는 HTML, CSS, PHP 등웹 페이지 관련 내용들을 제가 만든 웹페이지를 Refactoring 하면서 공부도 할겸 해서 정리하는 대로 포스팅 해볼까 합니다…
 
 
 

웹 서버에 대한 간단한 정리

 
 그럼, 먼저 ‘웹 서버’ 라는 것이 무엇인지 간단히 이해하고 넘어가도록 하겠습니다. 웹 서버를 네트워크를 통하여 웹 클라이언트들로부터 HTTP 요청들을 수신하였을 때 HTML 문서들과 같은 부가적인 컨텐츠들과 함께 HTTP 응답을 제공하는 프로그램(서버 프로그램)이 동작하는 컴퓨터 혹은 그와 같은 컴퓨터 프로그램을 뜻합니다. 그리고 이 글을 보고 있는 여러분이 사용하고있는 컴퓨터 장치는 이미 ‘웹(Web)’ 이라는 불리는 네트워크에 연결되어 있으며 웹 클라이언트(Web Client)로서 동작을 하고 있는 것이구요.
 이러한 웹 서버의 전통적인 기능은 ‘웹 클라이언트’가 요청한 웹 페이지를 서버 컴퓨터의 하드 디스크와 같은 저장 장치에서 찾아내어 웹 브라우저에 적합하도록 그 파일을 포맷하여 전송해 주는 것입니다. 이러한 기존 웹 서버 표준 동작들은 web client가 누구이던지 상관없이 인터넷 상에서 이미 정해진 내용이 그대로 보여지는 문서들인 정적인 문서들을 전달하는 것을 고려하여 설계되었습니다. 웹이 대중화 되기 이전에는 이런 정적 문서들만을 지원하는 웹 서버로 별 문제가 없었지만 1990년대 중반을 지나며 인터넷과 웹 브라우저들이 대중화 되면서 주식 가격, 날씨 정보, 물건 배달 상황등과 같은 동적인 웹 페이지들의 제공이 필요한 상황들이 도래 됩니다. 따라서 웹 서버가 데이터 베이스의 접속 및 소프트웨어 응용 프로그램 개발들이 가능하도록 확장되어야만 하게 되며 이로 인해 나타난 것이 웹 애플리케이션 서버 입니다.
이러한 웹 애플리케이션 서버는 동적 데이터/컨텐츠들을 지원하기 위해 웹 서버를 확장하도록 특별이 설계된 것으로서, 동적 데이터를 요구하는 사용자들의 요청을 웹 서버로부터 자동적으로 가져가서 처리해 줍니다. 즉 기존의 웹 서버에서의 정적 데이터 처리 기능은 유지하면서 웹 애플리케이션 서버라는 것을 추가하여 동적 데이터 처리 기능을 보강한 것입니다.
즉 웹 서버가 주 서버이고 웹 애플리케이션 서버는 보조 서버로 보시면 되고 간단하게는 웹 서버는 정적 데이터 처리를 주 기능으로 하고, 웹 애플리케이션 서버는 동적 데이터 처리를 주 기능으로 한다고 이해하시면 됩니다. 여기서 잠깐 놓치지 말아야 할 것은 동적 데이터를 처리 한다는 것은 데이터 베이스를 필요로 한다는 것입니다. 즉 웹 애플리케이션 서버의 운영은 데이터 베이스와의 연동을 필요로 한다는 것입니다.
 

우리가 설치할 웹 서버, 웹 애플리케이션 서버, 데이터 베이스 등.

 
 전 PHP 언어를 이용해서 게시판을 만들 작정입니다. 이유는….공짜로 이용할 수 있는 서버를 이용하기 위해서는 그게 제일 편하기 때문입니다. 결정적으로 Web hosting 업체에서 제공하는 웹 서버 서비스의 가격을 살펴보았을 때 Apache + MySQL + PHP 조합이 제일 쌌었습니다. 이유는 물론 Apache, MySQL 등이 모두 Open source 기반이라 무료라는 것 때문이겠지요. 하여 저 역시 제PC 에 설치하는 웹 서버는 아래와 같이 구성하여 설치합니다.
 웹 서버: Apache
 웹 어플리케이션 서버: Tomcat (Java SE 필요)
 데이터 베이스: MySQL
 사용 언어: PHP (관련 툴들도 설치 예정)
 개발 도구: Visual Studio express / Eclipse (관련 툴들은 각자 알아서…^^)
 
 그럼, 이제 설치에 앞서서 아래 url 들을 통하여 모두 다운로드를 받아놓도록 합니다.
참고로, 제 PC 환경은 Windows 7 64 bit 입니다.
n  전 “httpd-2.2.25-win32-x86-openssl-0.9.8y.msi” 을 다운 받았답니다. (url: http://apache.tt.co.kr/httpd/binaries/win32/httpd-2.2.25-win32-x86-openssl-0.9.8y.msi)
n  전 여기서 ‘64-bit Windows zip’ 파일과 ‘32-bit/64bit Windows Service Installer’ 파일을 받았습니다.
n  앞서 언급했듯이 Tomcat은 Java SE 가 필요하며 제가 받은 버전인 Tomcat 8.0 버전은Java SE 7 또는 그 이후 버전이 필요합니다. 여기서 java 개발을 할 것은 아니므로 JRE 만 다운 받아서 설치하도록 합니다.
‘jre-8u5-windows-x64.exe’를 다운 받아 놓습니다.
l  Web server인 Apache 와 Web application server인 Tomcat을 연동해 주기 위해서는 connector라는 것이 필요합니다. 이 connector는 여기 (http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/) 에서 받을 수 있습니다.
n  전 ‘tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip’ 을 받았답니다.
n  여기에서 ‘mysql-installer-community-5.6.17.0.msi’ 를 다운 받습니다.
(다운받으려하면 ORACLE 로그인을 하라는 웹 페이지가 나오는데 제일 밑에 있는 ‘No thanks 어쩌고 저쩌고’ 하는 문장을 클릭하여 우선 그냥 다운로드 진행하면 됩니다.)
l  PHP: Windows 운영체제에서 php를 Apache와 연동시켜 사용하려면 VC6 버전을 이용하여야합니다.
n  http://windows.php.net/downloads/releases/archives/ 에서 우선 ‘php-5.3.2-Win32-VC6-x86.msi’ 를 다운로드 합니다. (64bit 용을 찾아보았는데 VC6버전으로는 64BIT 용이 안보이니 우선 X86용을 받아서 사용하는 방법을 찾아봐야 하겠네요).
 

개발환경 구축 – 웹 서버, 웹 애플리케이션 서버 구축.

 
자 이제 받은 프로그램들을 이용하여 서버 구축을 진행하도록 합니다. 먼저 JRE를 깔아놓고 시작하도록 하지요.
 

JRE 설치하기

다운로드 받아놓았던 “jre-8u5-windows-x64.exe” 파일을 실행합니다.
그럼, 아래와 같은 화면이 나오는데 그냥 “Install” 을 눌러줍니다.
 
 
그럼, 아래와 같이 install 이 진행되고
 
다 완료되면 close 버튼 눌러주면 끝입니다.
 
 

Apache 설치하기(웹 서버)

 
그럼, 다운로드 받아놓은 ‘httpd-2.2.25-win32-x86-openssl-0.9.8y .msi’ 를 실행하여 이제 Apache server 를 설치하도록 합니다.
‘Next’ 눌러서 진행하고,
 
라이선스에 동의하여 다음으로 진행합니다.
 
 
그럼, 아래와 같이 웹 서버 구성을 하기 위한 입력창들이 나타나는데,
네트워크 도메인과 서버이름은 우선 localhost로 입력해 주고 Administrator’s Email address 는 각자 사용하고 있는 개인 e-mail 을 입력해 주시면 됩니다(개발용이므로 localhost로만 진행하도록하겠습니다).
 
그리고 “Next”로 넘어가면 아래와 같이 설정 유형을 선택하는 화면이 나오는데 그냥 “Typical” 선택하고 진행하면 됩니다.
 
 
그 다음은 아파치 서버를 내 컴퓨터의 어느 위치에 설치할 것인지를 묻는 화면이 나오는데 위치변경하지 않고 그냥 “NEXT” 진행하도록 합니다.
그럼, 이제 설치준비가 되었다는 화면이 아래와 같이 나타나는데 “Install” 을 눌러서 설치 진행하도록 합니다.
 
설치가 다 끝나면 “Finish”를 눌러서 완료시켜 주도록 합니다.
 
 
앞서 정리한 바와 같이 Apache는 웹 서버입니다. 우리는 지금 이 웹서버를 localhost라는 네트워크 도메인에 localhost라는 서버 이름으로 설치하였습니다. 그렇다면 localhost에 접속해 보면 뭔가가 나타나야겠죠?
물론 Apache 가 기본적으로 지원하는게 없으면 html page 를 만들어서 확인해야 할테지만explorer 이나 chrome과 같은 브라우저를 띄워 URL 창에 localhost라고 입력하고 결과를 보면 아래와 같이 “It works” 라는 화면이 나타납니다.
 
비록 네트워크 도메인을 localhost로 잡아줘서 아직 다른 컴퓨터에서는 접속하지 못하지만, 최소한 여러분의 컴퓨터에서는 localhost 로 설치된 웹 서버에 브라우저로 접속할 수 있는 상태가 되어있는 것입니다.
 

Tomcat 설치하기(웹 애플리케이션 서버 설치)

 
 자 이제 웹 애플리케이션인 Tomcat 을 설치하도록 합니다. 먼저 다운로드 받은 “apache-tomcat-8.0.5.exe”를 실행합니다.
첫 화면은 아래와 같습니다. “Next”를 눌러 줍니다. 
 
 
 
그러면  License 관련 창이 나타나는데 “I agree”를 눌러주고 넘어갑니다.
그 다음 화면은 어떤 구성요소들을 설치할 것인지 선택하는 화면인데, 음…’Service Startup’ 은 필요하면 나중에 설정해 줘도 될테니 “Service Startup” 을 제외한 나머지 항목들을 아래와 같이 선택하고 진행합니다.
 
 
그 다음은 Tomcat 구성을 어떻게 할 것인지 설정하는 화면이 나오는데 혹 모르니 아래와 같이“Create Shortcuts for all users”를 선택해 주고 “User Name” 과 “Password” 항목은 자신이 쓸 아이디와 비밀번호를 설정해 주고 진행합니다.
 
 
그리고 나면 아래와 같이 아까 설치한 JRE 폴더를 자기가 알아서 잡아줍니다. 그러니 여긴 그냥“Next” 로 진행하도록 합니다.
 
자 이제 설치위치를 묻는 창이 나오는데 그냥 “Install” 을 눌러서 기본 설치 위치에 그대로 설치 하도록 합니다.
그리고 Tomcat 설치가 끝나면 아래와 같이 완료 화면이 나오는데 그대로 “Finish”를 눌러줍니다.
 
 
 
그러면 Apache Tomcat 의 실행 화면과 함께 “Readme.txt”가 저절로 열려서 보입니다.
Apache Tomcat 의 실행여부는 아래 화면과 같이 확인해 볼 수 있습니다.
 
 
 
이제 Tomcat 의 설치 및 실행이 끝났는데 Tomcat 역시 현재 기본적으로 localhost 로 잡혀있는 상태이니 Apache 처럼 동작확인이 가능합니다. 하지만 아까 설정화면을 통하여 HTTP 포트는 8080으로 잡아 줬으므로 브라우저를 통하여localhost:8080 으로 확인해 주면 아래와 같이 tomcat 즉 웹애플리케이션 서버에서 응답하는 것을 볼 수 있습니다.
 
 
자 이제 웹 서버인 Apache 와 웹 애플리케이션인 Tomcat을 각각 설치했고 각각의 동작을 확인하였습니다.
 

Apache 와 Tomcat 연동하기

 
이제 이 두 서버를 서로 연동시켜 주도록 합니다. Windows 7 64bit를 사용하고 있는 제 PC 에서는앞서 설치한 Apache는 “C:\Program Files (x86)\Apache Software Foundation\Apache2.2” 폴더에,
그리고 Tomcat은 “C:\Program Files\Apache Software Foundation\Tomcat 8.0” 폴더에 설치되어 있습니다. 저희가 Apache와 Tomcat의 연동을 위해 사용할 “mod_jk” 라는 소프트웨어 모듈은 2가지객체를 필요로 합니다.
1.       Mod_jk.xxx – 아파치 HTTP 서버 모듈 (사용하시는 분의 운영체제에 따라서 mod_jk.so, mod_jk.nlm 과 같이 확장자가 틀려질 수 있습니다. Windows OS의 경우 MOD_JK.so를사용합니다).
2.       Workers.properties – Tomcat process 를 workers(일꾼들)이라고 부르는데 workers들이사용할 host 와 port들을 기술하는 파일입니다.
그럼, 다운로드 받은 ‘tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip’ 압축파일을 풀면 아래와 같이 mod_jk.so 파일을 볼 수 있습니다.
여기서 주의해야 할 점은 파일명에서 “httpd-2.2.x”는 Apache 버전명을 나타내는 것으로 사용하는Apache의 버전명과 connectors 의 버전명이 일치하여야 제대로 동작합니다. 그렇지 않으면connector 연동 (Loadmodule jk_modules modules/mod_jk.so)후 Apache를 start 시키면 “The requested operation has failed”라는 팝업창이 나타나면서 Apache 실행이 되지 않은 문제가 나타나게 됩니다.
 
 
 
이 ‘mod_jk.so’파일을 “C:\Program Files (x86)\Apache Software Foundation\Apache2.2\modules” 폴더 아래로 복사해 줍니다.
그리고 notepad 를 하나 열어서  아래 내용을 입력해 주고, worker.properties 라는 파일로 저장해주면 됩니다. (NOTE: 이때 확장자를 txt 가 아닌 properties 로 저장하셔야 합니다).
 #Define 1 real worker using ajp13
worker.list=worker1
#set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
 
이렇게 만든 worker.properties 파일은 “C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf” 폴더 아래로 복사해줍니다.
자 이제, 앞서 말씀드린 Apache 와 Tomcat 의 연동을 위해 필요한 2가지 모듈을 각각 하나는Apache 서버 위치에 또 다른 하나인 worker.properties 파일은 tomcat에 각각 위치시켰습니다. 이제 Apache web server가 이 2가지 파일을 이용하여 Tomcat을 연동시킬 수 있도록 httpd 파일을 업데이트 해줘야 합니다.
 
C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf 폴더내에 있는 Apache의httpd.txt 파일을 notepad 와 같은 text editor로 엽니다.
 
그리고 아래와 같은 내용을 추가해 주고 저장합니다. 여기서 각 workers.properties 파일등은 제 설치 환경에 맞추어서 다 잡힌 것들이니 여러분은 여러분의 환경에 맞춰서 변경이 필요한 부분은 변경해 주시면 됩니다.
LoadModule jk_module modules/mod_jk.so
# Where to find worker.properties
JkWorkersFile "C:/Program Files/Apache Software Foundation/Tomcat 8.0/conf/workers.properties"
# Where to put jk shared memory
JkShmFile      "C:/Program Files/Apache Software Foundation/Tomcat 8.0/logs/httpd/mod_jk.shm"
# Where to put jk logs
JKLogFile      "C:/Program Files/Apache Software Foundation/Tomcat 8.0/logs/mod_jk.log"
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# Send servlet for context /examples to worker namded worker1
JKMount /*/servlet/ worker1
# Send JSPs for context /examples to worker named worker1
JkMount /*.jsp worker1
 
이제 Apache와 Tomcat 모두 재실행을 시켜줍니다. 그렇다면 Apache 와 Tomcat 이 제대로 연동되고 있는지 확인해 봅시다.
브라우저를 하나 열어서, http://localhost/index.jsp 로 주소를 입력해 주고 동작을 확인합니다.
이때 아래와 같이 Apache Tomcat 화면이 보이면 Apache 와 Tomcat의 연동이 정상적으로 되고 있는 것입니다. 지금까지 제가 설정한 환경에서는 Apache로 http://localhost/index.jsp 주소를 보낸것이 Tomcat 으로 전달되어 처리됨으로써 아래와 같은 화면이 나옵니다.
 
 
 
 
이번 포스팅에서는 Apache 와 Tomcat 의 설치 및 연동을 하였구요, 이제 다음 포스팅(http://joelwhayoungkimit.blogspot.kr/2014/07/12-pc-1-apache-tomcat-php-mysql.html)에서는MySQL 과 php 지원 설정등을 다루겠습니다.