##########################################

## 주제 : CentOS 5.8에서 APM2 설치 하기              ##

##                                                                  ##

## Written by K.S.W (2016073001)                         ##

##########################################


APM2란 ?

새로운 APM2가 있는 것이 아니고 지난번에 버전이 낮은 APM1 

다음 버전이라 생각하면 된다.

 * apache version 2 로 설치 


########## APM 전체 설치 순서 ##########

1. 설치된 APM 삭제하기 

2. cmake 설치하기

3. mysql 설치하기

4. apache 설치하기

5. GD library 설치하기 

6. php 설치하기

7. phpmyadmin 설치하기

8. mysqli 동적 모듈 설치하기 

9. 제로보드 XE 설치하기

########## APM 전체 설치 순서 ##########



############################

## 1. 설치된 APM 삭제하기         ##

############################


* 삭제 전 

 - /etc/init.d/mysqld stop

 - /etc/init.d/httpd stop

 - yum remove mysql-server

 - yum remove httpd

확인

 - rpm -qa | grep mysql

 - rpm -qa | grep httpd

 - rpm -qa | grep php

삭제 실행

 - yum -y remove mysql-server mysql

 - yum -y remove httpd httpd-devel

 - yum -y remove php-cli php-common


-- APM 삭제 순서 --

1-1. mysql 삭제

1-2. apache 삭제

1-3. php 삭제

-- APM 삭제 순서 --


1-1. mysql 삭제

- rpm 과 소스로 설치된 mysql 을 검색한다.

# netstat -nltp

# rpm -qa | grep mysql

# which mysqld

# /etc/init.d/mysqld stop



- /usr/bin 에 링크되어 있는 실행파일들을 삭제한다.

# rm -f /usr/bin/mysql/comp_err

# rm -f /usr/bin/mysql/isamchk

# rm -f /usr/bin/mysql/isamlog

 :

 :


1-2. apache 삭제

- rpm 과 소스로 설치된 apache 를 검색한다.

# rpm -qa | grep http

# which httpd

# /etc/init.d/httpd stop

# rm -f /etc/init.d/httpd

# rm -f /etc/httpd.conf

# rm -rf /usr/local/apache


- /usr/bin 에 링크되어 있는 실행파일들을 삭제한다.

# rm -f /usr/bin/ab

# rm -f /usr/bin/apachectl

# rm -f /usr/bin/apxs

# rm -f /usr/bin/checkgid

# rm -f /usr/bin/dbmmanage

# rm -f /usr/bin/htdigest

# rm -f /usr/bin/htpasswd

# rm -f /usr/bin/httpd

# rm -f /usr/bin/logresolve

# rm -f /usr/bin/rotatelogs


1-3. php 삭제

- rpm 과 소스로 설치된 php 를 검색한다.

# rpm -qa | grep php

# rm -rf /usr/local/php

# rm -f /etc/php.conf


- /usr/bin 에 링크되어 있는 실행파일들을 삭제한다.

# rm -f /usr/bin/pear

# rm -f /usr/bin/peardev

# rm -f /usr/bin/pecl

# rm -f /usr/bin/php

# rm -f /usr/bin/php-config

# rm -f /usr/bin/phpize



#######################

## 2. cmake 설치하기        ##

#######################


- mysql 5.5.x 이상부터  mysql 컴파일 방법이 configure 방식 -> cmake 방식으로 변경되어 cmake 패키지를 설치해야 한다.


공식 다운로드 사이트 : http://www.cmake.org/

설치 파일명 :  cmake-3.0.1.tar.gz 

MD5: e2e05d84cb44a42f1371d9995631dcf5


설치 버전 : 3.0.1


-- cmake 설치 순서 --

2-1. cmake 패키지 삭제

2-2. cmake 소스 다운로드

2-3. cmake 압축해제

2-4. cmake 환경설정

2-5. cmake 컴파일

2-6. cmake 설치

2-7. cmake 설치 확인

2-8. cmake 세팅

-- cmake 설치 순서 --


2-1. cmake 패키지 삭제

- 패키지가 설치가 되어있다면 삭제를 한다.

# rpm -q cmake    

# rpm -e cmake 


2-2. cmake 소스 다운로드 (X)

# wget http://www.cmake.org/files/v3.0/cmake-3.0.1.tar.gz

 -- 링크되어 있는 것들 땡겨옴 


2-3. cmake 압축해제

# tar xzf cmake-3.0.1.tar.gz 

 - x 풀어라 z zip으로 되어있는 것을 풀어라 f


2-4. cmake 환경설정

- bootstrap 을 실행해도 된다.

# cd cmake-3.0.1

# ./configure             


2-5. cmake 컴파일

# make          


2-6. cmake 설치

# make install            


  # ./configure && make && make install


2-7. cmake 설치 확인

