리눅스

CentOS7 nginx + PHP 7.3 설치

Link2Me 2020. 12. 28. 12:30
728x90

Apache 대신에 Nginx 서버를 설치하고, PHP-FPM 7.3 을 설치하는 과정을 테스트하고 적어둔다.

 

테스트 환경 : Virtual Box 6.1을 이용하여 Windows10 기반에서 CentOS 7.4 설치 후 아래 설정 작업

##########################################################
# Step 1. 커널을 제외한 업그레이드
vi /etc/yum.conf
# 첫줄 [main] 다음 라인에 추가하고 저장한다.
exclude=kernel*

 

# 아래 명령어 수행하면 커널은 업데이트되지 않고 다른 것만 업데이트된다.
yum -y update

#########################################################
#Step 2. – Prerequsitis
yum -y install epel-release

# yum 외부 저장소 추가 (이 과정은 생략해도 된다)
cd /etc/yum.repos.d/
vi nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

:wq 저장하고 나온다.

#Step 3. Nginx 설치
yum -y install nginx

# Apache를 설치한 경우에는 아파치 동작 중지
systemctl stop httpd

#Step 4. Nginx 데몬 실행
systemctl start nginx
systemctl enable nginx
systemctl status nginx

# 기존에 설치된 php가 있다면 제거 (필요하면 사용하라)
yum remove -y 'yum list installed | cut -d " " -f 1  | grep php'

### PHP 설치 ####
#Step 5. Repository 설치
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

#Step 6. yum Utilities Package 설치
yum -y install yum-utils

#Step 7. – Install PHP and PHP-FPM
# Disable repo for PHP 5.4
yum-config-manager --disable remi-php54
yum-config-manager --enable remi-php73

yum -y install --enablerepo=remi-php73 mod_ssl php php-zip php-fpm php-common php-opcache php-curl php-devel php-gd
yum -y install --enablerepo=remi-php73 php-imap php-ldap php-mysql php-mysqlnd php-pdo php-odbc php-pear php-xml php-xmlrpc php-pecl-apc   
yum -y install --enablerepo=remi-php73 php-mbstring php-mcrypt php-soap php-tidy curl curl-devel php-libwww-perl ImageMagick libxml2 libmxl2-devel    
yum -y install --enablerepo=remi-php73 mod_fcgid php-cli httpd-devel php-intl php-pspell php-openssl      
yum -y install --enablerepo=remi-php73 unzip mc git bind-utils wget

# 시만텍 서버백신 라이브러리 설치
yum -y install gcc glibc.i686 libX11.i686 libX11.x86_64

# CentOS 7.4 버전용 kernel-devel rpm 다운로드
cd /root
wget https://vault.centos.org/7.4.1708/os/x86_64/Packages/kernel-devel-3.10.0-693.el7.x86_64.rpm
rpm -ivh kernel-devel-3.10.0-693.el7.x86_64.rpm

# PHP 설치버전 확인
php -v

# 설치된 PHP Package 확인
rpm -qa | grep php

#Step 8. PHP-FPM 설정 파일 수정
# www.conf 설정파일을 아래와 같이 수정
vi /etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

user = nginx
group = nginx

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

listen.acl_users = nginx

; shift + G 를 눌러서 마지막 라인으로 이동한 후 아래 줄 주석 제거
php_value[opcache.file_cache] = /var/lib/php/opcache  ; 주석만 제거

#Step 9. 환경파일 수정
vi /etc/nginx/nginx.conf
    access_log  /var/log/nginx/access.log  combined;

    default_type        application/octet-stream;

    #Prevent system info explosure
    server_tokens off;

    #Prevent Diectory Search
    autoindex off;

    server {
        listen 80;
        server_name  localhost;
        root  /var/www/html;

        location / {
            index index.php index.html index.htm;
        }

        location ~ \.php$ {
            # /var/run/php-fpm/php-fpm.sock 경로에 파일이 있는지 확인
            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

    }

# 저장하고 나온다.

CodeIgniter 를 이용하기 위한 세부 설정은 https://hbesthee.tistory.com/1632 참조해서 수정하면 좋을 듯...

 

# Step 10 : Configure PHP-FPM
vi /etc/php.ini
cgi.fix_pathinfo=0
short_open_tag = On
post_max_size = 30M  ;// 8M 으로 되어 있었음.
upload_max_filesize = 30M ;// 기본 2M 으로 되어 있었음

date.timezone ="Asia/Seoul"
expose_php=Off

;PHP에서 세션은 일단 생성 된 뒤에, 가비지 콜렉터 관리로직에 의해 소멸된다.
session.gc_divisor = 1
;이값이 100이면 1/100 즉 1%의 확률로 가비지콜렉션이 실행된다.
;1이면 정확하게 유효기간이 넘은 데이타가 삭제될 것이다.

# 저장하고 나온다.

#Step 11. 서비스 재시작
systemctl restart php-fpm
systemctl restart nginx
 
#Step 12. 서비스 자동시작 등록
systemctl enable php-fpm

### 시간 동기화
yum -y install rdate

crontab -e
00 00  * * * /usr/bin/rdate -s time.bora.net && /sbin/clock -w

### phpMyAdmin 설치 #####
chcon -R -t httpd_sys_rw_content_t /var/lib/php/session
chmod -R 777 /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session

cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zip
unzip phpMyAdmin-5.0.4-all-languages.zip
chown -R nginx:nginx phpMyAdmin-5.0.4-all-languages
mv phpMyAdmin-5.0.4-all-languages pma
cd pma
cp -rp config.sample.inc.php  config.inc.php
vi config.inc.php
$cfg['blowfish_secret'] = 'qtdRoGmbc9{8IZr]0s)r$9b_JUnb{~Xz';
$cfg['Servers'][$i]['host'] = 'mysql DB 서버IP or localhost';
$cfg['Servers'][$i]['compress'] = true;
$cfg['TempDir'] = '/tmp';

 

기존 Apache 환경 구축을 Nginx 로 변경하는 걸 고려하기 위해서 테스트한 것인데, Virtual Host 설정 부분 등을 더 테스트해봐야 할 것 같다.