728x90

아래 코드는 소스 설치를 위해서 만들어서 사용했던 스크립트 파일이다.

CentOS 버전 업데이트 방법
yum update

# IP주소 설정정보 확인
ifconfig

# 아이피,서브넷 마스크,(게이트웨이)
cat /etc/sysconfig/network-scripts/ifcfg-eth0

# 컴퓨터이름,(게이트웨이)
cat /etc/sysconfig/network

# DNS를 위한 네임서버를 지정
cat /etc/resolv.conf
cat /etc/hosts

# 네트워크 살았는지 죽었는지 테스트
ping 168.126.63.1

== 설정 작업
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:1A:64:98:AF:12
ONBOOT=yes
NETMASK=255.255.255.64
IPADDR=100.100.67.101
GATEWAY=100.100.67.65
TYPE=Ethernet
DNS1=168.126.63.1
DNS2=168.126.63.2

# 네트워크 재시작
service network restart

=================================
# httpd 데몬 확인
ps -ef | grep httpd
# MySQL 데몬 확인
ps -ef | grep mysql

# 아파치(Apache) 시작
/etc/init.d/httpd start
/etc/init.d/httpd stop

# MySQL 시작
/etc/init.d/mysqld start
/etc/init.d/mysqld stop

=================================
# RPM이 설치 되어 있는지 확인
rpm -qa httpd php mysql
rpm -qa | grep http
rpm -qa | grep mysql
rpm -qa | grep php

# 기존 패키지 삭제
yum remove -y httpd mysql php

# 설치된 것이 제대로 제거되었는지 확인
rpm -qa httpd php mysql
rpm -qa | grep http
rpm -qa | grep mysql
rpm -qa | grep php

# 제거되지 않고 남아 있는 것이 있다면 rpm -e --nodeps (의존성에 개의치 않고 삭제) 를 붙여준다.
rpm -e --nodeps jakarta-commons-httpclient-3.0-7jpp.4.el5_10
rpm -e --nodeps php-cli-5.1.6-45.el5_11
rpm -e --nodeps php-common-5.1.6-45.el5_11

전부 지워졌는지 확인하고 나서 APM 소스 설치에 들어간다.

# 모든 웹서버 데몬 죽이기
killall httpd

# 기존 패키지 stop
/etc/init.d/mysqld stop

# MySQL 데몬 확인
ps -ef | grep mysql
# 구동중인 프로세스 죽이기
kill -9 프로세스번호

=========================================================
yum install -y make gcc g++ gcc-c++ autoconf automake libtool pkgconfig findutils oepnssl openssl-devel
yum install -y openldap-devel pcre-devel libxml2-devel lua-devel curl curl-devel libcurl-devel flex
yum install -y zlib zlib-devel cpp perl bison freetype freetype-devel freetype-utils
yum install -y ncurses-devel libtermcap-devel bzip2-devel
yum install -y libjpeg libjpeg-devel libjpeg-turbo-devel gd gd-devel gdbm-devel php-mbstring libexif-devel
yum install -y libmcrypt libmcrypt-devel libvpx libvpx-devel libXpm libXpm-devel icu libicu libicu-devel
yum install -y t1lib t1lib-devel gmp-devel mhash* gettext gettext-devel libtidy libtidy-devel libxslt libxslt-devel
yum install -y libedit-devel libc-client libc-client-devel pam-devel readline-devel libpng libpng-devel krb5-devel db4-devel expat*
yum install -y xml*
yum install -y gd*
yum install -y pango*
yum install -y php-devel phpize
yum install -y net-snmp net-snmp-utils
=============================================

# 설치할 디렉토리 만들기
cd /usr/local/
mkdir APM

#################### MySQL 소스 설치 #################
# cmake 설치
https://src.fedoraproject.org/lookaside/extras/cmake/ 적정버전을 다운로드 한다.
버전이 너무 높아도 설치가 안된다.
# 1. cmake 압축 풀고 설치 (기존 설치된 것 있으면 지우고 자동 재설치)
cd /usr/local/APM/
rm -rf cmake-2.8.12/
tar -xzf cmake-2.8.9.tar.gz
cd cmake-2.8.9
./bootstrap
make && make install

