2~3년에 한번 가량으로 CentOS를 새로 설치하는데…
매번 새로 설치해할때마다 어떻게 설정/세팅했는지 기억이 안나 고생하네요.
그래서 이번만큼은 새로 설치하면서 흔적을 남겨봅니다.
centos 7.0 설치 후 PHP7 설치/설정 방법입니다.
※ 참고로 필자도 리눅스 잘 모릅니다. 구글링의 해택을 누릴뿐…
PHP 7 설치를 위한 사전 작업
yum을 이용한 PHP7 설치를 위해 yum에 대해 사전 작업을 합니다.
epel-release 인스톨 및 yum 저장소를 업데이트 해줍니다.
# yum install -y epel-release
# rpm -ivh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum –enablerepo=remi update remi-release
yum 인스톨/업데이트가 끝나면 php7를 설치할 준비가 끝납니다.
PHP7 설치 시작!
# yum –enablerepo=remi-php70 install
해당 명령어를 이용해 바로 php7를 설치 할 수 있으나, 모듈과 함께 설치를 위해서는 아래와 같이 명령이 필요합니다.
# yum –enablerepo=remi-php70 install -y php php-fpm php-mysql php-gd php-common php-cli php-json php-opcache php-devel php-imagick php-mbstring php-mcrypt php-mysqlnd php-pear php-xml php-xmlrpc php-soap php-dba php-bcmath php-pdo php-ldap
※ 해당 방법은 Apache 대신 nginx 을 사용 시 방법이고, 모듈은 최대한 많이 설치했습니다.
( Apache 사용시에는 php-fpm 모듈은 제거하고 설치할 것! )
PHP7 버전 확인
PHP 설치가 끝났다고 ‘Complete!’이 뜨면 php 버전을 확인합니다.
#php -v
아래와 비슷한 문구가 뜬다면 문제가 없이 설치된 거입니다.
PHP 7.0.11 (cli) (built: Sep 14 2016 08:28:52) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.11, Copyright (c) 1999-2016, by Zend Technologies |
※ 해당 내용으로 보면 php는 7.0.11 버전이 설치된 겁니다.
nginx – php 연동을 위한 php.ini 설정
# vi /etc/php.ini
여러군대를 수정해야되니, 찾기 기능으로 잘 찾아 바꿔야합니다.
(esc키 입력 후 ‘/검색어’를 입력 후 엔터, 다음 위치로는 ‘n’키!)
;cgi.fix_pathinfo = 0 → cgi.fix_pathinfo = 0 allow_url_fopen = On → Off expose_php = On → Off display_errors = Off |
※ 저장은 :wq 혹은 :w 후 :q 할 것~
nginx – php 연동을 위한 php-fpm 설정
# vi /etc/php–fpm.d/www.conf
여러군대를 수정해야되니, 찾기 기능으로 잘 찾아 바꿔야합니다.
(esc키 입력 후 ‘/검색어’를 입력 후 엔터, 다음 위치로는 ‘n’키!)
user = apache → nginx ;listen.owner = nobody → listen.owner = nobody (주석제거) 보류 : listen = 127.0.0.1:9000 → /var/run/php-fpm/php-fpm.sock |
nginx – php 연동을 위한 default. conf 설정
server { #charset koi8-r; location / { #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # 특정 디렉토리에 PHP 파싱을 차단하기 위한 부분 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # with php7-fpm 설정 # fastcgi 버퍼 사이즈 조절~ # 502 에러를 없애기 위한 fastcgi 버퍼 관련 설정입니다.
fastcgi_buffering on;
fastcgi_buffer_size 16k;
fastcgi_buffers 16 16k;
# 최대 timeout 설정입니다.
fastcgi_connect_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;
# 아래 설정은 PHP 성능 향상을 위한 옵션입니다. 추가해 주시면 좋답니다.
sendfile on;
tcp_nopush off;
keepalive_requests 0;
}
# deny access to .htaccess files, if Apache’s document root |
위에 내용처럼 수정이 끝내고 나면 저장합니다.
※ 보안 부분은 >와이즈번님 블로그<를 참고했습니다. (참고 부분 : gif파일로 위장한 php파일을 업로드하여 동작시키는 거 방지!)
※ nginx 설정 부분은 >곰곰이오님 블로그<를 참고했습니다.
자동 실행 등록 및 reload~
# systemctl reload nginx
이제 제대로 되는지
phpinfo();php 설정을 위한 php.ini 설정
# vi /etc/php.ini
여러군대를 수정 할때는 역시 찾기 기능 활용!
(esc키 입력 후 ‘/검색어’를 입력 후 엔터, 다음 위치로는 ‘n’키!)
register_globals = Off
글로벌 별수에 대한 사용 여부, 보안상 무조건 끌것!
display_errors = Off
php 오류 시 화면상 오류 표시 여부, 보안상 무조건 끌 것
필요하면 코드 상단에 에러 표기 기능을 넣을것
<?php error_reporting(E_ALL); ini_set(“display_errors”, 1); ?>
memory_limit = 8M // 스크립트 최대 메모리 설정
post_max_size = 8M POST 최대 사이즈
upload_max_filesize = 2M 업로드 파일 최대 크기
max_execution_time = 30 // 최대 실행 가능 시간
max_input_time = 30 // 입력 가능 시간
date.timezone = 빈칸
이걸 date.timezone=Asia/Seoul 로 바꿔주면 타임존 처리됨!
재실행은~
# systemctl reload nginx php-fpm