본문 바로가기

Develop/Linux

[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 3

이제 마지막.. PHP 설치를 진행하자.
혹 아직 Apache나 MySQL을 설치하지 않았다면 아래 포스트를 먼저 진행하고 오자.

[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 1 http://jguru-study.tistory.com/29
[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 2 http://jguru-study.tistory.com/30


1. 빌드 환경 설정

yum install -y libjpeg libjpeg-devel libjpeg-turbo-devel gd gd-devel gdbm-devel php-mbstring libexif-devel libmcrypt libmcrypt-devel libvpx libvpx-devel libXpm libXpm-devel icu libicu libicu-devel t1lib t1lib-devel gmp-devel mhash* gettext gettext-devel libtidy libtidy-devel libxslt libxslt-devel libedit-devel libc-client libc-client-devel pam-devel readline-devel libpng libpng-devel krb5-devel db4-devel expat*

1-1. libmcrypt & libmcrypt-devel 패키지 설치

CentOS에서는 위 패키지가 yum에 포함되어있지 않아 직접 설치해야 한다. Ubuntu는 확인하지 못했는데 apt-get으로 된다면 그렇게 설치하면 된다.

cd /usr/local/src
wget http://elders.princeton.edu/data/puias/unsupported/6/x86_64/libmcrypt-2.5.8-9.puias6.x86_64.rpm
wget http://elders.princeton.edu/data/puias/unsupported/6/x86_64/libmcrypt-devel-2.5.8-9.puias6.x86_64.rpm
rpm -ivh libmcrypt-2.5.8-9.puias6.x86_64.rpm
rpm -ivh libmcrypt-devel-2.5.8-9.puias6.x86_64.rpm

2. MySQL 라이브러리 참조

cd /usr/local/mysql
ln -s lib lib64


3. PHP 다운로드 및 컴파일

cd /usr/local/src
wget http://kr1.php.net/get/php-5.6.25.tar.gz/from/this/mirror
tar xvfz mirror
cd php-5.6.25
./configure --prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-config-file-path=/usr/local/apache/conf \
--with-mysql=/usr/local/mysql \
--with-mysql-sock=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-regex=php \
--with-libxml-dir=/usr \
--with-openssl --with-pcre-regex --with-zlib \
--with-bz2 --with-curl --with-gdbm \
--with-db4=/usr --with-dbm --with-pcre-dir=/usr --with-openssl-dir=/usr \
--with-libxml-dir=/usr --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr \
--with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr \
--with-t1lib=/usr --with-gettext --with-gmp --with-mhash --with-imap \
--with-imap-ssl --with-kerberos --with-icu-dir=/usr --with-ldap \
--with-ldap-sasl --with-libmbfl --with-onig --with-mcrypt \
--with-libedit --with-readline --with-tidy --with-libexpat-dir=/usr \
--with-xmlrpc --with-xsl --with-pear --with-pic --with-libdir=lib64 \
--enable-bcmath --enable-calendar --enable-exif \
--enable-ftp --enable-pcntl --enable-gd-native-ttf \
--enable-gd-jis-conv --enable-intl --enable-mbstring \
--enable-shmop --enable-sockets --enable-sysvmsg \
--enable-sysvsem --enable-sysvshm --enable-wddx \
--enable-zip --enable-mysqlnd --enable-dba=shared \
--enable-mod-charset --enable-dom --enable-mbregex \
--enable-inline-optimization --enable-sigchild --enable-soap \
--enable-maintainer-zts --enable-opcache=nom

make
make install


4. PHP 환경설정

cp php.ini-production /etc/httpd/php.ini
 vi /etc/httpd/php.ini

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Module Settings;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[Date]
date.timezone = "Asia/Seoul"



5. Apache 환경설정

vi /usr/local/apache/conf/httpd.conf

# httpd.conf 내에서 PHP모듈이 정상적으로 추가되어있는지 확인 (자동으로 연동되어 등록됨)
LoadModule php5_module          modules/libphp5.so

#<IfModule dir_module>을 찾아 아래 내용 추가
<IfModule dir_module>
     DirectoryIndex index.html index.htm index.php index.cgi
</IfModule>

#<IfModule mime_module> 을 찾아 아래 내용 추가
<IfModule mime_module>
     AddType application/x-compress . z
     AddType application/x-gzip . gz . tgz
     AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml .html .htm .inc
     AddType application/x-httpd-source .phps
</IfModule>

#httpd.conf 저장한 뒤
/etc/init.d/httpd restart



6. 환경변수 등록

cd ~
vi .bash_profile

#PATH부분에 아래 내용을 추가한다
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/php/bin

#.bash_profile 저장한 뒤

source .bash_profile




7. 연동 확인

vi /usr/local/apache/htdocs/phpinfo.php

<? php
phpinfo();
?>

# 입력 후 저장



이렇게 APM 설치를 마무리했다.
각 버전마다 컴파일 설정값이나 관련 라이브러리가 바뀌는 등 여러가지 변수가 있을 수 있으니, 실제 진행할 때 이 점을 유의해야한다.


이번 포스팅을 진행할 때, 사용한 버전은 최대한 이것저것 테스트 해보긴 했지만 부족한 부분이나 잘못된 부분이 있다면 언제든 댓글 부탁드립니다.


* APM 소스설치 링크

[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 1 http://jguru-study.tistory.com/29
[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 2 http://jguru-study.tistory.com/30
[Linux] CentOS에 APM Source 설치 (Apache,PHP,MySQL) - 3 http://jguru-study.tistory.com/31

  • 유딩 2017.01.23 02:13

    포스팅 감사합니다!!
    php마지막에서 vi /usr/local/apache/htdocs/phpinfo.php

    <? php
    phpinfo();
    ?>

    입력 후 연동되는것이 안보이는데 또뭘 더 해야할까요??

  • 유딩 2017.01.23 22:15

    저어 죄송한데 아래 에러들도있어서요.. 봐주시고 답변해주시면 제게 큰 힘이 될거에요 감사해요

    1.vi /etc/httpd/php.ini 에서, date.timezone = "Asia/Seoul"입력 후 저장해도 저장사항이 반영이 안됩니다

    vi 편집기에서 입력 후 ctrl S,ESC, ctrl Z키를 눌렀다가 다시 들어가면 입력 내용이 사라져 있네요 ㅠㅠ

    2.vi /usr/local/apache/conf/httpd.conf 에서 추가,수정 해도 앞에서처럼 입력 내용이 사라져 있어요

    추가내용)
    #<IfModule dir_module>을 찾아 아래 내용 추가
    <IfModule dir_module>
    DirectoryIndex index.html index.htm index.php index.cgi
    </IfModule>

    #<IfModule mime_module> 을 찾아 아래 내용 추가
    <IfModule mime_module>
    AddType application/x-compress . z
    AddType application/x-gzip . gz . tgz
    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml .html .htm .inc
    AddType application/x-httpd-source .phps
    </IfModule>

    3. #httpd.conf 저장한 뒤 /etc/init.d/httpd restart 명령어 실행하면
    에러메세지(AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message)
    가 뜹니다.

    • 2017.01.23 22:31 신고

      제가 질문의 내용을 이해한게 맞다면, vi편집기에서 저장을 하실 때, ctrl S, ESC, ctrl Z를 입력하셨다는 말씀이신가요?

      만약, 그렇게 하셨다면 저장방법이 잘못되었습니다. vi편집기에서 저장은 :w 나 :wq를 통해 할 수 있습니다. (:w 는 파일저장, :wq는 파일 저장 후 vi를 종료)

      1,2번의 내용은 그렇게 해결하시면 될 것 같고, 3번은 혹시 httpd.conf파일에 ServerName이 #으로 주석처리되어있지는 않는지요?

  • 유딩 2017.01.23 22:29

    죄송한데 1,2번은 자문자답이었네요 저장했고요 지금안되는건

    #httpd.conf 저장한 뒤 /etc/init.d/httpd restart 명령어 실행하면
    에러메세지(AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message) 가 뜹니다.
    도움주시면 감사드릴게요!!


  • 깜디 2017.02.01 11:06

    감사합니다. 덕분에 잘 설치 하였습니다~!

    centOS 7 에서 php 설치시 DBA 에러가 뜹니다. 필요한 라이브러리를 찾을 수 없다고 하는데요. php 홈페이지에서 확인해보니 컴파일시 --with-dbm 이거 사용할때 충돌이 잦다고 나와있어서 해당 문구 삭제 후 설치 하였습니다.

    설치는 완료 했는데 혹시 --with-dbm 이거 빼면 나중에 문제 생길까요...?

    그리고 마지막 연동확인에서 php 작성 후 저장까지 했는데 어떻게 확인하는건가요...? 제가 리눅스 시작한지 일주일도 안되서..^^;; 자세히 알려주시면 감사하겠습니다~

    새해 복 많이 받으세요~

    • 2017.02.01 11:12 신고

      1. 컴파일 옵션에서 --with는 선택사항이라 크게 문제될 건 없습니다. (물론, 관련 기능을 사용하셔야 한다면 설치하셔야 하고요)

      2. phpinfo페이지를 만들어 저장하셨다면 브라우저상에서 localhost/phpinfo.php를 입력하시면 됩니다. 해당 파일이 저장된 웹서버(아파치)를 통해 phpinfo.php파일을 불러오는거고요, 혹 경로를 달리 지정하셨다면 그 경로에 맞게 주소를 입력하시면 되겠습니다 :)

  • Moon 2017.04.04 16:02

    안녕하세요 올려주신 글 보면서 apm 설치중인 user입니다.

    4. PHP 환경설정

    cp php.ini-production /etc/httpd/php.ini
    vi /etc/httpd/php.ini


    이 이 부분까지 진행 중에
    cp: cannot create regular file `/etc/httpd/php.ini': 그런 파일이나 디렉터리가 없습니다
    아래와 같은 오류가 발생을 했는데..
    왜 이런 오류가 발생했는지 이해가 안됩니다..
    /etc/httpd 라는 디렉토리가 없어서 발생되는건지, 이게 이유라면 Guru님 설치가이드 내용중엔 저 디렉토리를 만들었던 과정이 없던데..
    궁금하네요

    * 추가로 httpd 설치 과정 중 httpd 서비스 자동 실행을 위해 chkconfig httpd on 옵션 사용 중

    httpd 서비스는 chkconfig 를 지원하지 않습니다 와 같은 에러가 발생이 되는데

    앞서 아래와 같이 설정을 했는데도 오류가 발생이 되네요..

    !/bin/sh
    # chkconfig: 2345 90 90
    # description: init file for Apache server daemon
    # processname: /usr/local/apache/bin/apachectl
    # config: /usr/local/apache/conf/httpd.conf
    # pidfile: /usr/local/apache/logs/httpd.pid

    답변 부탁드립니다!

    • MOON 2017.04.04 16:46

      제가 좀 찾아보니

      httpd 설치과정중에 컴파일 과정에서

      --sysconfdir=/etc/httpd

      이부분이 빠진거 같은데 맞나요?

    • 2017.04.04 17:10 신고

      부족한 답변입니다만..

      1. 처음 보는 오류긴한데 내용 자체는 /etc/httpd 경로가 없어서 발생하는 것 같습니다. 해당 디렉토리가 존재하는지 확인해봐야 할 것 같습니다.

      2. 경로가 제대로 설정되었고, 실행 스크립트(apachectl)를 /etc/init.d에 httpd로 복사하셨다면 해당 코드를 추가해서 자동실행으로 등록할 수 있습니다. 입력과정에서 오타나 설치경로를 달리 하셨는지 확인해봐야 할 것 같습니다.

    • MOON 2017.04.04 17:19

      바쁘실텐데 빠른 답변 감사드립니다.

      2번에 대한 답변은 제가 다시한번더
      확인해보면 될거 같은데

      1번 같은 경우는 Guru님 가이드를

      보고 그대로 따라한건데 디렉토리가 없는것으로 나오니 이해가 안되는 부분입니다.

      OS 설치 후 다른 설정 없이

      바로 apm 설치 진행했습니다.

      가이드 따라서 실행했다면

      저도 응당 /etc/httpd 디렉토리가 있어야 정상일텐데

      Guru님은 저 디렉토리가 있어서 계속 진행이 됐고 저는 없어서 오류가 발생했다면

      Guru님이 저 /etc/httpd 디렉토리 설정을 이미 전에 설정하셨는데 그 부분을 가이드에서 제외하셔서 저만 오류가 발생한게 아닌가 생각이됩니다.

      한번 더 답변 부탁드립니다!

    • 2017.04.04 17:31 신고

      해당 코드로 여러 번 반복설치해서 사용했다보니 말씀하신 내용은 단계별로 한번 체크해봐야겠네요ㅎㅎ; MOON님이 진행하고 있는 OS환경을 알 수 있을까요? 알려주시면 오늘 저녁에 가서 확인해보겠습니다.

    • MOON 2017.04.04 17:41

      CentOS 6.8 입니다

      감사합니다.

    • 2017.04.04 18:29 신고

      방금 가상머신으로 CentOS 6.8을 설치하자마자 /etc/httpd 디렉토리를 확인해보니 있네요. 혹시 가상머신에서 작업하시는 거라면 새 가상머신을 잠깐 만들어서 확인해 보시면 될 것 같습니다!

    • MOON 2017.04.05 11:02

      아 저는 실서버 사용중인건데

      실서버라 없나봅니다..

      답변 감사드립니다

    • MOON 2017.04.05 12:16

      하나 더 질문 드립니다!

      답변주신거처럼

      /etc/httpd 라는 디렉토리가 OS 설치 후에 자동 생성이된거라면

      Guru님의 php 설치 가이드 내용중

      cp php.ini-production /etc/httpd/php.ini

      이 부분에서

      /etc/httpd 경로 대신에 제가 원하는 임의의 경로로 설정해도 상관 없는거죠?

  • 감사합니다. 2017.04.12 16:43

    왠만하면 답글 안다는데 정말 친절한 설명 너무 감사드립니다. 덕분에 설치도 다 완료했습니다.

    vi /usr/local/apache/htdocs/phpinfo.php

    <? php
    phpinfo();
    ?>

    이부분을 진행하고 난 다음 연동확인을 위해 localhost/phpinfo.php 를 치니까
    Parse error: syntax error, unexpected 'phpinfo' (T_STRING) in /usr/local/apache/htdocs/phpinfo.php on line 2

    이런 오류가 발생하는데 왜그런지 혹시 아시나요? 문법오류같은데...도저희 틀리게 작성한게 없는데 참 의아합니다.
    모두 설치후 마지막 연동확인작업에서 이렇게 되버리다니...답변좀 부탁드리겠습니다

  • 감사합니다. 2017.04.12 16:47

    윗글 자답입니다...;

    <? php
    phpinfo();
    ?>

    이부분에 <? php 부분에 띄워쓰기가 있어서 오류가 난거같습니다... <?php 이렇게 주니까 바로 나오네요..ㅋㅋ;
    다시한번 친절한 포스팅 감사드립니다. 덕분에 수월하게 설치하였습니다. 정말감사드려요

  • checking for DB4 major version... configure: error: Header conta 2017.04.13 16:33

    다른부분은 잘되는데
    커널버젼 2.6.18이고
    php 5.6-25 설치하려고 하는데
    checking for DB4 major version... configure: error: Header contains different version
    나서요
    --with-db4=/usr --with-dbm 이걸빼고 해도 apm 사용하는데는 지장이 없는지도 궁금하구요

  • 마지막 PHP연동 확인시 에러나는 분계시면.. 2017.04.29 20:05

    <? php
    phpinfo();
    ?>

    Parse error: syntax error, unexpected 'phpinfo' (T_STRING) in /usr/local/apache/htdocs/phpinfo.php on line 2

    이거 입력했을 때 위와같은 에러나는분 계시면
    첫번째 줄에 공백없이 치시면 해결될거에요

    브라우저 키시고 localhost/phpinfo.php입력하시면 확인가능합니다

  • 페이지가 열리지않고 다운로드가 됩니다 2017.06.08 16:10

    phpinfo가 출력되지 않고 다운로드가됩니다

  • 치무 2017.09.13 10:59

    안녕하세요!

    아파치 환경설정 부분에서 LoadModule php5_module modules/libphp5.so 가 자동으로 연동이 안되는 오류가 있는데 어떻게 해결하나요??

  • 궁금이 2018.07.12 00:29

    php.ini 설정경로가 다른거 아닌가요?
    윗분도 이런 질문을 하셨던데...
    "vi /etc/httpd/php.ini 에서, date.timezone = "Asia/Seoul"입력 후 저장해도 저장사항이 반영이 안됩니다

    php.ini 설치경로는 /usr/local/apache/conf 인데
    /etc/httpd/ 경로 하위에 넣는지 궁금합니다.