- 설치된 파일들을 확인한다.

# ls /usr/local/bin       

ccmake  cmake  cpack  ctest  

# ls /usr/local/doc

cmake-3.0

# ls /usr/local/share

... cmake-3.0 ...



2-8. cmake 세팅

- cmake 를 실행하기 위한 설정 단계이다.

- PATH 변수에 /usr/local/bin 디렉토리가 없다면 PATH 변수에 추가하고 로그인시에 다시 실행할 수 있도록 ~/.bashrc 에 넣어둔다.


# cmake

-bash: cmake: command not found


# PATH=$PATH:/usr/local/bin

# echo 'PATH=/usr/local/bin:$PATH' >> ~/.bashrc


# cmake

cmake version 2.8.12.1

Usage


  cmake [options] <path-to-source>

  cmake [options] <path-to-existing-build>

  :

  :

 <중략>


- cmake 의 버전이 나오면 제대로 설치가 된 것이다.

# cmake --version

cmake version 3.0.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).





#######################

## 3. mysql 설치하기         ##

#######################


공식 다운로드 사이트 : http://www.mysql.com/

설치 파일명 : mysql-5.5.28.tar.gz 

MD5: 


설치 버전 : 5.5.28

설치 디렉토리 : /usr/local/mysql

데이타 디렉토리 : /usr/local/mysql/data

기본언어셋 : utf-8

포트 : 3306

설정파일 : /etc/mysql.conf -> /etc/my.cnf



-- mysql 설치 순서 --

3-1. mysql 필요 패키지 설치

3-2. mysql 소스 다운로드

3-3. mysql 압축해제

3-4. mysql 환경설정

3-5. mysql 컴파일

3-6. mysql 설치

3-7. mysql 설치 확인

3-8. mysql 세팅

-- mysql 설치 순서 --


3-1. mysql 필요 패키지 설치

- ncurses-devel 패키지가 없다면 설치한다.

# rpm -q ncurses-devel

# rpm -qa | grep ncurses

 

# yum -y remove ncurses-5.5-24.20060715.i386

# yum -y install ncurses-devel


3-2. mysql 소스 다운로드 (X)

http://mysql.com 에 접속한다.

Downloads(GA) -> 클릭

MySQL Community Edition (GPL) ->  Download from MySQL Developer Zone 클릭

MySQL Community Server (GPL) -> Download 클릭

MySQL Community Server 5.5.28 -> Select Platform 에서 Source Code 를 선택하고 클릭

맨 아래에서  Generic Linux (Architecture Independent), Compressed TAR Archive Download 클릭

No thanks, just start my download 클릭해서 소스를 다운로드 한다.


- md5sum 명령어를 이용해서 다운로드 받은 파일의 md5 해쉬값을 확인한다.

- 홈페이지에서 나온 해쉬값과 여기서의 출력값이 다르면 파일이 변조된 것이므로

  서버에 설치하지 않는다.

# md5sum mysql-5.5.28.tar.gz   


3-3. mysql 압축해제

# tar xzf mysql-5.5.28.tar.gz 

# cd mysql-5.5.28


3-4. mysql 환경설정

- 환경설정이 configure -> cmake 로 변경되어서 cmake 를 이용한다.

# cmake \

-DCMAKE_INSTALL=/usr/local/mysql \

-DWITH_EXTRA_CHARSETS=all \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DSYSCONFDIR=/etc \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DMYSQL_TCP_PORT=3306


 ** \ 끝에 공백 없도록 하기 


3-5. mysql 컴파일

# make 


3-6. mysql 설치

# make install


3-7. mysql 설치 확인

# ls /usr/local/mysql

# ls /usr/local/mysql/bin


3-8. mysql 세팅

- 소스파일에는 support-files 디렉토리에 설정파일 및 스크립트 파일을 제공하므로 이를 이용해서 시스템에 복사한다.


# cd support-files


 * /etc/init.d ( 쉘 스크립트 파일 )

- mysql 설정파일을 /etc/my.cnf 에 복사한다. 

- 설정내용은 수정해서 넣고 자신의 메모리에 맞는 설정파일을 넣어둔다. 

- 메모리 내용은 파일에 명시되어 있다.

# cp my-huge.cnf /etc/my.cnf


- 설정파일을 심볼릭 링크한다. (옵션)

# ln -s /etc/my.cnf /etc/mysql.conf


- 실행스크립트를 복사한다.

 - cp mysql.server /etc/init.d/mysqld

 - chmod 700 /etc/init.d/mysqld

# install -m 700 mysql.server /etc/init.d/mysqld


- 부팅시 mysql 데몬을 자동으로 실행할 수 있도록 등록하고 확인한다.

# chkconfig --add mysqld

# chkconfig --list mysqld

mysqld          0:off 1:off 2:on 3:on 4:on 5:on 6:off


