728x90



PHP 7.3을 yum 설치하고 info.php 로 확인해보면 아래와 같이 Server API 정보가 나온다.


PHP를 Apaceh + PHP + DB를 각각 분리하는 구조로 만들려면 PHP-FPM 을 설치하고 설정을 제대로 해주어야 한다.


PHP 7.3 yum 설치 방법은 간단하다.

#Step 1 – Prerequsitis
yum -y install epel-release
# Remi 저장소를 설치하고 활성화한다.
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

# yum 패키지를 관리
yum -y install yum-utils

#Step 2 – Install Apache2
yum -y install httpd

#Step 3 – Install PHP and FastCGI
# Disable repo for PHP 5.4
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php73

yum -y install --enablerepo=remi-php73 php php-cli mod_ssl php-fpm php-common php-imap php-ldap
yum -y install --enablerepo=remi-php73 php-curl php-hash php-iconv php-json php-openssl php-zip
yum -y install --enablerepo=remi-php73 php-pdo php-process php-mysqlnd php-devel php-mbstring php-mcrypt php-soap php-bcmath
yum -y install --enablerepo=remi-php73 php-pgsql php-libxml php-pear php-gd php-ssh2 php-xmlreader
yum -y install --enablerepo=remi-php73 php-xml php-xmlrpc php-pecl-apc php-sockets
yum -y install --enablerepo=remi-php73 php-tokenizer php-zlib php-gmp php-Icinga php-intl
 


설치 후에 환경 설정을 제대로 해주는 것이 PHP-FPM을 이용할 수 있는데, Virtual Host 설정 방법이 간단하지가 않더라.

보통 자료가 Apache 서버 대신 NGINX 서버로 설정하는 방법이 많이 검색된다.
Apache 서버와 PHP 서버를 분리해서 테스트를 해보고 성공하면 관련 코드를 간단하게 적어둘 생각이다.

같은 서버에서 Apache + PHP-FPM 설치하는 방법은 아래 사이트를 참조하면 해결할 수 있다.
설치 참고 사이트



https://webinformation.tistory.com/101


yum 설치하는 것을 한꺼번에 지우는 방법이다.

환경설정이 맞지 않아서 여러번 테스트 하다보니 개별 삭제가 너무 귀찮아서 한꺼번에 지우는 방법을 적어둔다.

# 설치 확인
rpm -qa | grep httpd
rpm -qa | grep php
rpm -qa | grep MariaDB

## 설치된 것 한꺼번에 지우기

rpm -qa | grep httpd >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)


rpm -qa | grep php >list
# vi list로 해서 삭제 안할 리스트는 선별 제거한다.
sudo yum -y remove $(awk '{print $1}' <list)
 



DB서버에 MariaDB 10.3 설치 방법

vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.3 CentOS repository list - created 2019-01-13 00:47 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

yum -y install MariaDB-server MariaDB-client

# mariadb 부팅 시 자동 시작 설정
systemctl enable mariadb

# mariadb 시작 (둘 중 하나 실행)
systemctl start mariadb
service mariadb start

# mariadb 상태 확인
service mariadb status

# Maria DB 보안 설정하기
mysql_secure_installation
비밀번호 입력

vi /etc/my.cnf.d/server.cnf
[mysqld]
character-set-server = utf8
collation-server     = utf8_general_ci

service mariadb restart
mysql -u root -p
status
quit

semanage port -a -t mysqld_port_t -p tcp 3306

############################
### root 패스워드 분실 복구 ####
############################
# 서비스 정지
systemctl stop mariadb

# mariadb 안전모드 실행
sudo /usr/bin/mysqld_safe --skip-grant &

# 패스워드 변경
mysql -uroot mysql
update user set password=password('변경할비밀번호') where user='root';
flush privileges;
exit;

# 접속 테스트
mysql -uroot -p
비밀번호 입력

# 서비스 재시작
systemctl restart mariadb



CentOS 6.10 기반

PHP 5.6.40 yum 설치로 PHP-FPM 설치하는 방법


https://tecadmin.net/setup-httpd-with-fastcgi-and-php-on-centos-redhat/ 에 잘 나와 있다.

이 코드에서는 Apache +PHP-FPM 을 하나의 서버에서 동작하도록 되어 있다.

Virtual Host 설정을 해주어야 하는데 /etc/httpd/conf/httpd.conf 파일의 맨 하단에 Virtual Host 설정을 추가해주면 바로 동작이 되더라.
Virtual Host 설정 안해주면 phpinfo 정보로 위와 같은 그림만 확인되고 실제 PHP개발 코드가 동작이 안되더라.

아직 서버를 분리시켜서 테스트는 못해봤다. IP주소 설정 등을 해주어야 하므로 약간의 세팅 정보 변경이 필요할 거 같다.


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

yum-config-manager --disable remi-php54
yum-config-manager --disable remi-php73
yum-config-manager --enable remi-php56

yum -y --enablerepo=remi,remi-php56 install httpd php php-cli mod_fcgid 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-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
 

# 아래를 주석처리하면 PHP-PFM이 동작된다.
vi /etc/httpd/conf.d/php.conf
#    <FilesMatch \.(php|phar)$>
#        SetHandler application/x-httpd-php
#    </FilesMatch>

vi /var/www/cgi-bin/php.fastcgi
#!/bin/bash

PHPRC="/etc/php.ini"
PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=1000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php-cgi


chown apache:apache /var/www/cgi-bin/php.fastcgi
chmod +x /var/www/cgi-bin/php.fastcgi

vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerName localhost
    ServerAdmin jsk005@naver.com
    DocumentRoot /var/www/html
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    <Directory "/var/www/html">
            Options +Indexes +FollowSymLinks +ExecCGI
            AddHandler php-fastcgi .php
            Action php-fastcgi /cgi-bin/php.fastcgi
            AllowOverride All
            Order allow,deny
            Allow from All
    </Directory>
</VirtualHost>

#Verify PHP-FPM version
/usr/sbin/php-fpm -version

service httpd restart

## 보안설정
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


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

## httpd.conf 파일 수정
vi /etc/httpd/conf/httpd.conf
ServerName localhost

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


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



블로그 이미지

Link2Me

,