[웹서버] apm+freetype+gd 두번째 이야기
아래의 소개한 설치기 말고 다른 것인데..
다른 주변 설명이 잘되어져 있네요…
같이 참고하시면 좋을듯 하네요…
—————————————-
설치환경
===============
RedHat-7.0
Kernel-2.4.10
Pentium-600
512MB Memory
리눅스에서 apache + php + mysql 환경을 구성하되, mysql은 /usr/local/mysql
디렉토리에소스배포판을 미리 설치한 것을 전제로 아래의 설치과정을 진행한다.
추가로 GD 그래픽 라이브러리를 함께 사용할수 있도록 연동한다.
Freetype 라이브러리도 GD를 지원하기 위해 연동하여, 트루타입 글꼴을 사용가능
하도록 구성하기로 한다.
[웹 상에서의 그래픽 포맷에 관한 짧은 소개 ]
인용 – http://myicon.hihome.com/web_2.htm
(1) GIF 형식
-GIF(Graphic Interchange Format):보편적으로 웹에서 사용되는 그래픽 파일 형식,
– 최대 8비트 팔레트를 이용한 색인화된 색상을 사용. 최대 256개의 색깔을 사용할
수 있다는 의미
-용도:컬러이미지, 로고, 라인아트, 아이콘, 만화 같은 표현 등 같은 색을 많이
사용하는 영역이 있는 이미지 압축에 적합
-브라우저에서 지원할 수 투명이미지는 GIF 뿐이므로 이미지의 일부분을 투명하게
만들어야 할 필요가 있을 때 사용
-웹페이지에서 플러그인이나 Java 프로그래밍 또는 서버에 부담을 주지 않고 간단한
애니메이션을 추가하기 좋은 형식
-8비트라는 제한 때문에 사진 이미지를 표시하기에는 부적합
(2) JPEG 형식
-JPEG(Joint Photographic Experts Group) 24비트 색상정보가 포함되며,
-GIF의 256컬러보다 휠씬 많은 수백만 색상을 사용할 수 있음 (손실압축방식)
사진 등 사실적 이미지 표현에 좋음
-24비트RGB 색상 정보가 포함되는 포맷이므로, 고품질의 이미지와 풍부하고
미묘한 색상의 변화를 표현
-JPEG 압축기법:손실압축기법으로 이미지의 품질에 큰 손상을 입히지 않고도
10:1, 20:1까지 데이터 압축율을 얻을 수 있음
-용도:사진이미지나 연속된 톤으로 표현된 이미지, 유화, 수채화 256단계의
음영으로 표시되는 이미지 등
(3) PNG 형식
-PNG(Portable Network Graphic):웹그래픽 포맷으로 가장 늦게 채택된 형식.
-8비트, 24비트, 16비트, 흑백음영을 모두 지원하는 비손실압축방식
-웹환경에 큰 영향을 미칠 것으로 보이는 파일 형식
-독점적인 GIF를 대신할 비독점적인 파일 형식으로 개발된 것
-용도:JPEG을 대신할 포맷이 아니라, GIF를 대체할 형식임
-세부묘사가 필요한 이미지 저장에서 TIFF를 대신할 수 있음
-PNG의 훌륭한 기능들
1. 8비트 팔레트 지원, 16비트 회색음영 지원, 24비트 트루컬러지원
2. 비손실압축방법 사용 및 색인색상 이미지에 대하여 GIF보다 좋은 압축율지원
3. GIF 의 일차원적인 인터레이싱에 비해 세련된 방법인 2차원적인 점진적 표시기능
4. 8비트 또는 16비트 투명성 정보를 포함한 알파채널 지원
작업에 앞서 사전구성요소를 살펴보면 다음과 같다.
먼저 시스템 RPM으로 설치된 PNG 와 JPEG 라이브러리를 확인한다.
# rpm -qa | grep png
libpng-1.0.8-1
libpng-devel-1.0.8-1
# rpm -qa | grep jpeg
libjpeg-6b-13
libjpeg6a-6a-7
libjpeg-devel-6b-13
실제 작업에 필요한 패키지는 다음과 같다.
기술된 웹사이트에서 각각의 파일을 다운로드한다.
freetype-1.3.tar.gz (http://freetype.sourceforge.net/download.html)
gd-1.8.4.tar.gz (http://www.boutell.com/gd)
patch_gd1.8.4_gif_20010208.gz (http://www.rime.com.au/gd)
apache_1.3.19.tar.gz (http://httpd.apache.org/dist)
php-4.0.6.tar.gz (http://www.php.net/downloads.php)
gd-1.8.2ko.tar.gz (http://dr.moira.co.kr/oyh1757/gd_patch.php3)
php_gd_ko.tar.gz (http://dr.moira.co.kr/oyh1757/gd_patch.php3)
설치작업을 빠르게 진행하기 위해, tar.gz 파일을 모두 압축해제한다.
[root@src]# gzip -d apache_1.3.19.tar.gz
[root@src]# tar xvf apache_1.3.19.tar > /dev/null
[root@src]# gzip -d freetype-1.3.1.tar.gz
[root@src]# tar xvf freetype-1.3.1.tar > /dev/null
[root@src]# gzip -d gd-1.8.2ko.tar.gz
[root@src]# tar xvf gd-1.8.2ko.tar > /dev/null
[root@src]# gzip -d gd-1.8.4.tar.gz
[root@src]# tar xvf gd-1.8.4.tar > /dev/null
[root@src]# gzip -d patch_gd1.8.4_gif_20010208.gz
[root@src]# gzip -d php-4.0.6.tar.gz
[root@src]# tar xvf php-4.0.6.tar > /dev/null
[root@src]# gzip -d php_gd_ko.tar.gz
[root@src]# tar xvf php_gd_ko.tar > /dev/null
미리 GD가 기본적으로 GIF라이브러리를 지원하지 않으므로, 이를 지원하기 위해
GD패치를 실행하고,GD한글패치 적용을 위해 GD소스와 PHP소스중 관련파일을 교체한다.
혀니님이 운영하는 사이트에서 gd-1.8.2 버전에 대한 한글패치파일이 제공되는데
언어관련 패치프로그램(gdttf.c jisx0208.h)만 교체하므로, 설치할 gd의 버전은
상관없다.
먼저 GD패치(GIF지원)를 실행한다.
[root@src]# cd gd-1.8.4
[root@gd-1.8.4]# patch -p1 < ../patch_gd1.8.4_gif_20010208
patching file Makefile
Hunk #1 FAILED at 17.
1 out of 6 hunks FAILED — saving rejects to file Makefile.rej
patching file Makefile.nt
patching file demoout.png
patching file gd.c
patching file gd.h
patching file gd2togif.c
patching file gd_biggif_out.c
patching file gd_gif_in.c
patching file gd_gif_out.c
patching file gd_lzw_out.c
patching file gdcmpgif.c
patching file gdtest.c
patching file gdtestft.c
patching file giftogd2.c
patching file index.html
patching file test/fttest.png
patching file test/fttestref.png
다음은 GD의 한글패치와 관련된다.
[root@gd-1.8.4]# cd ..
[root@src]# cp gd-1.8.2/gdttf.c gd-1.8.4/
[root@src]# cp gd-1.8.2/jisx0208.h gd-1.8.4/
마찬가지로,,
PHP소스트리에도 관련파일을 적용한다. 다음은 위의 2개 파일과 이름이 같지만,
php_gd_ko.tar 파일에서 추출된 파일이고, 내용이 다르므로 주의한다.
[root@src]# cp gdttf.c php-4.0.6/ext/gd/
[root@src]# cp jisx0208.h php-4.0.6/ext/gd/
++++++++++++++++++++++++++++++++++++++++++++++++
설치순서
——-
1) Freetype Library compile, install
2) GD Library compile, install
3) Apache compile, install
4) PHP compile, install
++++++++++++++++++++++++++++++++++++++++++++++++
1) FreeType Library 설치
[root@src]# cd freetype-1.3.1
[root@freetype-1.3.1]# ./configure; make; make install
2) GD Library 설치
[root@freetype-1.3.1]# cd ..
[root@src]# cd gd-1.8.4
[root@gd-1.8.4]# make; make install
3) Apache 설치
[root@gd-1.8.4]# cd ..
[root@src]# cd apache_1.3.19
[root@apache_1.3.19]# ./configure –prefix=/usr/local/apache \\
> –enable-module=all –enable-shared=max
[root@apache_1.3.19]# make
[root@apache_1.3.19]# make install
4) PHP 설치
[root@apache_1.3.19]# cd ..
[root@src]# cd php-4.0.6
[root@php-4.0.6]# ./configure \\
> –with-mysql=/usr/local/mysql \\
> –with-apxs=/usr/local/apache/bin/apxs \\
> –with-gd=/usr/local \\
> –enable-gd-imgstrttf \\
> –with-jpeg-dir=/usr/lib \\
> –enable-track-vars \\
> –enable-versioning \\
> –enable-sigchild \\
> –enable-ftp \\
> –disable-debug \\
> –with-language=korean \\
> –with-charset=euc_kr \\
> –with-config-file-path=/usr/local/apache
[root@php-4.0.6]# make
[root@php-4.0.6]# make install
[root@php-4.0.6]# cp php.ini-dist /usr/local/apache/php.ini
PHP 설치와 관련된 주요작업 내용은 apxs(APache eXtenSion Tool)을 사용해
php4 library를 apache의 Loadable Library로 포함시키는 것으로, 다음과 같이
설치된다.
make[1]: 들어감 `/usr/local/src/php-4.0.6′ 디렉토리
/usr/local/src/php-4.0.6/build/shtool mkdir -p “/usr/local/apache/libexec”
&&
/usr/local/apache/bin/apxs -S LIBEXECDIR=”/usr/local/apache/libexec” -i -a -n
\\
php4 libs/libphp4.so
cp libs/libphp4.so /usr/local/apache/libexec/libphp4.so
chmod 755 /usr/local/apache/libexec/libphp4.so
[activating module `php4′ in /usr/local/apache/conf/httpd.conf]
installing shared modules into /usr/local/lib/php/20001222
make[1]: 나감 `/usr/local/src/php-4.0.6′ 디렉토리
5) Apache 설정(conf/httpd.conf) 편집 및 실행
APACHE_HOME/conf/httpd.conf 파일을 열어 아래의 루틴을 수정한다..
# And for PHP 4.x, use:
#
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
위의 항목을 아래와 같이 주석을 풀고, 추가해 준다.
# And for PHP 4.x, use:
#
AddType application/x-httpd-php .php .php3 .html .htm .inc
AddType application/x-httpd-php-source .phps
아파치를 실행하기 위해 bin/apachectl start 명령을 사용한다.
[root@bin]# ./apachectl start
Syntax error on line 241 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/libexec/libphp4.so into server: libmysqlclient.so.6:
cannot load shared object file: No such file or directory
./apachectl start: httpd could not be started
만약 아파치서버를 시작하는 부분에서 위와 같이 실행에러가 나는 경우는
/etc/ld.so.conf 파일에/usr/local/mysql/lib/mysql 항목을 추가한후,, ldconfig
명령을 한번 실행한다.
[root@bin]# vi /etc/ld.so.conf
/usr/X11R6/lib
/usr/lib
/usr/kerberos/lib
/usr/lib/qt-2.2.1/lib
/usr/lib/qt-1.45/lib
/usr/lib/sane
/usr/local/mysql/lib/mysql
~
~
~
~:wq!
[root@bin]# ldconfig
[root@bin]# ./apachectl start
./apachectl start: httpd started
[root@bin]# pstree
init-+-crond—crond
|-httpd—5*[httpd]
|-in.telnetd—login—bash—su—bash—pstree
|-keventd
|-klogd
|-7*[mingetty]
|-named
|-pagebuf_daemon
|-sa1—sadc
|-safe_mysqld—mysqld—mysqld—mysqld
|-sendmail
|-sshd
|-syslogd
|-xfs
`-xinetd
[root@bin]# ps -ef | grep httpd
root 30057 1 0 05:48 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30058 30057 0 05:48 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30059 30057 0 05:48 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30060 30057 0 05:48 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30061 30057 0 05:48 ? 00:00:00 /usr/local/apache/bin/httpd
nobody 30062 30057 0 05:48 ? 00:00:00 /usr/local/apache/bin/httpd