CentOS

APM source 설치 (A 2.4 / P 5.6 / M 5.7) on CentOS

1. 개요

APM source 설치
Apache : 2.4 / PHP : 5.6 / MYSQL 5.7

– httpd 2.4

wget http://mirror.navercorp.com/apache//httpd/httpd-2.4.29.tar.gz

– php 5.6

wget http://kr1.php.net/get/php-5.6.32.tar.gz/from/this/mirror -O php-5.6.32.tar.gz

– mysql 5.7

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz –no-check-certificate

 

yum install expat-devel ncurses ncurses-devel openssl-devel libxml2-devel curl-devel gdbm-devel libc-client-devel krb5-devel libjpeg-devel bzip2-devel openssl-devel libpng-devel freetype-devel ncurses-devel libc-client-devel gdbm-devel pcre-devel gcc enchant-devel libXpm-devel libicu-devel openldap-devel readline-devel libtidy libtidy-devel libxslt-devel
yum install gcc gcc-c++ cmake

* 모든 소스는 /usr/local/src 하단에 받아 설치 합니다.

 


:: Mysql (mysql 5.5 이상 버전 컴파일 설치는 아래에 간략하게 작성)


1. 소스 다운로드 파일 압축 풀기 및 이동

cd /usr/local/src
tar zxvf mysql-5.7.20.tar.gz
cd /usr/local/mysql-5.7.20

#- boost 라이브러리 설치
cd /usr/local/src
wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz –no-check-certificate
tar zxvf boost_1_59_0.tar.gz

2. Mysql 컴파일

cd /usr/local/src/mysql-5.7.20
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.20 \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_DATADIR=/home/mysql_data \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=../boost_1_59_0 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

make -j `grep processor /proc/cpuinfo | wc -l`
make install

3. MYSQL 버전명 심볼릭 링크 설정

ln -s /usr/local/mysql-5.7.20 /usr/local/mysql

4. MYSQL 계정 생성

useradd -d /home/mysql_data -s /dev/null mysql

*****. MYSQL DB 생성
cd /usr/local/mysql/bin
./mysqld –initialize –user=mysql –basedir=/usr/local/mysql-5.7.20/ –datadir=/home/mysql_data

5. MYSQL DB를 MYSQL에게 소유권 부여

mkdir /home/mysql_data
chown -R mysql.mysql /home/mysql_data

6. MYSQL 라이브러리 등록 및 로드

echo “/usr/local/mysql/lib/mysql” >> /etc/ld.so.conf && ldconfig

7. 시스템 환경 변수에 추가 하고 reload

view /etc/profile ; 추가
PATH=$PATH:/usr/local/mysql/bin:/usr/local/apache/bin:/usr/local/php/bin

useradd mysql -M -s /dev/null
cp -a /usr/local/mysql-5.7.20/support-files/mysql.server /etc/init.d/mysqld

ln -s /usr/local/mysql-5.7.20 /usr/local/mysql
cd /usr/local/mysql/
ln -s lib lib64
chkconfig –add mysqld

8. MYSQL CONFIUGRE 파일 복사

cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf
vi /etc/my.cnf

[mysqld]
datadir=/data/mysql-data/
skip-character-set-client-handshake
skip-name-resolve

character-set-server=utf8
collation-server=utf8_general_ci
init_connect=set collation_connection=utf8_general_ci
init_connect=set names utf8

9. MYSQL 시작

/etc/init.d/mysqld start

10. ROOT 패스워드 지정

/usr/local/mysql/bin/mysqladmin -u root password ‘고객명1!’

11. 접근 확인 테스트

mysql -u root -p

12. 자동 등록 추가 및 확인

chkconfig –add mysqld
chkconfig –level 3 mysqld on
chkconfig –list | grep mysqld

13 MYSQL 5.5 이상 컴파일 간략 요약

apache 2.4 이상 mysql 5.5 이상 설치시엔 패키지 설치 필요 .. 에러 나지 않게 미리 아래 패키지 설치 한 뒤에 진행 하시면 되겠습니다.

yum install pcre-devel lua-devel libxml2-devel ncurses-devel zlib zlib-devel curl openssl openssl-devel libtermcap-devel libc-client-devel bison gcc g++ cpp gcc-c++ freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl-devel flex php-mbstring libexif-devel cmake bzip2-devel make libmcrypt libmcrypt-devel libtool gdbm-devel cmake

 

***** 컴파일 시 에러 대처

※ TestBigEndian 관련 에러 날 경우..

소스 압축푼 디렉토리의 configure.make 파일을 열어 아래 두 라인 찾아 주석 처리

INCLUDE(TestBigEndian)

TEST_BIG_ENDIAN(WORDS_BIGENDIAN)

상기 구문 주석 처리한 end if 문 끝에 아래 구문 추가