https://src.fedoraproject.org/lookaside/extras/community-mysql/ 에서 최신버전을 구한다.
# 2. mysql 설치
cd /usr/local/APM/
rm -rf mysql-5.6.40/
tar -xvzf mysql-5.6.40.tar.gz
cd mysql-5.6.40
cmake \
 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_EXTRA_CHARSETS=all \
 -DENABLED_LOCAL_INFILE=1 \
 -DMYSQL_DATADIR=/usr/local/mysql/data \
 -DMYSQL_USER=mysql \
 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
 -DSYSCONFIGDIR=/etc \
 -DMYSQL_TCP_PORT=3306

make && make install

=== PATH 추가 ===
## /root 디렉토리로 이동
cd
vi .bash_profile
# PATH 경로에 추가
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
저장후
source .bash_profile

cd /usr/local/mysql/
# 시스템에 mysql 그룹 생성
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/local/mysql
# mysql 설치 디렉토리에 대한 mysql 권한 부여

# mysql 설정 파일 복사 (반드시 복사해야 정상적으로 처리됨)
cd support-files 한 다음 ll 해서 파일명 확인 필요
#cp support-files/my-medium.cnf /etc/my.cnf
cd ..
cp support-files/my-default.cnf /etc/my.cnf

# 기본 DB 생성
./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data


# 시스템이 재부팅되어도 mysql 이 자동 실행되도록 설정
# 기존 설치된 파일이 있으면 overwrite 하면 됨
cp support-files/mysql.server /etc/init.d/mysqld

vi /etc/init.d/mysqld
datadir=/usr/local/mysql/data
로 변경하고 저장 (데이터가 저장되는 기본 디렉토리)

# 등록이 잘 되었는지 확인(자동시작)
chkconfig --add mysqld
#chkconfig mysql on -- 나중에 추가했음
chkconfig --list | grep mysqld

# MySQL 서버와 프로그램을 연결해 줄 소켓을 링크 파일로 생성한다.
ln -s /var/lib/mysql/mysql.sock /usr/local/mysql/mysql.socket

==== MySQL 구동
/etc/init.d/mysqld start

MYSQL root 암호 설정
mysql -uroot -p
password: 그냥 엔터키 (패스워드가 설정되지 않았을 때, 설정되어 있으면 접속 불가)
use mysql;
update user set password=password('암호') where user='root';
flush privileges;
select host, user, password from user;
quit

################################################################
=========== Apache 소스 설치 ===============
# https://apr.apache.org/download.cgi 에서 apr-1.5.2.tar.gz / apr-util-1.5.4.tar.gz 파일 다운로드
3. 아파치 설치
cd /usr/local/APM/
rm -rf apr-1.5.2/
#wget http://mirror.apache-kr.org/apr/apr-1.5.2.tar.gz
tar -xvzf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install

cd /usr/local/APM/
rm -rf apr-util-1.5.4/
#wget http://mirror.apache-kr.org/apr/apr-util-1.5.4.tar.gz
tar -xvzf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/aprutil --with-apr=/usr/local/apr/ --with-openssl
make && make install

# pcre(Perl Compatible Regular Expressions)
https://sourceforge.net/projects/pcre/ 에서 최신버전 다운로드 가능하나 버전에 맞는 걸 설치해야 한다.

cd /usr/local/APM/
rm -rf pcre-8.38/
#wget http://downloads.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz
tar -xvzf pcre-8.38.tar.gz
cd pcre-8.38
./configure --prefix=/usr/local/pcre
make && make install


https://httpd.apache.org/download.cgi 에서 최신버전 다운로드 또는 아래 버전 다운로드
https://www.icewalkers.com/linux/software/58450/Apache-Server.html 에서 맞는 버전 다운로드
cd /usr/local/APM/
rm -rf httpd-2.4.25/
#wget http://mirror.apache-kr.org/httpd/httpd-2.4.25.tar.gz
tar -xvzf httpd-2.4.25.tar.gz
cd httpd-2.4.25
./configure \
 --prefix=/usr/local/apache \
 --enable-module=so \
 --enable-mods-shared=most \
 --enable-maintainer-mode \
 --enable-deflate \
 --enable-headers \
 --enable-proxy \
 --enable-proxy-http \
 --enable-proxy-ajp \
 --enable-proxy-balance
 --enable-ssl \
 --enable-rewrite-all \
 --with-apr=/usr/local/apr \
 --with-apr-util=/usr/local/aprutil/ \
 --with-pcre=/usr/local/pcre
make && make install

# Uninstall Apache on a CentOS / Red Hat Enterprise Linux (RHEL)
yum erase httpd httpd-tools apr apr-util

컴파일 실수가 발생하면, 해당 디렉토리에서 바로 make distclean 으로 삭제한다.
그리고 나서 다시 실행한다.

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

