728x90

소스설치했던 MySQL 이 자꾸 죽는 현상이 발생해서 테스트 서버에 CentOS 6.6 을 설치하고 나서 yum -y update 를 하고 reboot 을 해서 CentOS 6.10 으로 업그레이드를 했다.


이 과정에서 sshd Port 를 22번에서 1922 로 변경했었는데 다시 22번으로 초기화되어 있더라.


CentOS 6.X 에서 yum 으로 PHP 5.6.40 버전과 MariaDB 10.3 버전을 설치하는 법을 몰라서 삽질을 엄청한 후에야 겨우 성공했다.

최근 자료는 CentOS 7.X 에 PHP 7.X 기반으로 설치하는 방법에 대해 나온다.

기존 소스를 최대한 손대지 않고 할 수 있는 방법을 찾아보니 자료를 좀 찾기가 쉽지 않았다.


순서는 이렇게 하면 된다.

1. 먼저 MariaDB 10.3 을 yum 설치한다.

2. PHP 5.6 버전을 yum 설치하면서 httpd 를 같이 설치한다.

   Apache 2.4 버전을 별도 설치하고 PHP 5.6을 설치하니까 에러가 발생해서 지우고 Apache 2.2 로 다시 설치했다.



가장 먼저 확인할 사항

##=== 설치 확인

yum list installed | grep httpd

yum list installed | grep php

yum list installed | grep mysql


기존에 설치된 yum 버전이 있다면 모두 찾아서 삭제한다.
yum remove -y 해당파일명
을 하면 삭제된다.

epel 저장소는 Fedora Project 에서 제공되는 저장소로 각종 패키지의 최신 버전을 제공하는 community 기반의 저장소이고, webtatic 저장소는 업데이트된 웹 관련 패키지들이 포함된 CentOS / RHEL 저장소다.

cd /etc/yum.repos.d/


붉은색 안에 파일은 다음과 같이 해서 추가된 파일이다.


CentOS 7에서는 기본 DB가 MySQL에서 MariaDB로 변경되어 설치가 쉬운 반면에, CentOS6에서는 레포지터리부터 추가해서 따로 설치를 해줘야한다.


1단계 : Add MariaDB Yum Repositories

cd /etc/yum.repos.d/

vi /etc/yum.repos.d/mariadb.repo

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.3/rhel6-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1


복사하여 붙여넣기하고 저장하고 빠져나온다.


2단계 – Install MariaDB Server

yum -y install MariaDB-server MariaDB-client


=== MariaDB 구동

service mysql start

service mysql stop

service mysql restart


3단계 – Secure MariaDB Install

/usr/bin/mysql_secure_installation

root 패스워드 지정한다.

이 부분에 대한 자세한 사항은 https://tecadmin.net/install-mariadb-10-centos-redhat/ 의 Step3 부분을 참조하라.


4단계 – Working with MariaDB

mysql -u root -p

지정한 root 패스워드를 입력한다.

===부팅시 자동 시작 설정

chkconfig mysql on


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

##### How to Install PHP 5.6 on CentOS 6 #####

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

Install Remi repository

이 부분이 게시글마다 약간씩 다르며, 버전업이 되어 나오는 거 같다. 아래 코드 복사하여 붙여넣기 한다.

rpm -qa | grep remi-release
rpm -qa | grep epel-release
yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum list remi-release

Install PHP 5.6.X modules : 아래 코드 복사하여 붙여넣기 한다.
yum -y --enablerepo=remi,remi-php56 install httpd php php-common php-devel php-ldap php-mbstring php-mcrypt php-mysqlnd php-sockets
yum -y --enablerepo=remi,remi-php56 install php-pecl-apc php-cli php-pear php-pdo php-pgsql php-pecl-mongo php-sqlite php-pcre php-gmp
yum -y --enablerepo=remi,remi-php56 install php-pecl-memcache php-pecl-memcached php-gd php-xml php-snmp php-libxml php-curl php-openssl

를 하고 나면 기본 설치가 모두 완료된다.

=== httpd.conf, php.ini 의 설정파일 찾기
find / -name httpd.conf
find / -name php.ini

=== httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
ServerName localhost  추가
User nobody
Group nobody

DocumentRoot "/var/www/html"
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
# 허용하지 않은 디렉토리를 액세스할 수 있으므로 가능하면 FollowSymLinks 를 삭제하는 것이 좋다.
    Options IncludesNoExec
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

=== php.ini 파일 수정
vi /etc/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

# 저장하고 나온다.

=== 부팅시 자동 시작 설정
chkconfig httpd on

=== 서비스 구동
service httpd start
service httpd stop
service httpd restart

=== 부팅시 자동시작 설정
chkconfig httpd on

# vi /etc/hosts
127.0.0.1   localhost.localdomain localhost

## 보안설정
chmod 640 /etc/httpd/conf/httpd.conf
chown root:root /etc/httpd/conf/httpd.conf
chmod 640 /etc/php.ini
chown root:root /etc/php.ini

이제 잘 설치되었는지 여부를 확인하기 위한 과정이다.
vi /var/www/html/info.php
<?php
phpinfo();
?>
저장하고 나온다.

## 아래와 같은 에러메시지가 나올 때 조치 방안
Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
# 실행중인 프로세스 강제 종료
ps ax | grep httpd | awk '{print $1}' | xargs kill
killall -9 httpd
netstat -ltnp | grep ':80'
service httpd start

방화벽에서 포트 오픈에 대한 자료는 여기서는 생략한다.

http://ip_address/info.php 를 실행한다.


와 같이 나오면 정상적으로 설치된 거다.


소스 설치와 달리 MySQL/MariaDB 와의 연결은 알아서 해주나보다. phpinfo()에서는 MySQL 부분이 버전이 낮게 보이는데 사용해보니 DB와의 연결은 잘 된다.

MariaDB 는 MySQL 명령어와 동일한 명령어를 사용하므로 사용방법은 MySQL 사용한다고 보면 된다. 

PHP 파일의 소스코드도 수정없이 동작된다.


Apache 환경설정 방법

- http://link2me.tistory.com/426 참조하면 도움된다.

- http://link2me.tistory.com/999 날짜별로 로그기록 남기기


PHP.ini 설정 게시글

http://link2me.tistory.com/967

http://link2me.tistory.com/986 PHP 보안설정



출처: http://link2me.tistory.com/797 [소소한 일상 및 업무TIP 다루기]
Apache 환경설정 방법
- http://link2me.tistory.com/426 참조하면 도움된다.
- http://link2me.tistory.com/999 날짜별로 로그기록 남기기


PHP.ini 설정 게시글
http://link2me.tistory.com/986 PHP 보안설정

참고한 사이트



블로그 이미지

Link2Me

,