SET(WORDS_BIGENDIAN FALSE)

MYSQL-DATADIR 은 누리의 경우 /home/mysql-data 호스트센터의 경우 /db 파티션에 지정 합니다.

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_DATADIR=/home/mysql-data

 

make

make install

 

나머지 구성 진행 등은 이전 mysql과 같습니다.

[client] 하단에 아래 라인 추가
default-character-set=utf8
[mysqld] 하단에 아래 라인 추가
datadir=/데이터디렉토리

# 5.5 에서는 server 캐릭터 셋이 아래와 같이 바뀜

character-set-server=euckr
init_connect="set names euckr"
character-set-client-handshake=false
skip-name-resolve

DB생성

useradd -s /bin/bash mysql

/usr/local/mysql/scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/데이터디렉토리

chown -R mysql 데이터디렉토리경로

* bin/mysqld –initalize


:: Apache (2.4버전 이후 는 하단에 별도 간략하게 입력 해 둠)


아파치 2.0 / 2.4 버전대

기본 동시접속자수는 최대 256명이며 더 늘이기 위해서는 컴파일 초기 원본 소스 수정후 컴파일이 필요함.

압축 푼 경로 server/mpm/prefork/prefork.c 파일에서

#define DEFAULT_SERVER_LIMIT 256 // 원하는 최대 접속자를 입력한다. (1024로 셋팅)
위에서 숫자 부분을 적당하게 늘려주고

압축 푼 경로 /server/mpm/worker/worker.c 파일에서 아래 부분의 숫자 부분을 적당하게 늘려준다.
#define DEFAULT_SERVER_LIMIT 16 // 아래 계산법 참고 (기본이 1024이므로 터치 할 필요 없음)

예를 들어 prefork.c 파일에서 1280으로 늘려주었다면, worker.c 파일은 20으로 늘려주는데, 그 이유는 아래와 같다.

worker 방식은 기본적으로 16개의 child process와 그 안에 64개의 thread를 생성가능하므로, 16*64 = 1024가 된다. 따라서 prefork.c 파일에서 1280으로 늘려주게 되면, worker.c는 1280/64 = 20이 되므로 20으로 수정해 줘야 똑같이 1280명의 동시접속자가 가능하게 된다.

 


설치 진행

1. 압축풀기 및 이동

cd /usr/local/src
tar zxvf httpd-버전.tar.gz
cd httpd-버전

2. 소스 컴파일

./configure –prefix=/usr/local/apache –enable-mods-shared=all –enable-ssl –with-ssl

make
make install

apache 2.4 에서 사용 –enable-mpms-shared=all 옵션이 event, worker, prefork conf 파일수정으로 사용가능.
./configure –prefix=/usr/local/http –enable-mods-shared=all –enable-ssl –with-ssl –enable-mpms-shared=all

./configure –prefix=/usr/local/apache –enable-mods-shared=all –enable-ssl –with-ssl –enable-mpms-shared=all

3. 컴파일 경로 심볼링 링크로 apache 연결

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

4. 아파치 자동 스크립트 등록

* 소스 컴파일의 경우 apachectl 파일에 chkconfig 부분과 description 부분의 내용이 없어서 chkconfig 에서 추가가 진행이 안됩니다.

vi /usr/local/apache/bin/apachectl

# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||
# --------------------                              --------------------
#
# chkconfig: 2345 90 90 <-- 이부분 추가
# description: init file for Apache server daemon <-- 이부분 추가
# the path to your httpd binary, including options if necessary
HTTPD='/usr/local/apache/bin/httpd'

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

/etc/init.d/httpd start

5. httpd.conf 수정

vi /usr/local/apache-버전명/conf/httpd.conf

httpd.conf 맨 하단에 추가 (UTF-8이면 UTF-8 , EUC-KR이면 EUC-KR로 입력)

AddDefaultCharset UTF-8

vi /usr/local/apache2/conf/extra/httpd-autoindex.conf

# IndexIgnore 옵션이 없으면 추가 (2.2이상이면 있을 것임) 있으면 # 주석 처리 하고 아래와 같이 추가
IndexIgnore *

vi /usr/local/apache-버전명/conf/extra/httpd-mpm.conf

prefork.c 부분의 설정에서 MaxClient , ServerLimit 수정 및 추가

<IfModule mpm_worker_module>
    StartServers          2
    MaxClients         1024 <--
    ServerLimit        1024 <--
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild
나머지 내용 생략...

6. 아파치 자동 시작 등록 및 등록 확인

chkconfig –add httpd
chkconfig –level 3 httpd on
chkconfig –list httpd | grep httpd

7. apache 2.4 버전 컴파일 간략히

