정리가 덜 된 글입니다.
목차
0. 개요
1. apache
2. mysql
3. php
4. tomcat
순서
profile 설정
라이브러리 설치
php 설치
php 파일 수정
php 가속시 설치
apache - PHP 연동
연동 확인
- profile 설정
# vi /etc/profile
export CFLAGS="-O3 -fPIC"
export CC="gcc"
# source /etc/profile -> profile 적용
- 라이브러리 설치
필요한 버전의 라이브러리를 설치합니다.
php에서 지원하는 기본 확장 모듈을 사용해도됩니다.
라이브러리 설치 (freetype)
# cd /home/src
# wget https://download-mirror.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
# tar xvzf freetype-2.5.3.tar.gz
# cd freetype-2.5.3
# ./configure --prefix=/usr/local/freetype
# make && make install
라이브러리 설치 (libpng)
# cd /home/src
# wget https://src.fedoraproject.org/lookaside/pkgs/libpng/libpng-1.6.10.tar.gz/md5/b0f0c38a02dc92f70f0053a40abc7e0b/libpng-1.6.10.tar.gz
# tar xvzf libpng-1.6.10
# mv libpng-1.6.10 /usr/local/libpng
# cd /usr/local/libpng
# cp scripts/makefile.linux makefile
# make test && make install
라이브러리 설치 (jpeg)
# cd /home/src
# wget https://src.fedoraproject.org/repo/pkgs/libjpeg/jpegsrc.v6b.tar.gz/dbd5f3b47ed13132f04c685d608a7547/jpegsrc.v6b.tar.gz
# tar xvzf jpegsrc.v6b.tar.gz
# mv jpeg-6b /usr/local/jpeg
# cd /usr/local/jpeg
# cp –avr /usr/share/libtool/config/config.guess .
# cp –avr /usr/share/libtool/config/config.sub .
# ./configure --enable-shared --enable-static
# make && make install
라이브러리 설치 (zlib)
# cd /home/src
# wget https://zlib.net/fossils/zlib-1.2.8.tar.gz
# tar xvf zlib-1.2.8.tar.gz
# cd zlib-1.2.8
# ./configure --prefix=/usr/local/zlib
# make && make install
라이브러리 설치 (gd)
# cd /home/src
# wget https://src.fedoraproject.org/lookaside/extras/gd/gd-2.0.34.tar.bz2/md5/8c25c322f12030b1c24488efd577fec0/gd-2.0.34.tar.bz2
# tar vxf gd-2.0.34.tar.gz
# mv gd-2.0.34 /usr/local/gd
# cd /usr/local/gd
# vi /usr/local/gd/gd_io.h
void (*gd_free) (struct gdIOCtx *);
void (*data); -> 추가
}
# ./configure --prefix=/usr/local/gd --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-jpeg=/usr/local/jpeg
# make && make install
라이브러리 설치 (Iconv)
# cd /home/src
# wget https://ftp.gnu.org/gnu/libiconv/libiconv-1.13.tar.gz
# tar zxvf libiconv-1.13.tar.gz
# cd libiconv-1.13
# ./configure --prefix=/usr/local/iconv && make && make install
# echo "include /usr/local/iconv" >> /etc/ld.so.conf
# ldconfig -> lib path 적용
라이브러리 설치 (mcrypt)
# cd /home/hosting
# wget src.fedoraproject.org/repo/pkgs/libmcrypt/libmcrypt-2.5.8.tar.gz/0821830d930a86a5c69110837c55b7da/libmcrypt-2.5.8.tar.gz
# tar xvzf libmcrypt-2.5.8.tar.gz
# cd libmcrypt-2.5.8
# ./configure --prefix=/usr/local/mcrypt
# make && make install
라이브러리 설치 (mhash)
# cd /home/src
# wget src.fedoraproject.org/lookaside/pkgs/rpms/mhash/mhash-0.9.9.9.tar.bz2/f91c74f9ccab2b574a98be5bc31eb280/mhash-0.9.9.9.tar.bz2
# tar xvf mhash-0.9.9.9.tar.gz
# cd mhash-0.9.9.9
# ./configure --prefix=/usr/local/mhash
# make && make install
- php 설치
# cd /home/src
# wget http://mirror.cogentco.com/pub/php/php-5.4.27.tar.gz
# tar xzvf php-5.4.27.tar.gz
# mv /home/src/php-5.4.27 /usr/local/php
# cd /usr/local/php
PHP configuration
# ./configure --with-apxs2=/home/httpd/bin/apxs --with-config-file-path=/home/httpd/conf --with-mysql=/usr/local/mysql --with-gd=/usr/local/gd --with-freetype-dir=/usr/local/freetype --with-zlib=/usr/local/zlib --with-png-dir=/usr/local/libpng --with-curl=/usr/local/curl --with-jpeg-dir=/usr/local/jpeg --with-mcrypt=/usr/local/mcrypt --with-mhash=/usr/local/mhash --with-openssl --with-gdbm --with-gettext --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-soap --enable-ftp --enable-mbstring=all --enable-gd-native-ttf --enable-dba
컴파일 오류 해결
Yum – y install curl curl-devel
configure: error: DBA: Could not find necessary header file(s) ~~~~
일반적으로
# yum install gdbm gdbm-devel
이면 해결되지만 계속해서 나는 경우
# yum install libdb-devel
해준다.
configuration 설정 의미
PHP 설치
CC : 컴파일에 사용할 C 컴파일러 명령어를 지정
CFLAGS : 컴파일 때 사용하길 바라는 C 컴파일러 옵션 지정
PHP 지식 :
- Configure 옵션이 많아서 제대로 지정해주지 않으면 사용하지도 않는 기능이 내장이 된다거나 꼭 필요한 기능인데 shared module 로 올리는 불상사가 발생.
- 컴파일할 때 기능을 내장하는 Built in 방식과 필요한 기능만을 그때 그때 컴파일해서 붙여쓰는 shared 방식을 사용
- Built in 방식은 자주 쓰는 경우에 사용을하고 shared 방식은 가끔 쓰는 기능이 필요한 경우에 사용
라이브러리
--with-apxs2 : apache 웹서버 연동 지원
--path : /home/httpd/conf -> php.ini 를 찾기 위한 디렉토리 설정
--with-zlib : 데이터 압축 라이브러리
--with-mcrypt : mcrypt 로 암호화 관련 기능을 지원
--with-mhash : mhash 지원
--with-mysql : mysql 데이터베이스 지원
--with-gd : gd 그래픽 지원
--with-png-dir : png 그래픽 지원을 위한 라이브러리 디렉토리 지정
--with-jpeg-dir : jpeg 그래픽 지원을 위한 라이브러리 디렉토리 지정
--with-freetype-dir : freetype 폰트 라이브러리 디렉토리 지정
--with-openssl : 네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLS와 SSL의 오픈 소스, 암호화 기능 및 유틸리티 함수들이 구현
--with-gdbm : path를 지정하지 않으면 configuration는 일반적인 검색경로에서 설치된 GNU DBM 헤더파일과 라이브러리를 찾는다.
--with-gettext : php내에 국제화를 위한 프로그램을 지원하기 위해서 필요한 기능을 지원
--with-curl : curl 지원 , http/https/ftp/telnet/smtp/pop3 등 주요한 프로토콜을 지원하며 Linux/Unix 계열 및 Windows에서 구동
--enable-sockets : fsockopen 과 같은 소켓 함수를 쓰기 위해서 필요
--enable-sysvmsg : System V message 를 지원 , Windows 플랫폼은 사용할 수 없다.
--enable-sysvsem : System V Semaphore 를 지원 , Windows 플랫폼은 사용할 수 없다
--enable-sysvshm : System V shared memory 를 지원 , Windows 플랫폼을 사용할 수 없다.
--enable-wddx : wddx 지원 , 서버와 클라이언트 사이에 refresh가 없이 양방향 통신을 지원
--enable-soap : soap 웹 서비스 지원
--enable-ftp : ftp 지원
--enable-mbstring=all : multibyte 문자열 처리를 위한 지원
--enable-gd-native-ttf : gd true type 문자열 지원
--enable-dba : dba 지원
enable 과 with 옵션의 차이점 ??
with 는 특정한 모듈을 포함해서 설치, 그래서 특정 모듈 디렉토리를 지정
enable 는 소스 내에 포함된 옵션 또는 모듈들을 활성화를 할지 말지 선택
# make && make install
- php 파일 수정(보안 설정)
# cp -avr /usr/local/php/php.ini-development /home/httpd/conf/php.ini
# vi /home/httpd/conf/php.ini
305줄
disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
802줄
allow_url_fopen = Off
909줄
date.timezone = Asia/Seoul
202줄
short_open_tag= On
옵션 설명
disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
-> disable_function : php에서 사용 금지할 함수들을 설정
- allow_url_fopen = Off -> url을 이용하여 파일을 열 수 있는지에 대한 설정, 보안상 기본적으로 꺼두는 것이 좋다.
- date.timezone = Asia/Seoul -> 해당 시간대 설정
- short_open_tag= On -> ( <? 태그의 사용을 허가함 5.4 버전에서는 기본으로 Off 되어 있음)
- file_uploads = On -> 파일 업로드를 허용할지 설정하는 부분
- upload_max_filesize = 20M -> 최대 업로드 파일 사이즈
- post_max_size = 20M -> Post방식으로 넘겨질 최대 데이터 사이즈
- max_execution_time = 300 -> 최대 실행시간, 0으로 설정시 무한대
- memory_limit = 20M -> 스크립트 최대 메모리 소비량, php 업로드 용량 설정은 위의 부분을 수정
- php 가속기 설치(ZendGuardLoader)
# cd /home/src
# wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz
# tar xvf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz
# cp -avr ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64/php-5.4.x/ZendGuardLoader.so /home/httpd/modules/
# vi /home/httpd/conf/php.ini
- 맨 아래 줄에 내용 추가
[Zend]
zend_extension=/home/httpd/modules/ZendGuardLoader.so
zend_loader.enable=1
PHP 가속기 설치 (ZendGuardLoader)
- php가속 모듈로써 php의 코드를 좀더 빠른 속도로 실행하도록 해주는 프로그램
- 가속 모듈인 Zend Optimizer는 php-5.2.x 버전까지만 지원되며, 5.3.x 버전부터는 Zend Guard Loader를 설치해야 한다.
(예전에는 서버의 성능이 좋지 않아 zend를 설치하였지만 요즘에는 cpu및 메모리 성능이 좋아져 zend를 설치 안해도 큰 차이는 없다.)
여기서 잠깐
-아파치를 woker방식으로 설치 했다면 zend guard loader가 아무리 php.ini에 올려도 올라오지 않는다.
- apache - PHP 연동
# vi /home/httpd/conf/httpd.conf -> php 모듈 추가 확인
LoadModule php5_module modules/libphp5.so
# vi /home/httpd/conf/httpd.conf -> php 설정
AddType application/x-gzip .gz .tgz 아래 라인에 밑의 두 라인을 추가(대략 394)
AddType application/x-httpd-php .php .php3 .ph .inc .ini
AddType application/x-httpd-php-source .phps
설명
# vi /home/httpd/conf/httpd.conf -> php 모듈 추가 확인
LoadModule php5_module modules/libphp5.so -> php 모듈로 등록
apache와 연동을 위해 수정하고 AddType 지시어를 이용해 설정
# vi /home/httpd/conf/httpd.conf -> php 파싱 설정
AddType application/x-tar .tgz 아래 라인에 밑의 두 라인을 추가
AddType application/x-httpd-php .php .php3 .ph .inc .ini -> php 문서의 확장자를 지정, 여기에 등록된 확장자만 php문서로 인식하여 처리
AddType application/x-httpd-php-source .phps -> php 소스 보기 확장자를 지정, 확장자가 .phps이면 소스 코드가 여러 가지 색깔의 문법 강조를 통해 예쁘게 표시된다. 즉 소스를 외부에 공개할 때 이 확장자를 사용하면 유용하다.
여기서잠깐
위에 세 줄을 통해서 아파치 웹 서버에서 php를 사용할 수 있다.
PHP 확장 모듈이란?
php자체에서 지원하는 기능외에 타 프로그램 라이브러리를 이용하여 함수로써 사용하는 것
gd, mbstring, iconv, curl 외에도 db연결하는 함수 등 수없이 많은 기능들이 확장 모듈로 제공
하지만 php 설치 시 같이 설치하면 안되는 경우도 발생
- 연동 확인
# vi /home/httpd/htdocs/phpinfo.php
<? phpinfo() ?>
# /home/httpd/bin/apachectl –t -> apache syntax 검사
# /home/httpd/bin/apachectl restart -> apache 재시작
오류
[root@localhost src]# /home/httpd/bin/apachectl -t
httpd: Syntax error on line 66 of /home/httpd/conf/httpd.conf: Cannot load modules/libphp5.so into server: /home/httpd/modules/libphp5.so: cannot open shared object file: No such file or directory
[root@localhost src]# cp -avr /usr/local/php/libs/libphp5.so /home/httpd/modules/libphp5.so
`/usr/local/php/libs/libphp5.so' -> `/home/httpd/modules/libphp5.so'
http://[서버ip]/phpinfo.php
'System > CentOS | Ubuntu' 카테고리의 다른 글
[CentOS 6] 80 포트에서 .jsp 페이지 설정 (0) | 2019.07.09 |
---|---|
[CentOS 6] APM Setup - Tomcat (0) | 2019.07.09 |
[CentOS 6] APM Setup - Mysql (0) | 2019.07.08 |
[CentOS 6] APM Setup - Apache (0) | 2019.07.08 |
[CentOS 6] APM Setup 개요 (0) | 2019.07.08 |