- mysql 서버를 실행하는 사용자를 생성한다. 

- cmake 옵션의 경로를 맞추어 줘야 한다.

-DMYSQL_DATADIR=/usr/local/mysql/data \

- -r : 시스템 유저

- -M : 디렉토리 생성 x

- -u : UID

- -d : 홈 디렉토리

- -s : 쉘 (로그인 시 실행 할 수 있는 프로그램 )

# useradd -r -M -u 27 -d /usr/local/mysql/data -s /bin/false mysql

 * -d => 컴파일 전에 환경설정 전에 디렉토리 맞추기 


- MySQL DBMS의 실행파일들을 실행하기 위해 심볼릭링크를 생성

# ln -sf /usr/local/mysql/bin/* /usr/bin


- DataBase 초기화 작업을 한다.

- --datadir 의 경로는 cmake 옵션의 경로에 설정한 값으로 해야 한다.

- -DMYSQL_DATADIR=/usr/local/mysql/data

# /usr/local/mysql/scripts/mysql_install_db \

--user=mysql \

--basedir=/usr/local/mysql \

--datadir=/usr/local/mysql/data


- 생성된 데이터 디렉토리의 모든 파일들을 mysql 사용자의 권한으로 모두 변경한다.

- 경로는 cmake 옵션의 경로에 설정한 값으로 해야 한다.

-DMYSQL_DATADIR=/usr/local/mysql/data

# chown 700 /usr/local/mysql/data

# chown -R mysql.mysql /usr/local/mysql/data


- mysql 데몬을 실행한다.

# /etc/init.d/mysqld start

 = # service mysqld start

Starting MySQL...                                          [  OK  ]


- mysql 포트(3306)를 확인한다.

# netstat -nltp | grep 3306

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      480/mysqld  

        

- mysql 접속을 한다. 

# rm -f ~/.my.cnf 

# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.5.28 Source distribution


Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> select version();

+-----------+

| version() |

+-----------+

| 5.5.28    |

+-----------+

1 row in set (0.01 sec)


mysql> quit


- mysql 관리자(root) 비번설정 

- 사용법 :  mysqladmin -u root password 'new-password'


# mysqladmin -u root password 'ksw1234'

# mysql -u root -p1234

# vi ~/.my.cnf


-- my.cnf --

[client]

host = localhost

user = root

password = ksw1234

-- my.cnf --


- 자동 로그인 확인

# mysql   


- user table 에서 defalut 사용자를 확인한다.

mysql> select host,user,password from mysql.user;

+-------------------+------+-------------------------------------------+

| host                 | user | password                                        |

+-------------------+------+-------------------------------------------+

| localhost            | root | *C369E7BF1EBB1D0B149AF952B9E31EC36536BEFC |

| ksw.boaniyagi.com | root |                                                   |

| 127.0.0.1            | root |                                                     |

| ::1                    | root |                                                     |

| localhost           |      |                                                       |

| ksw.boaniyagi.com |      |                                                    |

+-------------------+------+-------------------------------------------+

6 rows in set (0.00 sec)


- user table 에서 비번이 없는 사용자들을 삭제한다.

mysql> delete from mysql.user where password = '';  

Query OK, 5 rows affected (0.05 sec)


- user table 에서 사용자를 확인한다.

mysql> select host,user,password from mysql.user;  

+-----------+------+-------------------------------------------+

| host        | user | password                                         |

+-----------+------+-------------------------------------------+

| localhost   | root | *C369E7BF1EBB1D0B149AF952B9E31EC36536BEFC |

+-----------+------+-------------------------------------------+

1 row in set (0.00 sec)


- db table 에서 내용을 확인한다.

mysql> select host,user,db from mysql.db;  

+------+------+---------+

| host  | user  | db        |

+------+------+---------+

| %     |         | test      |

| %     |         | test\_%|

+------+------+---------+

2 rows in set (0.00 sec)


- db table 내용을 모두 삭제한다.

mysql> delete from mysql.db ;   

Query OK, 2 rows affected (0.00 sec)


- db table 에서 내용을 확인한다.

mysql> select host,user,db from mysql.db;  

Empty set (0.00 sec)


- 변경된 권한을 적용한다.

mysql> flush privileges;   


-- 여기까지가 mysql 서버 설치 끝 --


================ -- 일반 유저를 생성할때 TIP -- ================ 

- mysql 에서 사용자를 생성하기 위한 두 가지 방법

- 첫번째 : insert 를 이용하는 방법

- 두번째 : grant 문을 이용해서 생성하는 방법

- 사용자를 생성할때는 3가지가 쌍으로 가야된다. 

- 1. user table 에 사용자에 대한 권한 정보를 넣는다.

- 2. db   table 에 DB에 대한 권한 정보를 넣는다.