apache 2.3 버전 이상 부터 apr 1.4버전 이상이 필요 하여 선행 컴파일 작업이 필요 합니다.
apr 파일도 apache.org에서 다운로드 찾아 다운 로드 합니다.

 


my start


wget http://mirror.apache-kr.org/apr/apr-1.6.3.tar.gz
wget http://mirror.apache-kr.org/apr/apr-util-1.6.1.tar.gz

tar zxvf apr-1.6.3.tar.gz
tar zxvf apr-util-1.6.1.tar.gz

cd apr-1.6.3
./configure
make
make install

cd ../apr-util-1.6.1
./configure –with-apr=/usr/local/apr
make
make install

mv apr-1.6.3 /usr/local/src/httpd-2.4.29/srclib/apr
mv apr-util-1.6.1 /usr/local/src/httpd-2.4.29/srclib/apr-util

cd /usr/local/src/httpd-2.4.29
./configure -prefix=/usr/local/apache –enable-modules=all -with-included-apr –enable-rewrite –enable-ssl
make
make install

vi /usr/local/apache/bin/apachectl ; 추가

# chkconfig: 2345 90 90

# description: Apache daemon

vi /usr/local/apache/conf/httpd.conf ; 주석 해제

ServerName localhost

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

/etc/init.d/httpd start

chkconfig httpd on


my end


 

혹 64bit OS에서 libm.a , libm.so , libexpat.so 부분에서 오류 날 경우 아래와 같이 심볼릭 링크로 잡고 컴파일 진행 합니다.

ln -s /usr/lib64/libm.a /usr/lib/libm.a
ln -s /usr/lib64/libm.so /usr/lib/libm.so
ln -s /usr/lib64/libexpat.so /usr/lib/libexpat.so


::PHP


1. php 다운로드 php.net

5버전 기준 4버전에서는 mysqli 옵션만 빼고 진행

tar zxvf php-버전명.tar.gz
cd php-버전명

2. 컴파일 및 make

******************************* my start

cd /usr/local/src
wget http://ftp.linux.co.kr/pub/etc/libmcrypt-2.5.7.tar.gz
tar zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make
make install
ln -s /usr/local/lib/libmcrypt.so.4 /usr/local/lib64/libmcrypt.so.4

cd /usr/local/src/php-5.6.32
./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs –with-config-file-path=/usr/local/php/etc –with-gd –with-freetype-dir –with-zlib –enable-sockets –enable-gd-native-ttf –with-png-dir –with-jpeg-dir –enable-sigchild –with-kerberos –with-gettext –enable-mbstring –enable-inline-optimization –enable-bcmath –enable-shmop –enable-calendar –enable-ftp –with-gdbm –with-iconv –enable-mbregex –with-openssl –with-curl –enable-sysvshm=yes –enable-sysvsem=yes –enable-debug=no –enable-ftp –enable-wddx –enable-exif –enable-mysqlnd –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –with-mcrypt –with-mhash
make
make install

cp /usr/local/src/php-5.6.32/php.ini-production /usr/local/php/etc/php.ini
view /usr/local/php/etc/php.ini

= send me : Good!
./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs –with-config-file-path=/usr/local/php/etc –with-gd –with-freetype-dir –with-zlib –enable-sockets –enable-gd-native-ttf –with-png-dir –with-jpeg-dir –enable-sigchild –with-kerberos –with-gettext –enable-mbstring –enable-inline-optimization –enable-bcmath –enable-shmop –enable-calendar –enable-ftp –with-gdbm –with-iconv –enable-mbregex –with-openssl –with-curl –enable-sysvshm=yes –enable-sysvsem=yes –enable-debug=no –enable-ftp –enable-wddx –enable-exif –enable-mysqlnd –with-mysql=mysqlnd –with-mysqli=mysqlnd –with-pdo-mysql=mysqlnd –with-mcrypt –with-mhash

******************************* my end

php 5.x
./configure –prefix=/usr/local/php –with-mysql=/usr/local/mysql –with-apxs2=/usr/local/apache/bin/apxs –with-config-file-path=/usr/local/php/etc –with-gd –with-freetype-dir –with-ttf –with-zlib –enable-sockets –enable-gd-native-ttf –with-png-dir –with-jpeg-dir –with-gif-dir –enable-sigchild –with-kerberos –enable-magic-quotes –with-gettext –enable-mbstring –enable-inline-optimization –enable-bcmath –enable-shmop –enable-calendar –enable-ftp –with-gdbm –with-iconv –enable-mbregex –with-openssl –with-curl –enable-sysvshm=yes –enable-sysvsem=yes –enable-debug=no –enable-ftp –enable-wddx –enable-exif –with-kerberos

php 7

