OpenSSL Installation with PHP, Apache, ...

31433 
Created at 2006-09-29 07:01:09 
258   0   0   0  
Apache + PHP + Zend Optimizer + MySQL + openssl + mod_ssl mini HOWTO
김 동민
dmkim@scai.snu.ac.kr

Revision History
Revision v0.1 2001년 3월 25일  



본 문서는 가장 널리 쓰이는 웹서버인 아파치에서 PHP, php optimizer인 Zend Optimizer, MySQL 데이타 베이스 서버를 설치하고, ssl protocol을 지원할 수 있도록 mod_ssl을 설치하는 간단한 방법을 소개한다. 이 글은 kldp에 있는 백명훈님의 'MySQL + Apache + PHP4 + IMAP + Zend Optimizer 설치하기' 를 기본으로 하고 있다.



--------------------------------------------------------------------------------

준비물
설치를 시작하기전에 각 패키지들을 다운로드 받도록 하자. 여러 형태의 패키지가 존재하지만, 기본적으로 타르볼을 받아 직접 컴파일 하도록 하자. 이렇게 하는 특별한 이유는 없다. 그냥 재미있으니까...^^; 설치 플랫폼은 인텔 계열 linux를 가정한다.

다음의 패키지들을 다운 받도록 한다. 이들은 이글이 쓰여질 당시까지 최신 버전들이다.



