php 언어에는 여러 함수를 지원합니다. php설치시 라이브러리를 설치해 주어야 작동하는 함수들이 많습니다. 모든 라이브러리를 설치하는 것은 무리가 있다고 생각하며, gd라이브러리는 기본적으로 설치해 주어야 한다고 생각해서, 연관있는 위 프로그램들을 설치하도록 하겠습니다. 물론 제가 썼던 설치강좌대로 설치하셨다면, 위 라이브러리들은 모두 설치되어 있을 것입니다. 하지만, gd라이브러리와 연동이 안된 상태이며, php 연동시 문제를 일으키기 때문에 컴파일 설치하도록 하겠습니다. rpm 설치된 것들은 그대로 놔 두셔도 상관없으니 놔두고 설치하겠습니다.
(1) zlib 설치 : zlib은 압축과 관련된 라이브러리 입니다.
[root@localhost local]# cd /usr/local
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/zlib-1.1.4.tar.gz
[root@localhost local]# tar xvfz zlib-1.1.4.tar.gz
[root@localhost local]# cd zlib-1.1.4
[root@localhost zlib-1.1.4]# ./configure && make && make install
[root@localhost zlib-1.1.4]# cd ..
[root@localhost local]# rm -rf zlib-1.1.4*
wget 명령어를 이용해서 ftp 사이트에서 압축된 소스파일을 가져오고 난 뒤에 압축을 해제합니다.
풀어진 디렉토리로 이동하여 configure와 컴파일과 설치를 한꺼번에 명령을 내여 설치합니다.
여기서 && 표시는 configure 가 성공하면 make를 실행하고 make 가 성공하면, make install를 실행하는 의미입니다.
마지막에 압축파일과 풀어진 소스파일은 필요없기 때문에 삭제합니다.
앞으로 설치할 모든 프로그램도 위와 같이 간단하게 설치할 것입니다.
(2) libpng 설치 : png 포맷을 다루기 위한 라이브러리입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/libpng-1.2.5.tar.gz
[root@localhost local]# tar xvfz libpng-1.2.5.tar.gz
[root@localhost local]# cd libpng-1.2.5
[root@localhost libpng-1.2.5]# cp scripts/makefile.linux makefile
[root@localhost libpng-1.2.5]# make test && make install
[root@localhost libpng-1.2.5]# cd ..
[root@localhost local]# rm -rf libpng-1.2.5*
특별한 것은 makefile을 configure로 만들지 않고 , 복사한 것 외에는 다른 것이 없습니다.
(3) freetype 2 설치 : 글짜를 그릴 때 쓰는 라이브러리 입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/freetype-2.1.5.tar.gz
[root@localhost local]# tar xvfz freetype-2.1.5.tar.gz
[root@localhost local]# cd freetype-2.1.5
[root@localhost freetype-2.1.5]# ./configure && make && make install
[root@localhost freetype-2.1.5]# cd ..
[root@localhost local]# rm -rf freetype-2.1.5*
(4) libjpeg 설치 : jpg 포맷을 다루는 라이브러리 입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/jpegsrc.v6b.tar.gz
[root@localhost local]# tar xvfz jpegsrc.v6b.tar.gz
[root@localhost local]# cd jpeg-6b
[root@localhost jpeg-6b]# ./configure --enable-shared --enable-static
[root@localhost jpeg-6b]# make && make test
[root@localhost jpeg-6b]# mkdir /usr/local/man/man1
[root@localhost jpeg-6b]# make install
[root@localhost jpeg-6b]# cd ..
[root@localhost local]# rm -rf jpeg*
위 설치법에서 특별한 것은 중간에 /usr/local/man/man1이라는 디렉토리를 생성합니다. 이유는 make install 하면 /usr/local/man/man1 디렉토리가 없다고 멘 페이지가 설치가 되지 않는다는 에러가 납니다.
(5) gd 설치 : 그래픽 라이브러리 입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/gd-2.0.15.tar.gz
[root@localhost local]# tar xvfz gd-2.0.15.tar.gz
[root@localhost local]# cd gd-2.0.15
[root@localhost gd-2.0.15]# ./configure && make && make install
[root@localhost gd-2.0.15]# cd ..
[root@localhost local]# rm -rf gd-2.0.15*
2. MySQL 설치
지금부터는 db 서버를 설치하겠습니다. mysql은 많은 프로그램과 연동이 가능하며, linux에서 유용하게 사용할 수 있는 dbms입니다. 아직 안정화된 버전에는 dbms의 중요 기능인 트랜젝션 처리 및 사용자정의 함수 등 부족한 점이 있지만 ( 이 부분은 db의 기능보다는 성능과 가볍게 만든다고 뺏다고 하더군요^^) 대부분 잘~~ 사용하지 않는 기능들입니다. mysql은 안정성 및 성능면에서 우수하죠^^;
(1) 설치 : 설치는 성능을 약 10% 정도 끌어올려준다는 static 모드로 설치하겠습니다.
(9) 운영중에 조치법 - mysql root 비밀번호 잊어 먹었을 때
[root@localhost local]# killall mysqld
[root@localhost local]# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
[root@localhost local]# mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2 to server version: 4.0.20-log
Type \'help;\' or \'h\' for help. Type \'c\' to clear the buffer.
mysql> use mysql
Database changed
mysql> update user set password=password(\'비밀번호\') where user=\'root\';
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2 Changed: 2 Warnings: 0
4.0.X 에선 4.1.X 는 많은 변화들이 있습니다. 모두 기술하기는 힘들고, 중효한 몇가지만 기술하도록 하겠습니다.
1. mysql 4.1의 table 이름은 utf8으로 저장(한글 테이블명을 사용할수 없습니다.)
2. mysql db 에 user 테이블의 password 필드가 더 길어졌습니다.(16->41)
3. password 다루는 방식이 달라졌습니다. 보안을 강하게 하기 위해서 hashing 메커니즘이 바뀌었습니다.
- hashing 이 16바이트에서 41바이트바뀌었습니다. 보이는건 45바이트. 4바이트는? 소금^^;
- 새로운 포멧은 *부터 시작. 예전포멧은 그렇지 않았습니다.
- 예전 포멧을 사용하려면, old_password()함수를 사용해야 합니다.
4. configure 할때 --with-charset=euc_kr 에서 --with-charset=euckr 으로 바뀌었습니다.
*. 더 자세한 것은. ... http://dev.mysql.com/doc/mysql/en/Upgrading-from-4.0.html 참조하세요
3. Apache 2 설치
web 서버인 apache 는 1 버전과 2버전이 있습니다. 설정 파일 이 다르고, 운영또한 다른 방법으로 돌아가기 때문에 설치 시에도 구분하여 설치해 주는 것이 좋습니다. 아파치 2 버전은 스레드를 사용하여 성능이 좋아졌다더군요.. apache 1버전을 사용하는 경우는 mod_throttle을 설치하기 위한 경우가 있죠^^; 본 강좌에서는 최신 버전을 다루기 때문에 2 버전을 설치합니다.
(1) 설치
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/apache/httpd-2.0.49.tar.gz
[root@localhost local]# tar xvfz httpd-2.0.49.tar.gz
[root@localhost local]# cd httpd-2.0.49
** MaxClient 값 튜닝( 최대 256이지만 이상으로 올려줍니다== > 1280)
server/mpm/prefork/prefork.c 파일에서
#define DEFAULT_SERVER_LIMIT 256 부분을 찾아서
#define DEFAULT_SERVER_LIMIT 1280 으로 수정해 줍니다.
[root@localhost httpd-2.0.49]# ./configure --enable-so --prefix=/usr/local/apache
[root@localhost httpd-2.0.49]# make && make install
[root@localhost httpd-2.0.49]# cd ..
[root@localhost local]# rm -rf httpd-2.0.49.tar.gz
4. PHP 4 설치
현재 안정화된 최신버전이 4점대 버전입니다. php를 컴파일해서 apache 에 모듈로 올릴 것 입니다.
(1) 설치
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/php/php-4.3.6.tar.gz
[root@localhost local]# tar xvfz php-4.3.6.tar.gz
[root@localhost local]# cd php-4.3.6
-- imap 라이브러리를 쓰기 위해서 패키지 설치
[root@localhost php-4.3.6]# wget
http://ftp.superuser.co.kr/pub/redhat/9/RPMS/imap-devel-2001a-18.i386.rpm
--16:32:18-- http://ftp.superuser.co.kr/pub/redhat/9/RPMS/imap-devel-2001a-18.i386.rpm
=> `imap-devel-2001a-18.i386.rpm\'
Resolving ftp.superuser.co.kr... 완료.
Connecting to ftp.superuser.co.kr[210.114.223.221]:80... connected.
HTTP 요청을 보냅니다, 서버로부터의 응답을 기다림...200 OK
길이: 747,197 [audio/x-pn-realaudio-plugin]
100%[=========================================================>] 747,197 408.79K/s ETA 00:00
16:32:20 (408.79 KB/s) - `imap-devel-2001a-18.i386.rpm\'가 보존되었습니다 [747197/747197]
[root@localhost php-4.3.6]# rpm -Uvh imap-devel-2001a-18.i386.rpm
경고: imap-devel-2001a-18.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
준비 중... ########################################### [100%]
1:imap-devel ########################################### [100%]
[root@localhost php-4.3.6]# rm -rf imap-devel-2001a-18.i386.rpm
[root@localhost php-4.3.6]# cp php.ini-dist /usr/local/lib/php.ini
- php.ini 파일을 복사 해 줍니다.
[root@localhost php-4.3.6]# cd ..
[root@localhost local]# rm -rf php-4.3.6.tar.gz
5. Zend Optimizer
php의 성능을 최대화 해 준다는 Zend Optimizer를 설치합니다. Zend 홈페이지에 가보면 성능을 40% 향상시킨다고 합니다. ^^; 검증은 못했지만 말이죠~~ Zend는 컴파일 할 필요없이 받아서 설치하면 됩니다.^^;
(1) 설치
[root@localhost local]# wget
http://ftp.superuser.co.kr/pub/ZendOptimizer/ZendOptimizer-2.5.2-Linux_glibc21-i386.tar.gz
[root@localhost local]# tar xvfz ZendOptimizer-2.5.2-Linux_glibc21-i386.tar.gz
[root@localhost local]# cd ZendOptimizer-2.5.2-Linux_glibc21-i386
[root@localhost ZendOptimizer-2.5.2-Linux_glibc21-i386]# ./install.sh
- 위 명령을 실행시키면 다음과 같은 화면들이 주루룩~~ 나옵니다. 무조건 OK~ 또는 YES~^&^
하면 끝납니다.&&;
[root@localhost ZendOptimizer-2.5.2-Linux_glibc21-i386]# cd ..
[root@localhost local]# rm -rf ZendOptimizer-2.5.2-Linux_glibc21-i386*
6. 웹 서버 운영
(1) 아파치 설정파일(/usr/local/apache/conf/httpd.conf) 다루기
아파치 설정파일을 다룹니다. 변경후에는 꼭 아파치를 재시작하시기 바랍니다.
- .php 파일 및 html 파일에서 php 코드 실행되게 설정하려면
AddType application/x-httpd-php .php .phtml .php3 .html .htm
AddType application/x-httpd-php-source .phps
위 내용을 추가해 줍니다. 추가 하게 되면 위 파일들에 있는 php 코드는 실행하게 됩니다.
- 기본 언어 설정
AddDefaultCharset ISO-8859-1 이렇게 되었는 것을
AddDefaultCharset EUC-KR 이렇게 바꾸업 줍니다. (mysql 언어와 똑같이 해 줍니다.)
- index.php를 기본으로 실행하게 설정
아파치는 기본적으로 DirectoryIndex index.html index.html.var 이렇게 설정 되어 있어 index.html 파일을 기본으로 읽습니다. 조금 바꾸어 주어 index.php 파일 및 기타 파일들도 기본으로 읽게 설정합니다.
DirectoryIndex index.html index.htm index.php index.php3 index.cgi
- 그림 파일 및 프래쉬 파일 로그 남기지 않게 설정
방문자 수가 많아지면 웹로그가 엄청 쌓이게 되고, 그 로그는 크기가 2G를 넘게 되면 웹페이지에 이상현상이 생깁니다. 그렇다고 로그를 안 남길 수는 없는 것이고, 이미지 파일들은 로그남기는 것에서 제외합니다.
CustomLog logs/access_log common 이렇게 되어 있는 것을 ..
SetEnvIfNoCase Request_URI (gif|png|jpg|css|js|bmp|jpeg|swf)$ IMAGE=1
CustomLog /usr/local/apache/logs/access_log common env=!IMAGE
이렇게 바꾸면^^; 쉽게 가능합니다.
(2) php 설정파일 (/usr/local/lib/php.ini) 다루기
php와 관련된 설정을 다룹니다. 변경후에 꼭 아파치 재 시작을 해 주시기 바랍니다.
- post, get , 쿠키 , 세션등의 변수를 일반변수로
예전에 php는 기본적으로 위 변수를 일반변수로 사용할 수 있었습니다. 하지만 보안에 취약 하기 때문에 php 설치시 기본적으로 일반변수로 사용못하게 설정합니다. 이렇게 되면 문제가 예전에 사용하던 짜여졌던 프로그램은 정상적으로 실행되지 않습니다. 보안보다는 호환성이 더 중요하죠^^;
register_globals=On 이렇게 설정합니다.
- 업로드 용량 제한 풀기
기본적으로 업로드는 2M로 제한되어 있습니다. 만약 2M 이상으로 하면 여러 가지 설정들을 바꾸어 줘야 합니다. 업로드 되는 시간을 길 게 해 주어야 하고, 한번에 잡아먹을 메모리를 크게 해 주어야 합니다.
default_socket_timeout = 600
post_max_size = 20M
memory_limit = 20M
upload_max_filesize = 20M
(3) mysql 및 apache 시작
- mysql 시작 : /usr/local/mysql/bin/mysqld_safe &
- apache 시작 : /usr/local/apache/bin/apachectl start
(4) mysql 및 apache 재 시작
- mysql 재시작 : /usr/local/mysql/bin/mysqladmin -u root -p reload
==> 이 방법은 완벽한 재 시작이 아닙니다. 어떤 문제가 생겼을시는 완전히 중지시키고 다시 시작하세요.
- apache 재시작 : /usr/local/apache/bin/apachectl restart
(5) mysql 및 apache 중지
- mysql 중지 : /usr/local/mysql/bin/mysqladmin -u root -p shutdown
==> 이 방법으로 죽지 않을 때는 killall mysqld 라고 하면 죽습니다.
- apache 중지 : /usr/local/apache/bin/apachectl stop
==> 대부분 이 방법으로 죽으나 죽지 않는다면, killall httpd 하시면 죽습니다.
(6) 부팅시 자동 시작 등록하기
echo \' /usr/local/mysql/bin/mysqld_safe&
/usr/local/apache/bin/apachectl start\' >> /etc/rc.d/rc.local
위와같은 한줄로 /etc/rc.d/rc.local 파일의 마지막 부분에 삽입합니다.