./configure -prefix=/usr/local/php –with-mysqli=/usr/local/mysql –with-apxs2=/usr/local/apache/bin/apxs –exec-prefix=/usr/local/php –libdir=/usr/local/php/lib –with-bz2=shared –with-zlib=shared –enable-zip=shared –enable-soap=shared –enable-intl=shared –with-mcrypt=shared –with-openssl=shared –with-curl=shared –enable-ftp=shared –enable-mysqlnd=shared –with-mysqli=shared,mysqlnd –with-mysql-sock=/home/mysql-data/mysql.sock –with-pdo-mysql=shared,mysqlnd –with-sqlite3=shared –with-pdo-sqlite=shared –enable-sockets=shared –enable-pcntl=shared –with-enchant=shared –with-gettext=shared –enable-ctype=shared –with-gd=shared –enable-exif=shared –with-xpm-dir=shared –with-jpeg-dir=shared –with-png-dir=shared –with-freetype-dir=shared –with-iconv=shared –with-xsl=shared –enable-bcmath=shared –enable-mbstring=shared –enable-simplexml=shared –enable-json=shared –enable-tokenizer=shared –with-tidy=shared –enable-dom=shared –enable-phar=shared –enable-hash –enable-session –enable-xml=shared –enable-wddx=shared –enable-opcache=shared –enable-calendar=shared –enable-fileinfo=shared –with-pcre-regex –enable-gd-native-ttf –with-ldap=shared –with-ldap-sasl –with-kerberos –with-mhash=shared –enable-shmop=shared –enable-pdo=shared –enable-dba=shared –enable-posix=shared –with-xmlrpc=shared –enable-xmlreader=shared –enable-xmlwriter=shared –with-layout=GNU –with-config-file-path=/usr/local/php/etc –with-config-file-scan-dir=/usr/local/php/etc/php.d

 

. 컴파일시 오류 관련

wget http://ftp.linux.co.kr/pub/etc/libmcrypt-2.5.7.tar.gz

tar zxvfp libmcrypt-2.5.7.tar.gz

cd libmcrypt-2.5.7

./configure && make && make install

* 혹 mysqli 컴파일시 오류 나면 경로 등록 해서 컴파일 –with-mysqli=/usr/local/mysql-버전/bin/mysql_config

* 64bit에서 컴파일 시 libjpeg , libpng, libltdl 설치 해도 오류가 나는 경우 심볼릭으로 연결
ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
ln -s /usr/lib64/libpng.so /usr/lib/libpng.so
ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so

make
make install

make 에서 에러나거나 잘못 설치 시 소스 디렉토리에서 make clean , make distclean

3. php.ini 파일 복사 및 수정

cp /usr/local/src/php-버전/php.ini-dist /usr/local/php/etc/php.ini

view /usr/local/php/etc/php.ini

# Sql Injection 과 같은 공격을 막는데 도움이 된다. GET/POST/Cookie 의 입력 데이터에 관해서 특수 문자를 이스케이프 Get 방식으로 입력되는”..”는 일반적으로 필터링 하도록 설계되고 있다. 쉘에는 “.\./”는 “..”과 동일하게 간주된다.
magic_quotes_gpc = Off -> On으로 수정

# post(변수값이 숨겨져서 전송되는 방식) 전달,get(전송시 자료와 변수이름이 보이는 방식(url이보임), 파일 업로드 등 입력 데이터를 받아들이는 최대 시간을 초단위로 설정하는것)
max_execution_time = 30 -> max_execution_time = 60

# php가사용할수있는 최대메모리양
memory_limit = 8M -> memory_limit = 128M

# OFF일경우 $user // @extract($usr) 처리하면 가능 , 5.3버전 부터는 사용 불가능함 사라진 옵션
register_globals = Off -> register_globals = On

# 긴 형태의 PHP 예약 변수 배열을 비활성화할 수 있게 하는 설정.PHP4.2 버전부터 기본값이 Off On으로 변경지 외부변수를 전역변수로 등록가능하다 $id를 URL http://www.example.com/foo.php?id=42 처럼 사용가능
register_long_arrays = Off -> On으로 수정

# 업로드파일사이즈세한
upload_max_filesize = 2M -> 변경 없음

# 외부사이트의 파일을 호출할수없게

allow_url_fopen = Off

short_open_tag = On 부분을 Offf로 변경 하도록 합니다.

4. httpd 파일 수정 **************************************

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

1) libphp5.so 모듈 있는지 확인

# AddType 들어 있는 구간에 아래 내용 추가

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

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

# DirectoryIndex 부분 추가

DirectoryIndex index.html -> DirectoryIndex index.php index.html index.htm 추가 수정

아파치 재시작 하여 적용

/usr/local/apache-버전/bin/apachectl restart

5. phpinfo 페이지 구성

vi /usr/local/apache-버전/htdocs/info.php

<?php phpinfo (); ?>

Back To Top