# 리부팅시 아파치 프로세스를 자동으로 띄운다
cd /usr/local/APM/
ln -s /init.d/httpd /etc/rc0.d/K90httpd
ln -s /init.d/httpd /etc/rc3.d/S89httpd
ln -s /init.d/httpd /etc/rc5.d/S89httpd

vi /etc/init.d/httpd
둘째줄에서 i 를 눌러 Insert 모드로 변경한 다음에 아래 5줄을 복사하여 붙여넣기하여 삽입하고 저장
# 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

cd /usr/local/APM/httpd-2.4.25
chkconfig --add httpd
chkconfig --list httpd
chkconfig --level 2345 httpd on

vi /usr/local/apache/conf/httpd.conf
User daemon 과 Group daemon 라인을 찾아서 daemon 대신에 nobody 로 변경
#ServerName www.example.com:80 아래줄에 추가
ServerName localhost
#처럼 해당 서버주소이름으로 변경. 도메인이 있으면 도메인으로 변경처리

# Options Indexes FollowSymLinks 에서 Indexes 제거해야 디렉토리 경로 보이는 것 방지됨
# 그리고 아래처럼 변경해줌
DocumentRoot "/usr/local/apache/htdocs"
<Directory "/usr/local/apache/htdocs">
    Options IncludesNoExec
    AllowOverride None
    Order deny,allow
    Allow from all
    Require all granted
</Directory>

아파치(Apache) 시작
/etc/init.d/httpd start

http://100.100.67.101/ --> Web browser 에서 It works! 나오면 성공적인 설치되었다는 표시

----It works 화면이 안될때 오류사항 해결 ------
/etc/sysconfig/iptables 에서 80포트 방화벽 해제

#############################
======= PHP 소스 설치 =======
4. PHP 설치
cd /usr/local/APM/
rm -rf libiconv-1.16/
tar -xvzf libiconv-1.16.tar.gz
cd libiconv-1.16
./configure --prefix=/usr/local/iconv
make && make install

cd /usr/local/APM/
tar -xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --prefix=/usr/local/
make && make install

# https://www.php.net/releases/index.php 에서 php-5.6.40.tar.gz 다운로드

# \ 다음에 공백이 있으면 에러 발생하므로 주의한다.

cd /usr/local/APM/
tar -xvzf php-5.6.40.tar.gz
cd php-5.6.40
./configure --prefix=/usr/local/php \
 --with-config-file-path=/usr/local/apache/conf \
 --with-apxs2=/usr/local/apache/bin/apxs \
 --with-mysql=/usr/local/mysql \
 --with-mysqli=/usr/local/mysql/bin/mysql_config \
 --with-pdo-mysql=shared,/usr/local/mysql \
 --enable-mysqlnd \
 --with-mysql=mysqlnd \
 --with-mysqli=mysqlnd \
 --with-pdo-mysql=mysqlnd \
 --with-iconv=/usr/local/iconv \
 --with-curl=/usr/lib \
 --enable-mod-charset \
 --enable-sigchild \
 --with-libxml-dir \
 --with-openssl \
 --with-mhash \
 --with-mcrypt \
 --with-gd \
 --with-zlib \
 --with-zlib-dir \
 --with-bz2 \
 --with-gdbm \
 --with-freetype-dir=/usr/local/lib \
 --with-jpeg-dir=/usr/local/php \
 --with-png-dir \
 --with-gettext \
 --with-kerberos \
 --with-mcrypt=/usr/local/ \
 --enable-mbstring \
 --with-regex=php \
 --enable-sockets \
 --enable-calendar \
 --enable-dba \
 --enable-exif \
 --enable-ftp \
 --enable-sysvmsg \
 --enable-sysvsem \
 --enable-sysvshm \
 --enable-wddx \
 --enable-zip

make && make install

//위 명령 실행시 아래와 같은 오류가 난다면 해결책 한 후 위에 명령 다시 실행.
해결책 : # yum -y install curl* 또는 yum -y install curl & yum -y install curl-devel

# php.ini 샘플파일을 환경설정 디렉토리에 복사
cp php.ini-development /usr/local/apache/conf/php.ini

