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(); ?>
|