웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (2 of 4)
2002.12.18 15:41
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (2 of 4)
ChangeLog : 본 문서는 리눅서들이 작성해놓은 문서를 종합하여 저의 개인적인 소견과
같이 기술하였습니다. 잘못된 내용은 메일이나 본 문서에 흔적을 남겨주세요.
자세히 주석을 달아놓은 이유는 외부적으로 저에게 가끔식 질문하시는분들의 질문들이 매뉴얼의 명령어만 복사해 넣다보니 시스템 환경과 맞지않아 발생하는 문제들이 더군요. 그래서
완벽한 이해를 도모하고자 주석을 달아보았습니다.
본문서를 이용한 컴파일 및 서버업그레이드시 발생하는 문제는 책임지지 않습니다.
이번장에서는 mysql 에 이어 apache 와 php 를 깔아보도록 한다. 성공해보자
2. Apache 설치
PHP 와 apache를 설치할때는 서로 오가며 컴파일 해야한다. 즉 아파치를 configure 만 시켜놓고 PHP를 컴파일한후 Apache를 마저 컴파일 한다는 이야기다.
백문이 불여일견 바로 실행해보자
make 하기전의 설정들을 구성하는 단계이다. PHP를 컴파일 하기전에 아파치를 configure 까지만 시켜놓도록 하자.
[root@localhost apache_1.3.24]# ./configure
Configuring for Apache, Version 1.3.24
+ Warning: Configuring Apache with default settings.
+ This is probably not what you really want.
+ Please read the README.configure and INSTALL files
+ first or at least run './configure --help' for
+ a compact summary of available options.
+ using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Creating Makefile in src
+ configured for Linux platform
+ setting C compiler to gcc
+ setting C pre-processor to gcc -E
+ checking for system header files
+ adding selected modules
+ using system Expat
+ checking sizeof various data types
+ doing sanity check on compiler and options
Creating Makefile in src/support
Creating Makefile in src/regex
Creating Makefile in src/os/unix
Creating Makefile in src/ap
Creating Makefile in src/main
Creating Makefile in src/modules/standard
[root@localhost apache_1.3.24]#
완료되었다. 이제 PHP를 컴파일할 차례이다. PHP 도 마찬가지로 configure -> make -> make install 의 순서를 거친다. configure 는 make를 할때의 환경변수를 설정하는 단계이고 make 는 컴파일. 컴파일은 소스코드를 실행가능한 코드로 만드는 작업이다. make install 은 실행가능한 코드를 prefix에서 지정한 디렉토리로 옮기는 작업이다. 즉 실질적인 인스톨 작업이라 할수 있다. 다음의 명령어를 입력한다.
php>./configure
--prefix=/usr/local/php
--enable-ftp
--enable-magic-quotes
--enable-sockets
--with-mysql=/usr/local/mysql
--with-apache=../apache_1.3.24
--with-gd
--with-freetype
--with-language=korean
--with-config-file-path=/usr/local/apache/conf
--with-charset=euc_kr
--enable-shmop
--with-track-debug
--with-zlib
--enable-track-vars
--enable-magic-quotes
--enable-ftp
--enable-memory-limit
php># make; make install
여기서 가 의미하는 것은 무엇인가? 그것은 한화면을 족히 넘어가는 긴 명령어를 잘라서 입력하는 것이다. 너무 길면 명령어가 겹치거나 깨질분더러 오타가날 위험이 많기 때문이다.
사용법은 만약 100자정도의 명령어가 있다고 치면
# abcdefghijklmnopqrstuvwxyzasdmaslgfknasddgsdgsdgsdgsdg
이것이 한 화면을 넘는다고 가정하자. 그러면 분명히 한화면이 넘는공간서부터 글씨들이 서로 겹치게되어 보기흉한 상태로 된다. 그렇다면 어떻게 해야하나
# abcdefghij 여기까지만 입력하고 를 친다. 그리고 엔터를치면
[root@localhost php-4.2.3]# abcdefghij
>
이와 같은 상태가 된다. 그러면 컴퓨터는 >다음부터의 명령어를 전의 명령어와 결부시켜 생각한다. 고로 우리가 보기엔 분리된 명령어같지만 하나로 해석한다는 것이다. 주의할점은 띄어쓰기를 인식한다는 것이다.
# abcdefghij 와 # abcdefghij 는 엄연히 틀리다. 가끔가다 이런 실수 때문에 오류를 초래하는 경우가 있다.
잡설이 긴것같다. 위에 언급한 옵션들과함께 configure를 수행하자
그다음에는 역시 make 와 make install 을 수행한다
# make ; make install
Installing Schedule/At.php
Installing header files
Installing build environment
Installing program: phpize
Installing program: php-config
Installing program: pear
Installing program: pearize
Installing program: phptar
Installing program: phpextdist
make[2]: Leaving directory `/usr/src/php-4.2.3/pear'
make[1]: Leaving directory `/usr/src/php-4.2.3/pear'
[root@localhost php-4.2.3]#
이런식으로 컴파일을 마무리 짓는다. 자 이제는 아파치를 설치할 차례이다.
조금 복잡할수도 있다. 인터넷의 꽃 웹서비스를 담당하는 만큼 신중을 기해서
컴파일 해보도록 하자.
apache># ./configure
--prefix=/usr/local/apache
--activate-module=src/modules/php4/libphp4.a
--enable-rule=SHARED_CORE
--enable-module=so
--enable-shared=max
apache># make; make install
위 명령어를 알아보면 configure 는 이미 수차례 언급했기때문에 언급하지 않도록
하고, prefix 역시..
activate-module 옵션은 무엇인가? 그것은 php4 를 모듈화하여 아파치에 붙인다고
알려주는 것이다. 아까 php 를 먼저 컴파일하고 그전에는 아파치를 컨피그레이션
한것은 이것을 위한 것이다. 저 파일은 실제로 존재하지는 않는다. 그러나
필자도 아직 저파일이 어떤 의미를 지니고있는지는 확신할수 없다. (정확히 알고있지
못하다는 말이다)
그다음에.. --enable-module=so 는 DSO 방식 즉 언제고 모듈을 탈부착 할수
있도록 하는 것이다. 간단히 동적방식이라고 한다. 정적방식은 모듈을 탈부착하려면
재 컴파일 과정을 거친다. 하지만 DSO 의 경우 간단히 모듈을 탈부착할수 있는
장점이있다. 물론 정적컴파일보다는 약간의 퍼포먼스 저하가 있다. 문제될만한
수준은 아니기때문에 대부분의 유저들이 DSO 방식으로 컴파일한다.
--enable-shared=max 는 DSO 로 모든 모듈을 부착한다는 이야기이다 .즉
src/modules 안에있는 모든 모듈들을 부착한다는 이야기이다. 나중에 띨망정
처음부터 붙여놓는것이 더 낳을수도있다. 어느게 필요하고 어느게 필요없는지 아직은
확실히 모르기때문이다.
그러면 위 명령어를 예쁘게입력하도록 하자.
컴파일이 완료되면 php.ini 를 생성해야한다. 다음 명령어를 적당히 수정하여 입력
한다.
# cp <php 의 소스디렉토리>/php.ini-dist /usr/local/apache/conf/php.ini
cp 는 파일을 복사하는 명령어이다. php 의 소스디렉토리는 필자의 글대로 따라했을
경우 /usr/src/php-ver-name 이 된다. 여기서 -ver-name 은 버전이다.
이 글이 작성되었을때보다 미래에는 더 새로운 버전이 나올수 있기에 이와같이
기술하였다.
그리고 php 를 설치완료했을때 다음과같은 화려한 문구를 보셨는지?
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
| *** NOTE *** |
| The default for register_globals is now OFF! |
| |
| If your application relies on register_globals being ON, you |
| should explicitly set it to on in your php.ini file. |
| Note that you are strongly encouraged to read |
| http://www.php.net/manual/en/security.registerglobals.php |
| about the implications of having register_globals set to on, and |
| avoid using it if possible. |
+--------------------------------------------------------------------+
이것은 form 값이 넘어올때 post 로 넘어오느냐 get 으로 넘어오느냐에 대한 정보를
가지고있는 인수값이다. 필자가 php 공부를 조금 했을때 이것때문에 애먹은 적이있다. 기본값은 Off 이나, On 으로 해주는것이 호환성에 좋다. 어느 게시판 프로그램은
get 을 쓸수도있고 post 를 쓸수도있으므로..
# vi /usr/local/apache/conf/php.ini 에서 register_globals 부분을 On 으로 변경하고 저장하도록 한다.
저장명령은 :wq 이다.
# vi /usr/local/apache/conf/httpd.conf
httpd.conf 를 편집한다.
300 번째줄의 다음내용을 수정한다. (300번줄이 아니면 그 부근이다)
ServerAdmin root@localhost.localdomain
를 자신의 메일주소로 수정하도록 한다.
817 줄 부근에 다음의 내용을 복사하여 추가한다. 빨간글씨.
#
# AddType allows you to tweak mime.types without actually editing it, or to
# make certain files to be certain types.
#
AddType application/x-tar .tgz
AddType appliation/x-httpd-php .php .php3 .php4 .PHP .html .htm .inc
AddType text/htm .shtml
AddHandler Server-parse .shtml
318 줄 부근에 다음과 같이 되어있을 것이다.
# machine always knows itself by this address. If you use Apache strictly for
# local testing and development, you may use 127.0.0.1 as the server name.
#
#ServerName localhost.localdomain
이부분의 ServerName 의 주석을 풀어주고 localhost.localdomain 대신에
아이피주소를 입력한다. 유동일 경우에는 일단 아이피 주소를 입력하고 나중에
유동아이피 DNS 서비스를 받아서 그 도메인을 입력하도록 한다.
모든사항을 수정했으면 :wq 로 저장하고 빠져나간다.
그리고
# cd ..
# cd bin
bin> ./apachectl start
한단계 하위디렉토리의 bin 으로 가서 apachectl start 라고 명령을내린다
apachectl 은 start stop restart 등의 인수로서 httpd 데몬을 안전하고 쉽게
띄우고 내릴수있도록 작성된 스크립트이다.
lynx 나 Mozilla 혹은 Netscape , M$ Explorer 등으로 접속해본다
http://xxx.xxx.xxx.xxx
와 같은 형식이다. 만약 끝에 / 를 붙여야만 접속이 가능하다면 ServerName 에
아이피 주소를 입력했는지 확인해본다. 그래도 안된다면.. 잘 조사해보는수밖에..
일단 여기까지 성공했다면 90% 는 성공한것이다. 화이팅!
ChangeLog : 본 문서는 리눅서들이 작성해놓은 문서를 종합하여 저의 개인적인 소견과
같이 기술하였습니다. 잘못된 내용은 메일이나 본 문서에 흔적을 남겨주세요.
자세히 주석을 달아놓은 이유는 외부적으로 저에게 가끔식 질문하시는분들의 질문들이 매뉴얼의 명령어만 복사해 넣다보니 시스템 환경과 맞지않아 발생하는 문제들이 더군요. 그래서
완벽한 이해를 도모하고자 주석을 달아보았습니다.
본문서를 이용한 컴파일 및 서버업그레이드시 발생하는 문제는 책임지지 않습니다.
이번장에서는 mysql 에 이어 apache 와 php 를 깔아보도록 한다. 성공해보자
2. Apache 설치
PHP 와 apache를 설치할때는 서로 오가며 컴파일 해야한다. 즉 아파치를 configure 만 시켜놓고 PHP를 컴파일한후 Apache를 마저 컴파일 한다는 이야기다.
백문이 불여일견 바로 실행해보자
make 하기전의 설정들을 구성하는 단계이다. PHP를 컴파일 하기전에 아파치를 configure 까지만 시켜놓도록 하자.
[root@localhost apache_1.3.24]# ./configure
Configuring for Apache, Version 1.3.24
+ Warning: Configuring Apache with default settings.
+ This is probably not what you really want.
+ Please read the README.configure and INSTALL files
+ first or at least run './configure --help' for
+ a compact summary of available options.
+ using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Creating Makefile in src
+ configured for Linux platform
+ setting C compiler to gcc
+ setting C pre-processor to gcc -E
+ checking for system header files
+ adding selected modules
+ using system Expat
+ checking sizeof various data types
+ doing sanity check on compiler and options
Creating Makefile in src/support
Creating Makefile in src/regex
Creating Makefile in src/os/unix
Creating Makefile in src/ap
Creating Makefile in src/main
Creating Makefile in src/modules/standard
[root@localhost apache_1.3.24]#
완료되었다. 이제 PHP를 컴파일할 차례이다. PHP 도 마찬가지로 configure -> make -> make install 의 순서를 거친다. configure 는 make를 할때의 환경변수를 설정하는 단계이고 make 는 컴파일. 컴파일은 소스코드를 실행가능한 코드로 만드는 작업이다. make install 은 실행가능한 코드를 prefix에서 지정한 디렉토리로 옮기는 작업이다. 즉 실질적인 인스톨 작업이라 할수 있다. 다음의 명령어를 입력한다.
php>./configure
--prefix=/usr/local/php
--enable-ftp
--enable-magic-quotes
--enable-sockets
--with-mysql=/usr/local/mysql
--with-apache=../apache_1.3.24
--with-gd
--with-freetype
--with-language=korean
--with-config-file-path=/usr/local/apache/conf
--with-charset=euc_kr
--enable-shmop
--with-track-debug
--with-zlib
--enable-track-vars
--enable-magic-quotes
--enable-ftp
--enable-memory-limit
php># make; make install
여기서 가 의미하는 것은 무엇인가? 그것은 한화면을 족히 넘어가는 긴 명령어를 잘라서 입력하는 것이다. 너무 길면 명령어가 겹치거나 깨질분더러 오타가날 위험이 많기 때문이다.
사용법은 만약 100자정도의 명령어가 있다고 치면
# abcdefghijklmnopqrstuvwxyzasdmaslgfknasddgsdgsdgsdgsdg
이것이 한 화면을 넘는다고 가정하자. 그러면 분명히 한화면이 넘는공간서부터 글씨들이 서로 겹치게되어 보기흉한 상태로 된다. 그렇다면 어떻게 해야하나
# abcdefghij 여기까지만 입력하고 를 친다. 그리고 엔터를치면
[root@localhost php-4.2.3]# abcdefghij
>
이와 같은 상태가 된다. 그러면 컴퓨터는 >다음부터의 명령어를 전의 명령어와 결부시켜 생각한다. 고로 우리가 보기엔 분리된 명령어같지만 하나로 해석한다는 것이다. 주의할점은 띄어쓰기를 인식한다는 것이다.
# abcdefghij 와 # abcdefghij 는 엄연히 틀리다. 가끔가다 이런 실수 때문에 오류를 초래하는 경우가 있다.
잡설이 긴것같다. 위에 언급한 옵션들과함께 configure를 수행하자
그다음에는 역시 make 와 make install 을 수행한다
# make ; make install
Installing Schedule/At.php
Installing header files
Installing build environment
Installing program: phpize
Installing program: php-config
Installing program: pear
Installing program: pearize
Installing program: phptar
Installing program: phpextdist
make[2]: Leaving directory `/usr/src/php-4.2.3/pear'
make[1]: Leaving directory `/usr/src/php-4.2.3/pear'
[root@localhost php-4.2.3]#
이런식으로 컴파일을 마무리 짓는다. 자 이제는 아파치를 설치할 차례이다.
조금 복잡할수도 있다. 인터넷의 꽃 웹서비스를 담당하는 만큼 신중을 기해서
컴파일 해보도록 하자.
apache># ./configure
--prefix=/usr/local/apache
--activate-module=src/modules/php4/libphp4.a
--enable-rule=SHARED_CORE
--enable-module=so
--enable-shared=max
apache># make; make install
위 명령어를 알아보면 configure 는 이미 수차례 언급했기때문에 언급하지 않도록
하고, prefix 역시..
activate-module 옵션은 무엇인가? 그것은 php4 를 모듈화하여 아파치에 붙인다고
알려주는 것이다. 아까 php 를 먼저 컴파일하고 그전에는 아파치를 컨피그레이션
한것은 이것을 위한 것이다. 저 파일은 실제로 존재하지는 않는다. 그러나
필자도 아직 저파일이 어떤 의미를 지니고있는지는 확신할수 없다. (정확히 알고있지
못하다는 말이다)
그다음에.. --enable-module=so 는 DSO 방식 즉 언제고 모듈을 탈부착 할수
있도록 하는 것이다. 간단히 동적방식이라고 한다. 정적방식은 모듈을 탈부착하려면
재 컴파일 과정을 거친다. 하지만 DSO 의 경우 간단히 모듈을 탈부착할수 있는
장점이있다. 물론 정적컴파일보다는 약간의 퍼포먼스 저하가 있다. 문제될만한
수준은 아니기때문에 대부분의 유저들이 DSO 방식으로 컴파일한다.
--enable-shared=max 는 DSO 로 모든 모듈을 부착한다는 이야기이다 .즉
src/modules 안에있는 모든 모듈들을 부착한다는 이야기이다. 나중에 띨망정
처음부터 붙여놓는것이 더 낳을수도있다. 어느게 필요하고 어느게 필요없는지 아직은
확실히 모르기때문이다.
그러면 위 명령어를 예쁘게입력하도록 하자.
컴파일이 완료되면 php.ini 를 생성해야한다. 다음 명령어를 적당히 수정하여 입력
한다.
# cp <php 의 소스디렉토리>/php.ini-dist /usr/local/apache/conf/php.ini
cp 는 파일을 복사하는 명령어이다. php 의 소스디렉토리는 필자의 글대로 따라했을
경우 /usr/src/php-ver-name 이 된다. 여기서 -ver-name 은 버전이다.
이 글이 작성되었을때보다 미래에는 더 새로운 버전이 나올수 있기에 이와같이
기술하였다.
그리고 php 를 설치완료했을때 다음과같은 화려한 문구를 보셨는지?
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
| *** NOTE *** |
| The default for register_globals is now OFF! |
| |
| If your application relies on register_globals being ON, you |
| should explicitly set it to on in your php.ini file. |
| Note that you are strongly encouraged to read |
| http://www.php.net/manual/en/security.registerglobals.php |
| about the implications of having register_globals set to on, and |
| avoid using it if possible. |
+--------------------------------------------------------------------+
이것은 form 값이 넘어올때 post 로 넘어오느냐 get 으로 넘어오느냐에 대한 정보를
가지고있는 인수값이다. 필자가 php 공부를 조금 했을때 이것때문에 애먹은 적이있다. 기본값은 Off 이나, On 으로 해주는것이 호환성에 좋다. 어느 게시판 프로그램은
get 을 쓸수도있고 post 를 쓸수도있으므로..
# vi /usr/local/apache/conf/php.ini 에서 register_globals 부분을 On 으로 변경하고 저장하도록 한다.
저장명령은 :wq 이다.
# vi /usr/local/apache/conf/httpd.conf
httpd.conf 를 편집한다.
300 번째줄의 다음내용을 수정한다. (300번줄이 아니면 그 부근이다)
ServerAdmin root@localhost.localdomain
를 자신의 메일주소로 수정하도록 한다.
817 줄 부근에 다음의 내용을 복사하여 추가한다. 빨간글씨.
#
# AddType allows you to tweak mime.types without actually editing it, or to
# make certain files to be certain types.
#
AddType application/x-tar .tgz
AddType appliation/x-httpd-php .php .php3 .php4 .PHP .html .htm .inc
AddType text/htm .shtml
AddHandler Server-parse .shtml
318 줄 부근에 다음과 같이 되어있을 것이다.
# machine always knows itself by this address. If you use Apache strictly for
# local testing and development, you may use 127.0.0.1 as the server name.
#
#ServerName localhost.localdomain
이부분의 ServerName 의 주석을 풀어주고 localhost.localdomain 대신에
아이피주소를 입력한다. 유동일 경우에는 일단 아이피 주소를 입력하고 나중에
유동아이피 DNS 서비스를 받아서 그 도메인을 입력하도록 한다.
모든사항을 수정했으면 :wq 로 저장하고 빠져나간다.
그리고
# cd ..
# cd bin
bin> ./apachectl start
한단계 하위디렉토리의 bin 으로 가서 apachectl start 라고 명령을내린다
apachectl 은 start stop restart 등의 인수로서 httpd 데몬을 안전하고 쉽게
띄우고 내릴수있도록 작성된 스크립트이다.
lynx 나 Mozilla 혹은 Netscape , M$ Explorer 등으로 접속해본다
http://xxx.xxx.xxx.xxx
와 같은 형식이다. 만약 끝에 / 를 붙여야만 접속이 가능하다면 ServerName 에
아이피 주소를 입력했는지 확인해본다. 그래도 안된다면.. 잘 조사해보는수밖에..
일단 여기까지 성공했다면 90% 는 성공한것이다. 화이팅!
댓글 4
-
-=:{Inuri}:=-
2002.12.19 00:30
착각했네요..MySQL이 바로 전글에있었던거 몰랐음.. -
Dopesoul
2002.12.19 16:21
제대로 컴파일되도 libphp4.a 라는 파일은 존재하지 않습니다.
직접 확인해보시지요. KLDP 에서 본 문서에서도 그렇게 나와있던데요 -
판도라의상자
2002.12.22 13:52
초보자 들을 위해서.. php 컴파일시 ./configure 옵션들이 많이 들어간거 같은데요.. 그것들이 어떤 역할을 하는것인지 설명을 덫붙여 주시면.. 좋을듯한데요.
제가 초보라서.. ^^ 설명 부탁드려요~ -
FriZeX*-_-*
2003.01.08 05:47
오타있네요^^;;
AddType appliation/x-httpd-php .php .php3 .php4 .PHP .html .htm .inc
어플리케이션에서 C가 빠지었네요;;