# 아파치와 연동을 위해 추가로 httpd.conf 3군데 수정
vi /usr/local/apache/conf/httpd.conf
<IfModule dir_module>
DirectoryIndex index.html index.php   =>index.php추가
</IfModule>

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    # 그림 이미지, css, js는 기록하지 않게 처리
    SetEnvIfNoCase Request_URI "\.(jpg|png|gif|css|ico|js|swf)$" notloglist

    #CustomLog "logs/access_log" common
    #CustomLog "logs/access_log" combined
    #CustomLog "|/아파치 설치 경로/bin/rotatelogs /로그를 저장할 경로/파일명 %Y%m%d%H 86400 +540" combined
    # 날짜별로 로그기록 남기기
    CustomLog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/access_log_%Y%m%d 86400 +540" combined env=!notloglist
</IfModule>

//아래 두줄을 <IfModule mime_module>에 추가
    AddType application/x-httpd-php .php .html
    AddType application/x-httpd-php-source .phps
<IfModule mime_module>
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    #PHP Enable
    AddType application/x-httpd-php .php .html
    AddType application/x-httpd-php-source .phps
</IfModule>

# lib, inc 등을 사용할 경우에는 반드시 AddType application/x-httpd-php .php .html .inc .lib .xml 처럼 설정해줘야 한다.
# 이 부분을 빠뜨리면 웹페이지 상에서 텍스트로 인식하여 파일의 내용이 그대로 노출된다.
# 파일 확장자가 htm 으로 끝나면 이 부분도 추가를 해줘야 한다.
# 코드가 뭔지 모르게 하고 싶다면 .do 를 사용하는 것도 방법 중의 하나이다.


###### php.ini 수정사항  ###########
vi /usr/local/apache/conf/php.ini
시간설정 (앞에 ;지울것) 을 지우고 아래 내용 추가
date.timezone = "Asia/Seoul"
;<? 와 <?php 둘다 인식하게 함
short_open_tag = On
; PHP 가 받아들이는 POST data 최대 크기
;default 8M 로 되어 있음, upload_max_filesize 보다 크게 설정해야 함
post_max_size = 60M
memory_limit = 128M
upload_max_filesize = 50M

; error_reporting 세팅
;개발환경
;error_reporting  =  E_ALL
; 실제 환경, 경고메시지 출력 안됨
;error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; 해킹의 먹이감이 되므로 평소에는 Off 로 해둔다. 에러가 있을 경우 디버깅 가능하도록 에러 메세지를 출력해준다.
display_errors = Off
; 평소에는 해제(Off)한다. 개발환경에서는 디버깅 가능하도록 On하면 에러 메세지를 출력해준다.
display_startup_errors = Off
log_errors = On
; 에러 로그 파일 설정이 없으면 Apache 로그 파일에 기록된다.
; 퍼미션 설정해서 /home/user/log/php.log 과 같이 설정
;error_log = filename

; register_globals = On 으로 하면, PHP 스크립트의 변수 값을 임의로 변경할 수 있는 취약성이 있다.
; off 로 설정한 후, $_GET, $POST 를 사용해서 사용자가 전달한 값을 얻어야 한다.
register_globals = Off

;UTF-8 로 문자 인코딩 설정하기
;해당 부분을 찾아서 아래와 같이 수정
default_charset = "UTF-8"
[mbstring]
mbstring.language = Korean
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off

5. 퍼미션 설정 및 점검
# 일반계정 유출 등에 의해 파일이 변조될 수 있으므로 확인하여 조치한다.
# Apache and PHP 환경설정 파일 퍼미션 변경
# httpd.conf 파일의 경로 찾기
find / -name httpd.conf
chmod 640 /usr/local/apache/conf/httpd.conf
chown root:root /usr/local/apache/conf/httpd.conf
chmod 640 /usr/local/apache/conf/php.ini
chown root:root /usr/local/apache/conf/php.ini
# Document Root 디렉토리 설정 확인 및 변경
# Document Root 디렉토리는 755, 파일은 644로 되어 있는지 확인하고 변경
cd /usr/local/apache/htdocs
# 가능하면 home/httpd/ 하위 디렉토리에 Document Root 가 설정되도록 변경(httpd.conf 파일내에서)
chown 작성자(nobody) /usr/local/apache/htdocs
chgrp 작성자그룹 /usr/local/apache/htdocs
chmod 755 /usr/local/apache/htdocs

## httpd restart
/etc/init.d/httpd stop
/etc/init.d/httpd start
/etc/init.d/mysqld start

## 정상적으로 설치되었는지 여부 확인
http://100.100.67.101/info.php

index.php 에 아래 3줄을 추가해서 정상적으로 보이면 APM 설치는 정상적으로 잘 되었다고 보면 된다.
<?php
phpinfo();
?>


블로그 이미지

Link2Me

,