- 3. 사용자가 사용할 수 있는 DB를 생성한다.


mysql> insert into mysql.user (host,user,password,ssl_type,ssl_cipher,x509_issuer,x509_subject) 

    -> values ('localhost','ictsec', password('12345'),'','','',''); 

mysql> insert into mysql.db values ('localhost','ictsec','ictsec',

    -> 'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');

mysql> create database ictsec;

mysql> flush privileges;

mysql> select * from mysql.user \G

================ -- 일반 유저를 생성할때 TIP -- ================ 


########################

## 4. apache 설치하기 ##

########################


공식 다운로드 사이트 : http://httpd.apache.org/

설치 파일명 : httpd-2.4.10.tar.gz 

MD5: 9b5f9342f73a6b1ad4e8c4b0f3f5a159 


설치 버전 : 2.4.10

설치 디렉토리 : /usr/local/apache

웹루트 디렉토리 : /usr/local/apache/htdocs

기본언어셋 : utf-8

웹서버 포트 : 80

설정파일 : /etc/httpd.conf -> /usr/local/apache/conf/httpd.conf


- 아파치 컴파일 방식은 static 방식과 DSO 방식으로 나뉘어지고 prefork, worker 방식으로 컴파일할 수 있다.

- 여기서는 prefork 방식으로 컴파일한다.

- prefork와 worker 는 apache를 설치한 후 httpd -l로 확인할 수 있다.



-- apache 설치 순서 --

4-0. apache 필요 패키지 다운로드

4-1. apache 필요 패키지 설치

4-2. apache 소스 다운로드

4-3. apr 설치

4-4. apr-util 설치

4-5. apache 압축해제

4-6. apache 환경설정

4-7. apache 컴파일

4-8. apache 설치

4-9. apache 설치 확인

4-a. apache 세팅

-- apache 설치 순서 --


4-0. apache 필요 패키지 다운로드

- 아래 파일은 공식 사이트에서 링크를 확인한다.

# wget http://apache.mirror.cdnetworks.com//httpd/httpd-2.4.10.tar.gz

# wget http://archive.apache.org/dist/apr/apr-1.5.1.tar.gz  

# wget http://archive.apache.org/dist/apr/apr-util-1.5.3.tar.gz 

# wget http://www.openssl.org/source/openssl-1.0.1i.tar.gz 


4-1. apache 필요 패키지 설치


- pcre 설치 

- pcre 는  펄 호환 정규 표현식 라이브러리며 APM 소스 설치 시 반드시 필요하다.

- pcre-devel 패키지는 소스로 설치할 때 불필요하므로  패키지가 시스템에 설치되었다면 삭제한다.

# wget --no-check-certificat http://sourceforge.net/projects/pcre/files/latest/download?source=files

# yum  remove pcre-devel  


# tar xvjf pcre-8.35.tar.bz2

# cd pcre-8.35

# ./configure

# make

# make install

# ls /usr/local/bin

... pcre-config  pcregrep  pcretest


- zlib는 데이터 전송 압축 라이브러리며 없으면 openssl 쪽에서 에러가 발생하므로 설치한다.

- 공식 사이트에서 최신 소스를 가져와도 되지만 여기서는 yum 으로 한다.

# yum -y install zlib zlib-devel  


- openssl 설치

- 시스템에 설치되어 있지만 최신버전을 가져다 설치한다.

# tar xzf openssl-1.0.1i.tar.gz 

# cd openssl-1.0.1i

# ./config \

 --prefix=/usr/local/openssl \

 --openssldir=/usr/local/openssl \

 threads  zlib  shared 

# make 

# make test

# make install

# vi /etc/ld.so.conf


-- /etc/ld.so.conf --

/usr/local/openssl/lib

-- /etc/ld.so.conf --

 * /etc/ld.so.conf 에 넣기

  - 공유 라이브러리 인식 시키는 방법


- ldconfig 를 실행해 공유라이브러리를 인식시킨다.

# ldconfig


- 아래 내용이 출력되면 된다.

# strings  /etc/ld.so.cache | grep openssl

/usr/local/openssl/lib/libssl.so.1.0.0

/usr/local/openssl/lib/libssl.so

libgnutls-openssl.so.13

/usr/lib/libgnutls-openssl.so.13

/usr/local/openssl/lib/libcrypto.so.1.0.0

/usr/local/openssl/lib/libcrypto.so



4-2. apache 소스 다운로드

http://apache.org -> HTTP Server (http://httpd.apache.org/)

Apache httpd 2.4.10 Released  -> Download 클릭 -> Source: httpd-2.4.10.tar.gz 클릭


4-3. apr 설치

- arp(Apache Portable Runtime) 

- apr 공식사이트 : http://apr.apache.org/

- http://apache.mirror.cdnetworks.com//apr/apr-1.5.1.tar.gz