Apache - apache_1.3.19.tar.gz ( http://httpd.apache.org/dist/)

PHP - php-4.0.4pl1.tar.gz ( http://www.php.net/downloads.php)

Zend Optimizer - ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz ( http://www.zend.com/download.php)

MySQL - mysql-3.23.35.tar.gz ( http://www.mysql.com/downloads/mysql-3.23.html)

OpenSSL - openssl-0.9.6.tar.gz ( http://www.ssl.org/source/)

mod_ssl - mod_ssl-2.8.1-1.3.19.tar.gz ( http://www.modssl.org/source/)



--------------------------------------------------------------------------------
설치하기
설치에는 약간의 순서가 필요하다. 이는 각 패키지들이 전적으로 독립된 것이 아니라 약간의 의존성을 가지고 있기 때문이다. 우리는 다음 순서를 따라서 설치하도록 하자.

MySQL 설치 --> OpenSSl 설치 --> mod_ssl 설정 --> Apache 설정 --> PHP4 설치 --> Apache 설치 --> Zend Optimizer 설치

먼저 각 소스들을 받아놓은 디렉토리로 이동해서 압축을 풀어놓도록 하자. 여기서는 /usr/local/src에서 작업하는 것으로 가정한다.

gzip -dc mysql-3.2.32.tar.gz | tar xvf -
gzip -dc openssl-0.9.6.tar.gz | tar xvf -
gzip -dc mod_ssl-2.8.1-1.3.19.tar.gz | tar xvf -
gzip -dc apache_1.3.19.tar.gz | tar xvf -
gzip -dc php-4.0.4pl1.tar.gz | tar xvf -
gzip -dc ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz | tar xvf -

MySQL 설치
먼저 MySQL의 소스 디렉토리로 이동하고, 컴파일 후 설치한다.

[root@localhost src]# cd mysql-3.23.32
[root@localhost mysql-3.23.32]# ./configure --prefix=/usr/local/mysql
> --with-charset=euc_kr
   .
   .
   .
[root@localhost src]# make; make install
MySQL이 이상없이 설치되면, MySQL의 기본 테이블을 생성시킨다.
[root@localhost mysql-3.23.32]# cd /usr/local/mysql/bin
[root@localhost bin]# ./mysql_install_db
MySQL 시동 스크립트를 약간 편집한다.
/usr/local/mysql/share/mysql/mysql.server에서
'$bindir/safe_mysqld...'으로
시작되는 부분을 찾아서 '--language=korean'을 추가한다.
mysql.server에 실행 퍼미션을 주고, 실행가능한 경로에 복사한다. 여기서는, /usr/local/bin으로 하겠다.
[root@localhost mysql]# cp ./mysql.server /usr/local/bin
[root@localhost mysql]# chmod 755 /usr/local/bin/mysql.server
이제 MySQL의 설치가 완료되었다.

OpenSSl 설치
apache의 mod_ssl을 설치하기 전에 OpenSSl library를 설치할 필요가 있다. 단, 여기서는 이 패키지를 완전히 설치하지는 않고, mod_ssl이 사용할 수 있도록 해 놓는 정도로만 한다.

OpenSSl의 소스 디렉토리로 이동해서 컴파일 해 놓는다.

[root@localhost src]# cd openssl-0.9.6
[root@localhost openssl-0.9.6]# ./config
[root@localhost openssl-0.9.6]# make
  .
  .
  .
이상없이 컴파일되면, 그대로 두고 다음 단계로 넘어한다.

mod_ssl 설정
이 단계에서는 특별히 컴파일하는 과정이 있지 않다. mod_ssl의 소스를 apache의 소스트리에 적용시키기만 하면 된다. 한가지 주의할 점은 '--with-apache', '--with-openssl' 옵션은 각 소스의 위치라는 점이다.

[root@localhost src]# cd mod_ssl-2.8.1-1.3.19
[root@localhost mod_ssl-2.8.1-1.3.19]# ./configure
> --with-apache=/usr/local/src/apache_1.3.19
> --with-openssl=/usr/local/src/openssl-0.9.6
   .
   .
   .
약간의 환영 메시지가 뜰 것인데, 특별한 이상이 없다면 성공적인 셈이다.

Apache 설정
본격적으로 apache를 설치하기 전에 configure 스크립트를 한번 실행시킬 필요가 있다. 이는 PHP의 configure에 필요하기 때문이다. 여기서는 apache를 /usr/local/apache 에 설치한다고 가정하자.

[root@localhost src]# cd apache_1.3.19
[root@localhost apache_1.3.19]# ./configure --prefix=/usr/local/apache
   .
   .
   .

PHP4 설치
이제 PHP의 소스 디렉토리로 이동해서 컴파일하고 설치해보자.

[root@localhost src]# cd php-4.0pl1
[root@localhost php-4.0pl1]# ./configure
> --with-config-file-path=/usr/local/apache/conf
> --disable-debug
> --with-mysql=/usr/local/mysql
> --with-apache=/usr/local/src/apache_1.3.19
> --enable-track-vars
   .
   .
   .
[root@localhost php-4.0pl1]# make; make install
   .
   .
   .
역시 특별한 이상이 없다면, PHP4가 성공적으로 설치된 것이다. 옵션을 줄 때 주의할 점은 '--with-mysql'의 경우엔 앞서 MySQL을 설치한 디렉토리, '--with-apache'의 경우엔 apache의 소스 디렉토리를 명시한다는 것이다. '--disable-debug' 옵션은 다음에 설치할 Zend Optimizer를 위한 것이다.

Apache 설치
이제 main인 apache를 설치할 차례이다. 앞서와 같이 configure, make, make install을 차례로 시행하는데, configure 옵션 마지막에서 '...libphp4.a'를 정확히 입력하도록 하고, 만일 configure 실행 단계에서 'SSL_BASE..' 어쩌고 하는 메시지가 뜨면, mod_ssl을 apache 소스트리에 적용하는 단계에서 '--with-openssl' 옵션을 바르게 주지 않은 경우이다. 이때는 'export SSL_BASE=/usr/local/src/openssl-0.9.6' 정도로 SSL_BASE를 지정해 주고 다시 시도해 보도록 하자.

[root@localhost src]# cd apache_1.3.19
[root@localhost apache_1.3.19]# ./configure
> --prefix=/usr/local/apache
> --enable-module=ssl
> --activate-module=src/modules/php4/libphp4.a
   .
   .
   .
[root@localhost apache_1.3.19]# make
   .
   .
   .

여기까지 오면 일단 apache 컴파일은 성공적인 셈이다.
다음은 선택적으로 ssl에서 사용할 인증서(?)를 만드는 과정이다.
apache를 시동할때마다, password 비슷한 것(?)을 입력하기 귀찮은 사람은
권하지는 않지만, 건너 뛰어도 좋다.

[root@localhost apache_1.3.19]# make certificate
   .
   .
   .

이와 같이 하면, 몇가지 질문이 이어진다. 화면을 잘 읽고 적당한
단어들을 입력하면 되는데, 마지막에

Enter PEM pass phrase:

라는 질문에 적은 문구를 잘 기억하도록 한다. (이것이 나중에 apache를
시동할 때 쓰일 패스워드라고 생각하면 편할 것이다.)

이제 apache를 설치하도록 하자.

[root@localhost apache_1.3.19]# make install
   .
   .
   .


Zend Optimizer 설치
이제 설치부분의 막바지에 다다랐다. PHP의 성능을 높여주는 Zend Optimizer를 설치해 보도록 하자. 앞서 풀어 놓았던 디렉토리를 통째로 옮기면 된다.

[root@localhost src]# mkdir /usr/local/Zend
[root@localhost src]# mv ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386
> /usr/local/Zend/lib
이제 모든 설치가 끝났다. 다음에서 몇가지 환경 설정과 점검을 해보도록 하자.


--------------------------------------------------------------------------------

마지막 점검하기
앞서 설치한 패키지들이 이상없이 잘 설치되었나 검사하고, 실행에 필요한 몇가지 설정을 추가하도록 하자.

환경 설정하기
전에 풀어둔 PHP 소스 디렉토리로 이동해서 php.ini-dist 파일을 /usr/local/apache/conf 디렉토리로 복사하자.

[root@localhost src]# cd php-4.0pl1
[root@localhost php-4.0pl1]# cp php.ini-dist /usr/local/apache/conf/php.ini
복사한 php.ini 파일에 Zend Optimizer를 위한 설정을 추가한다.
zend_optimizer.optimization_level=15
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"
이제 apache의 설정 파일인 /usr/local/apache/conf/httpd.conf를 편집한다. 먼저 시작 페이지 설정이다.
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
index.php외에 필요한 것들을 추가하면 된다. 다음은 mime type이다. 설정 파일을 찾아보면 PHP를 위한 설정이 주석으로 막혀있는 것을 발견할 수 있을 것이다. 주석을 해제하도록 하자.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
다음은 SSL을 사용하기 위한 설정이다. 서버를 따로 띄우는 등 여러가지 방법이 있지만, 여기서는 apache의 virtual host 기능을 이용하도록 하자. 설정 파일에서 'Listen 80' 하는 부분을 찾아 아래에 'Listen 443' line을 추가한다. 이는 ssl이 기본적으로 443번 포트를 사용하기 때문이다.
Listen 80
Listen 443
마지막 부분에 ssl protocol을 사용할 virtual host에 대한 설정을 추가한다.
SSLSessionCache dbm:/var/run/ssl.scache
SSLMutex        file:/var/run/ssl.mutex
SSLLog          /var/log/ssl.log

<VirtualHost 127.0.0.1:443>
   SSLEngine                   on
   SSLCertificateFile          /usr/local/apache/conf/ssl.crt/server.crt
   SSLCertificateKeyFile       /usr/local/apache/conf/ssl.key/server.key
   SSLVerifyClient             none
   ServerName localhost.localdomain
   ServerAdmin root@localhost.localdomain
   DocumentRoot /usr/local/apache/htdocs
   ErrorLog logs/localhost-secure-error_log
   CustomLog logs/localhost-secure-access_log common
</VirtualHost>

약간 부연하자면, <VirtualHost x.x.x.x:443> 에서는 사용하는 ip(혹은 server name)를 적고, 'DocumentRoot'에는 ssl을 사용하는 virtual host가 서비스할 문서 디렉토리, 기타 서버에 국한된 log 파일이름 등이다. 자세한 설정은 apache의 virtual host 설정 문서를 참고하도록 하자.

테스트 하기
이제 apache를 시동해 보자.

[root@localhost src]# cd /usr/local/apache/bin
[root@localhost bin]# ./apachectl start
./apachectl start: httpd started

위와 같이 되면 정상적으로 실행된 것이다. 만일 apache를 설치하는 단계에서 'make certificate'을 실행했다면, 다음과 같은 문장이 보일 것이다.
Apache/1.3.19 mod_ssl/2.8.1 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server 127.0.0.1:443 (RSA)
Enter pass phrase:

설치 단계에서 기억하라고 했던 단어를 입력하면 앞서와 같이 실행된다.
Ok: Pass Phrase Dialog successful.
./apachectl start: httpd started

apache가 정상적으로 실행되면, 다음과 같은 PHP script를 만들어서 php module을 테스트해보자.
<?
phpinfo ();
?>

apache 설정 파일에서 DocumentRoot 부분을 고치지 않았다면 /usr/local/apache/htdocs 가 기본 문서 디렉토리일 것이다. 위의 스크립트를 /usr/local/apache/htdocs/test.php 로 저장하고, browser로 'http://127.0.0.1/test.php'를 불러 보자. PHP에 대한 정보가 출력되면, php module이 정상적으로 작동하는 것이다.

앞서 ssl을 사용하는 virtual host에 대한 DocumetRoot 부분을 고치지 않았다면 이 역시 같은 디렉토리를 기본 문서 디렉토리로 사용한다. browser에서 'https://127.0.0.1/test.php'를 불러본다. 똑같은 내용이 보이기 전에 ssl 연결을 시사하는 창이 하나 뜨게 될 것이다. 이후, 앞서와 같은 화면을 볼 수 있다면, ssl module 역시 정상적으로 작동하는 것이다.

이제 모든 것을 마쳤다. 여러 가지 설정을 자신이 원하는 대로 조정하고 잘 사용하면 될 것이다. 이 문서에 부족한 부분이 있다면, 역시 원하는 대로 추가/ 삭제/ 수정해서 재배포할 수 있다.

이 문서의 다음 버전에서는 MySQL 테스트와, PHP + MySQL 연동 테스트 정도를 추가하고자 한다.

Share on Facebook Share on X

◀ PREVIOUS
메일(mail)이 보내지는건 되는데, 안받아져요
▶ NEXT
apache+php에 oracle연동하기
  Comments 0
Login for comment
OTHER POSTS IN THE SAME CATEGORY

window 스스로 닫기 (created at 2006-10-10)

이미지를 지정된 비율로 자르기 (crop) (created at 2006-10-10)

JavaScript로 만든 달력(popup 객체사용) (created at 2006-10-10)

AJAX 컨트롤 많이 있겠지만, Form 메소드 형태로 (created at 2006-10-10)

모니터 끄는 API (created at 2006-09-29)

telnet 접속이 내부는 되는데 외부는 안되는 경우 (created at 2006-09-29)

PHP3를 사용하려면 (created at 2006-09-29)

가상 호스트(Virtaul Host)를 꾸미려면... (created at 2006-09-29)

포트 변경하는 법 (created at 2006-09-29)

개인 계정에 대한 쿼터 설정 방법 (created at 2006-09-29)

메일서버 세팅하기 (created at 2006-09-29)

pop3 제대로 되는지 테스트 하는 방법 (created at 2006-09-29)

메일을 보내면 릴레이를 거부하는데? (created at 2006-09-29)

firewall setting / host deny (created at 2006-09-29)

apache+php에 oracle연동하기 (created at 2006-09-29)

메일(mail)이 보내지는건 되는데, 안받아져요 (created at 2006-09-29)

WOWLINUX에서 POP3 구동시키기 (created at 2006-09-29)

dante ~ free sock v4/v5 server for linux (created at 2006-09-29)

IP 및 GATEWAY 설정 변경 방법 (created at 2006-09-29)

외부에서 PING 안되게 막기 (created at 2006-09-29)

SoBig.Worm Virus 퇴치 방법 (created at 2006-09-29)

WOWLINUX 7.3 Paran R2 - HDD Quota 설정 (created at 2006-09-29)

IE 쿠키 세팅하는 방법 (created at 2006-09-29)

메일 수신은 되는데 발신은 안될경우 (created at 2006-09-29)

터미널에서 한글이 안나오고 입력도 안되는 문제 해결 (created at 2006-09-29)

cgi File Downloading Module (created at 2006-09-29)

매크로로 라이브러리 링크하는 방법 (created at 2006-09-29)

AES (Advanced Encryption Standard) Source Code (created at 2006-09-29)

Check Function - Is NT/2000/XP ? (created at 2006-09-29)

Simple Socket Server based on C (created at 2006-09-29)

UPDATES

글루코사민 vs. 콘드로이친: 무엇이 더 나은 관절 건강 보조제일까? (created at 2024-04-22)

광주 5·18 민주화운동 알린 테리 앤더슨 前 AP 기자 (created at 2024-04-22)

햄과 소세지가 우리 몸에 일으키는 부작용 (updated at 2024-04-22)

콘드로이친의 염증 감소효과 (updated at 2024-04-22)

코사민 DS - 글루코사민+콘드로이친 복합물이 함유된 퇴행성 관절 건강보조제 (updated at 2024-04-22)

삼겹살 먹을때 환상조합 (created at 2024-04-22)

일본 여중생의 특이한 취향 (created at 2024-04-22)

우리가 먹는 약물이 바꿔버린 생태계 (created at 2024-04-21)

일본에서 그린 상상속의 사무직과 현실속의 사무직 (updated at 2024-04-21)

북한 미대생들이 그린 북한 최고존엄 김정은 (created at 2024-04-21)

입사 후 1년도 되지 않은 회사에서 구조조정에 의한 퇴직 불응에 따른 해고 처리시 대응 가능한 방법 (updated at 2024-04-20)

한고은님의 옛날 사진 (updated at 2024-04-20)

소녀대 - Bye Bye Girl (updated at 2024-04-13)

대한민국 날씨 근황 (created at 2024-04-13)

성일종 인재육성 강조하며 이토 히로부미 언급 - 인재 키운 선례? (updated at 2024-04-13)

일제강점기가 더 살기 좋았을지도 모른다는 조수연 국민의힘 후보 - 친일파? (updated at 2024-04-13)

Marshall Ha님의 샤오미 SU7 시승기 - 테슬라의 일론 머스크님이 긴장할만한 느낌 (updated at 2024-04-09)

윙크하는 귀염둥이 반려견들 (created at 2024-04-08)

달콤 살벌한 고백 (created at 2024-04-08)

북한 최정예 공수부대 훈련 모습 (updated at 2024-04-02)

맛있었던 친구 어머니의 주먹밥이 먹고 싶어요 (created at 2024-04-02)

자리 마음에 안든다고 6급 공무원 패는 농협 조합장 (created at 2024-03-26)

85세 딸 짜장면 사주는 102세 어머니 (created at 2024-03-26)

1990년대 감각파 도둑 (created at 2024-03-26)

치매에 걸린 69살의 브루스 윌리스가 전부인 데미무어를 보고 한 말 (updated at 2024-03-22)

경제는 대통령이 살리는 것이 아닙니다 라던 윤석열대통령 - 상황 안좋아지자 여러 전략을 펼쳤지만, 부작용 속출했던 2024년의 봄 (updated at 2024-03-13)

극빈의 생활을 하고 배운것이 없는 사람은 자유가 뭔지도 모를 뿐 아니라 왜 개인에게 필요한지에 대한 필요성을 못느낀다는 윤석열 대통령 (updated at 2024-03-08)

조선일보를 안본다는 사람들이 말하는 그 이유 - 천황폐하, 전두환 각하, 김일성 장군 만세? (created at 2024-03-07)

광폭타이어를 장착하면 성능이 좋아질거라는 착각 (updated at 2024-03-03)

면허시험장에서 면허갱신하면 하루만에 끝나나? (updated at 2024-03-03)