System/CentOS | Ubuntu

[CentOS 6] APM Setup - PHP

jykim23 2019. 7. 8. 16:30

정리가 덜 된 글입니다.

 

 

목차

 

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

 

 

configuration 완료

컴파일 오류 해결

더보기

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 : 네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLSSSL의 오픈 소스, 암호화 기능 및 유틸리티 함수들이 구현
--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 Optimizerphp-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() ?>

phpinfo.php

 

 

 

# /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