# tar xzf apr-1.5.1.tar.gz 

# cd apr-1.5.1

# ./configure 

# make 

# make install

# vi /etc/ld.so.conf

-- /etc/ld.so.conf --

/usr/local/openssl/lib

/usr/local/apr/lib

-- /etc/ld.so.conf --

# ldconfig


- 설치가 완료되면 apr 이 설치된 디렉토리를 확인한다. 

# ls /usr/local/apr/             


4-4. apr-util 설치

# tar xzf apr-util-1.5.3.tar.gz  

# cd apr-util-1.5.3

# ./configure --with-apr=/usr/local/apr 

# make 

# make install


# ldconfig


4-5. apache 압축해제

# tar xzf httpd-2.4.10.tar.gz

# cd httpd-2.4.10



4-6. apache 환경설정

# ./configure \

 --prefix=/usr/local/apache \

 --enable-mods-shared=all \

 --enable-module=so \

 --with-mpm=prefork \

 --with-apr=/usr/local/apr \

 --with-apr-util=/usr/local/apr \

 --enable-module=ssl \

 --with-ssl=/usr/local/openssl \

 --enable-ssl 


4-7. apache 컴파일

# make 


4-8. apache 설치

# make install


4-9. apache 설치 확인

# tree /usr/local/apache | more


- (mod_so) 모듈을 확인한다.

# /usr/local/apache/bin/httpd -l                


4-a. apache 세팅

- 아파치의 실행파일들을 PATH 설정된 /usr/bin 에 복사한다.

# ln -s /usr/local/apache/bin/* /usr/bin


- /etc/httpd 로 빠르게 접근하기 위해서 / yum 으로 설치할때 맞춰주기 위해서 심볼릭 링크를 건다.

# ln -s /usr/local/apache /etc/httpd


- 부팅시 활성화 시키기 위해서 심볼릭 링크를 건다.

# ln -s /usr/local/apache/bin/apachectl /etc/init.d/httpd


- 설정파일을 /etc/httpd.conf 로 심볼릭 링크를 건다. (접근하기 쉽게)

# ln -s /usr/local/apache/conf/httpd.conf /etc/


# vi /etc/init.d/httpd

-- /etc/init.d/httpd --

#!/bin/sh

# chkconfig: 2345 65 35

# description: apache web server

  :

  :

(중략)

-- /etc/init.d/httpd --


- 서비스가 정확히 등록이 되었는지 확인한다.

# chkconfig --add httpd

# chkconfig --list httpd

httpd           0:off 1:off 2:on 3:on 4:on 5:on 6:of


- 아파치 웹서버를 실행한다. (3가지 모두 동일하다)

# apachectl start   

        or 

# /etc/init.d/httpd start 

        or 

# service httpd start


- 80 번 포트를 확인한다.

# netstat -nltp  | grep 80                                


- 여기서는 임시로 세팅하는 것이므로 방화벽을 잠시 중지시킨다.

- 실무에서는 방화벽을 올리는 것이 맞는 것이다.

# iptables -F


