CentOS7 nginx + PHP 7.3 설치
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 설정 부분 등을 더 테스트해봐야 할 것 같다.