- Host OS 의 브라우저에서 Linux 의 Guest OS 로 접속시 (httpd://192.168.56.101)

- It works! 가 출력되면 웹서버가 잘 설치된 것이다.


# ifconfig eth1

eth1      Link encap:Ethernet  HWaddr 08:00:27:37:94:FD  

          inet addr:192.168.56.102  Bcast:192.168.56.255  Mask:255.255.255.0


http://192.168.56.102/


- 샘플 페이지 생성하기

- Host OS에서 httpd://192.168.56.101/ 접속해서 Hello~ webserver 가 출력되면 성공이다.

# echo "<center> Hello~ webserver </center>" > /usr/local/apache/htdocs/index.html



############################

## 5. GD library 설치하기 ##

############################

- GD Library 란  

- Graphics 라이브러리로 선, 도형, 텍스트, 다중 색깔, 

- 이미지의 cut paste, 채우기 등의 이미지 처리기능과 이 결과를 

- 그래픽 파일로 (gif,jpeg,png) 저장하는 기능을 제공한다.


- GD 라이브러리는 소스로 설치하는 방법과 yum으로 설치하는 방법있다.

- 여기서는 yum으로 설치하는 방법을 이용한다.

# yum -y install gd gd-devel libjpeg libjpeg-devel \

giflib giflib-devel libpng libpng-devel freetype freetype-devel



#####################

## 6. php 설치하기 ##

#####################


공식 다운로드 사이트 : http://php.net/

설치 파일명 : php-5.5.15.tar.gz 

MD5: 


설치 버전 : 5.5.15

설치 디렉토리 : /usr/local/php

설정파일 : /etc/php.conf -> /usr/local/php/lib/php.ini


-- php 설치 순서 --

6-0. php 필요 패키지 설치

6-1. php 소스 다운로드

6-2. php 압축해제

6-3. php 환경설정

6-4. php 컴파일

6-5. php 테스트

6-6. php 설치

6-7. php 설치 확인

6-8. php 세팅

-- php 설치 순서 --


6-0. php 필요 패키지 설치


---------------------

- libxml2-devel 설치

---------------------

- libxml2-devel 관련 패키지를 설치해야 한다.

- 설치가 안되면 configure 에서 아래와 같은 오류가 나서 configure 가 중지된다.

- onfigure: error: xml2-config not found. Please check your libxml2 installation.

# yum -y install libxml2-devel


---------------------

- curl-devel 설치

---------------------

- configure 할때 --with-curl 옵션을 주었으므로 curl-devel 관련 패키지를 설치해야 한다.

- 설치가 안되면 configure 에서 아래와 같은 오류가 나서 configure 가 중지된다.

- configure: error: Please reinstall the libcurl distribution -

-     easy.h should be in <curl-dir>/include/curl/

# yum -y install curl-devel



---------------------

- bison 설치

---------------------

다운로드 : http://www.gnu.org/software/bison 

2014.9.28 최신버전 : bison-3.0.tar.xz   


- 설치가 안되면 php-5.5.17 설치시 bison 쪽에서 에러가 발생되므로 bison을 소스로 설치했다.


-- bison 을 rpm 으로 설치하면 2.3 버전으로 설치되고  php 소스에서도 인식하지 못했다.

-- 그래서 2.3 rpm 버전을 삭제하고 bison 을 소스로 설치했다.

-- bison의 최신 버전인 bison-3.0 을 설치시 configure 쪽에서 bison 버전을 인식하지 못했다.

-- 그래서 다시 2.7 의 마지막 버전인 2.7.1 을 마이그레이션해서 설치했더니 인식을 했다.


-- 3.0 설치시 php 소스에서 인식하지 못한 메세지

-- checking for bison version... invalid

-- configure: WARNING: bison versions supported for regeneration 

-- of the Zend/PHP parsers: 2.4 2.4.1 2.4.2 2.4.3 2.5 2.5.1 2.6 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.7 (found: 2.3).


-- 2.7.x 설치시 php 소스에서 인식한 메세지

-- checking for bison... bison -y

-- checking for bison version... 2.7 (ok)


# yum remove bison-devel

# yum remove bison

# yum remove byacc-devel  <-- 이 패키지는 없다.

# rpm -ql byacc

/usr/bin/byacc

/usr/bin/yacc

/usr/share/man/man1/byacc.1.gz

/usr/share/man/man1/yacc.1.gz

# ls -l /usr/bin/byacc 

lrwxrwxrwx 1 root root 4 Sep 23 19:19 /usr/bin/byacc -> yacc


# yum remove byacc


# wget ftp://alpha.gnu.org/gnu/bison/bison-2.7.91.tar.gz


# tar xzf bison-2.7.91.tar.gz

# cd bison-2.7.91

# ./configure 

# make

# make install

# make install check


---------------------

- rec2 설치

---------------------

다운로드 : http://sourceforge.net/projects/re2c/files/re2c/0.13.7.5/


-- yum 으로는 설치가 안되서 소스로 설치했다.

-- 설치가 안되면 php-5.5.17 설치시 re2c 쪽에서 에러가 발생되므로 re2c를 소스로 설치했다.


-- re2c 가 설치가 안되었을 때 php 소스에서 인식하지 못한 메세지

-- checking for re2c... no

-- configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.


-- re2c 가 설치 후 php 소스에서 인식한 메세지

checking for re2c... re2c

checking for re2c version... 0.13.7.5 (ok)


# tar xzf re2c-0.13.7.5.tar.gz 

# cd re2c-0.13.7.5

# vi README

# ./configure 

# make

# rm -f scanner.cc 

# make install


--------------------------------------------------------------------



6-1. php 소스 다운로드

상단메뉴 의 downloads -> 클릭

Current Stable -> 클릭

kr1.php.net / ask.sarang.net 링크를 클릭하면 다운로드 된다.


- 파일이 변조여부를 체크한다. (파일의 무결성)

# md5sum php-5.5.15.tar.gz 

63b56e64e7c25b1c6dcdf778333dfa24  php-5.5.15.tar.gz


6-2. php 압축해제

# tar xzf php-5.5.15.tar.gz 

# cd php-5.5.15


6-3. php 환경설정

-- php 를 설치하기 전에 반드시 gd 라이브러리를 설치한다.

-- --enable-maintainer-zts 옵션은 Apache2.4 에 Event MPM 모델을 위해서 필요한 것이다. 

-- 만약 Apache2.4 가 Prefork 로 동작한다면 PHP를 재컴파일 해야한다.

# ./configure \

 --prefix=/usr/local/php \

 --with-mysql=/usr/local/mysql \

 --with-apxs2=/usr/local/apache/bin/apxs \

 --with-jpeg-dir \

 --with-png-dir \

 --with-curl \

 --with-zlib-dir \

 --with-gd \

 --with-freetype-dir \

 --with-iconv \

 --with-zlib \

 --with-openssl \

 --with-pcre-regex \

 --with-pear \

 --enable-sockets \

 --disable-debug \

 --enable-ftp \

 --enable-sysvsem=yes \

 --enable-sysvshm=yes \

 --enable-bcmath \

 --enable-exif \

 --enable-zip \

 --enable-gd-native-ttf \

 --enable-mbstring  

  


6-4. php 컴파일

# make 


6-5. php 테스트

# make test     


6-6. php 설치

- --prefix 에 설정된 디렉토리에 설치한다.

# make install


6-7. php 설치 확인

- --prefix 에 설정된 디렉토리를 확인한다.

- 아파치 디렉토리에 php 관련 모듈(libphp5.so) 을 확인한다.

# ls /usr/local/php

# ls /usr/local/apache/modules/libphp5.so



6-8. php 세팅

- 실행파일을 PATH 경로에 설정된 디렉토리로 심볼릭 링크를 건다.

# ln -s /usr/local/php/bin/* /usr/bin


- php 설정파일 복사

- 설정파일은 2개가 존재한다. php.ini-development, php.ini-production   

- 두 개의 내용은 약간 차이점이 있고 아래 명령어로 확인이 가능하다.

- # vimdiff php.ini-development php.ini-production   

- 여기서는 php.ini-development 로 복사한다.

- 만약 예전 버전인 php 5.2.x 대로 설치한다면 설정파일이  php.ini-dist 

- 로 되어있고 버전이 최선 버전일 경우에는 아래를 사용하면 된다.

# cp php.ini-development /usr/local/php/lib/php.ini

# ln -s /usr/local/php/lib/php.ini /etc/php.conf  


- timezone 을 설정한다.

- phpinfo() 함수에서 확인하면 에러가 발생하므로 지역을 세팅해야 된다.

# vi /etc/php.conf

     or

# vi /usr/local/php/lib/php.ini

-- /usr/local/php/lib/php.ini --

date.timezone = Asia/Seoul

-- /usr/local/php/lib/php.ini --


- 웹서버 설정파일에서 php 모듈이 올라왔는지 확인한다.

# vi /etc/httpd.conf

      or

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

-- /usr/local/apache/conf/httpd.conf --

  :

  :

LoadModule php5_module        modules/libphp5.so  <-- 확인 (163번 라인)

  :

  :

(중략) 


- index 페이지를 추가한다.

<IfModule dir_module>

  DirectoryIndex index.html index.php   <-- 추가 (263번 라인)

</IfModule>

  :

  :

(중략)


- php로 인식할 확장자를 추가한다.

- 이 밑에 아래 내용을 추가 (391번 라인)

- phps 는 php 를 소스로 인식하는 설정인데 보안상 안쓰므로 주석만 처리한다

AddType application/x-gzip .gz .tgz               

AddType application/x-httpd-php .php .html   

# AddType application/x-httpd-php-source .phps    

-- /usr/local/apache/conf/httpd.conf --


- apachectl configtest 를 이용해서 웹서버 설정파일의 구문 오류를 검사한다.

- 아래와 같은 메세지가 출력되면 두가지 중 하나를 선택한다.

- usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied


1. setup 을 해서 보안 설정을 중지시킨다.

- Firewall configuration  => 

- Security Level: Disabled

- SELinux: Disabled


2.  libphp5.so 의 권한을 변경한다.

* 해결책 

shell> restorecon -R -v /usr/local/apache/modules

* 안될경우

shell> cd /usr/local/apache/modules

shell> restorecon -v libphp5.so

shell> chcon -t texrel_shlib_t libphp5.so


 


# /etc/init.d/httpd configtest    

# /etc/init.d/httpd stop          <-- restart 하면 php 파일이 다운로드 될 수 있으므로 


- 웹서버를 재시작 한다.

# /etc/init.d/httpd start         <-- stop 하고 start 한다.


- php Test Page 를 생성한다.

- 보안상 index.html에 추가하지 않고 abcd.html에 추가한다.

# cd /usr/local/apache/htdocs  

# vi abcd.html  

<?php

phpinfo();

?>


- Guest OS 의 IP 주소를 확인한다.

# ifconfig eth1 


- Host OS에서 브라우저로 확인한다. 

http://192.168.56.101/abcd.html


- phpinfo 페이지를  확인 후 Test Page를 삭제한다. 

# rm -f abcd.html   


- php 모듈을 확인한다.

# php -m


############################

## 7. phpmyadmin 설치하기 ##

############################


- 웹에서 php의 DB를 제어하기 위해서 phpmyadmin 을 설치한다.


공식 다운로드 사이트 : http://www.phpmyadmin.net 

설치 파일명 :  phpMyAdmin-4.2.9-all-languages.zip

MD5: 



-- phpmyadmin 설치 순서 --

7-1. phpmyadmin 소스 다운로드

7-2. phpmyadmin 압축해제

7-3. phpmyadmin 설정파일 복사 및 오류 메세지 해결

7-4. phpmyadmin 로그인

-- phpmyadmin 설치 순서 --


7-1. phpmyadmin 소스 다운로드

상단메뉴 의 download -> 클릭하면 다운로드 된다.


7-2. phpmyadmin 압축해제

- 파일을 웹루트 디렉토리에 압축을 해제하고 디렉토리명을 변경한다.

- 향후 디렉토리명을  외부에서 유추할 수 없도록 어렵게 변경한다.

# cd  /usr/local/apache/htdocs/

# unzip phpMyAdmin-4.2.9-all-languages.zip

# mv phpMyAdmin-4.2.9-all-languages phpmyadmin


- Host OS에서 브라우저로 확인한다. 

- 이때 undefined function 이라고 하면 php 에서 관련 모듈을 넣고 컴파일한다. 


7-3. phpmyadmin 설정파일 복사 및 오류 메세지 해결

- 오류 메세지 해결 1 

-  샘플 파일을 복사하면 로그인시 아래 오류 문구가 없어진다.

- "이제 설정 파일은 암호화 문자열(blowfish_scret) 을 필요로 합니다" 


# cd phpmyadmin

# cp config.sample.inc.php config.inc.php


- 오류 메세지 해결 2

- 설정 파일에 $cfg['PmaNoRelation_DisableWarning'] = TRUE;  를 추가하면 오류 문구가 없어진다.

- "phpMyAdmin 설정 스토리지가 완전히 설정되지 않아, 일부 확장 기능들이 비활성화 된 상태입니다. "


# vi config.inc.php

-- config.inc.php --

  :

  :

/* Authentication type */

$cfg['PmaNoRelation_DisableWarning'] = TRUE; 

$cfg['Servers'][$i]['auth_type'] = 'cookie';

  :

  :

-- config.inc.php --



7-4. phpmyadmin 로그인

http://<SERVER IP>/phpmyadmin/



- 관련 문서는 아래 URL을 참고한다.

http://phpmyadmin.net/home_page/docs.php



##################################

## 8. mysqli 동적 모듈 설치하기 ##

##################################


-- 순서 --

1. php 소스의 mysqli 디렉토리로 이동한다.

2. phpize를 실행한다. 

3. 환경설정을 한다.

4. 컴파일을 한다. 

5. 모듈을 설치한다.

6. 설정파일을 등록한다.

7. 아파치를 재시작한다.

-- 순서 --


1. php 소스의 mysqli 디렉토리로 이동한다.

# cd 

# cd php-5.5.15/ext/mysqli


2. phpize를 실행한다. 

# ls -l /usr/local/php/bin/phpize 

-rwxr-xr-x 1 root root 4534  8월 19 16:40 /usr/local/php/bin/phpize


# /usr/local/php/bin/phpize 


3. 환경설정을 한다.

# ./configure \

--with-php-config=/usr/local/php/bin/php-config \

--with-mysqli=/usr/local/mysql/bin/mysql_config


4. 컴파일을 한다. 

# make test

# make


5. 모듈을 설치한다.

- modules 디렉토리를 만들고 모듈 파일을 복사해 준다. 


# mkdir /usr/local/php/modules 

# cp modules/mysqli.* /usr/local/php/modules


6. 설정파일을 등록한다.

- php.ini 에 아래처럼 수정하고 추가한다.

- extension_dir 의 위치는 719번이다.


# vi /usr/local/php/lib/php.ini

-- /usr/local/php/lib/php.ini --

  :

  :

;extension_dir = "./" 

extension_dir=/usr/local/php/modules

extension=mysqli.so 

  :

  :

-- /usr/local/php/lib/php.ini --


7. 아파치를 재시작한다.

# /etc/init.d/httpd restart



#############################

## 9. 제로보드 XE 설치하기 ##

#############################


- 각자 설치하기



'OS > [Linux] CentOS' 카테고리의 다른 글

[CentOS] CentOS 목차  (0) 2017.07.22
[CentOS] 15. APM 설치  (0) 2016.07.23
[CentOS] 14-2 패키지 관리 - tomcatWAS설치  (3) 2016.07.10
[CentOS] 14-1 패키지 관리 - tomcat 환경설정  (0) 2016.07.10
[CentOS] 14. 패키지 관리  (0) 2016.07.10

+ Recent posts