CentOS7 LEMP PHP 설치 (php-fpm)
1. php-fpm 와 php-mysql 설치.
# yum install php-fpm php-mysql
자동으로 같이 설치되는 것들
php-cli : Command-line interface for PHP
php-common : Common files for PHP
php-dba : A database abstraction layer module for PHP applications
php-devel : Files needed for building PHP extensions
php-embedded : PHP library for embedding in applications
php-enchant : Enchant spelling extension for PHP applications
php-fpm : PHP FastCGI Process Manager
php-gd : A module for PHP applications for using the gd graphics library
php-intl : Internationalization extension for PHP applications
php-ldap : A module for PHP applications that use LDAP
php-mbstring : A module for PHP applications which need multi-byte string handling
php-mysql : A module for PHP applications that use MySQL databases
php-mysqlnd : A module for PHP applications that use MySQL databases
php-odbc : A module for PHP applications that use ODBC databases
php-pdo : A database access abstraction module for PHP applications
php-pear.noarch : PHP Extension and Application Repository framework
php-pecl-memcache : Extension to work with the Memcached caching daemon
php-pgsql : A PostgreSQL database module for PHP
php-process : Modules for PHP script using system process interfaces
php-pspell : A module for PHP applications for using pspell interfaces
php-recode : A module for PHP applications for using the recode library
php-snmp : A module for PHP applications that query SNMP-managed devices
php-soap : A module for PHP applications that use the SOAP protocol
php-xml : A module for PHP applications which use XML
php-xmlrpc : A module for PHP applications which use the XML-RPC protocol
2. PHP 기본 설정
# vim /etc/php.ini
memory_limit = 64M
expose_php = Off
위와 같이 수정한다.
검색은 [esc] ?키워드
저장 [esc] :wq
3. php-fpm + nginx 설정
# vim +/^user /etc/php-fpm.d/www.conf
group = nginx
nginx 에게 php-fpm 실행 권한 부여
# chown nginx:root -R /var/log/php-fpm/
php-fpm 재시작.
# systemctl restart php-fpm
# systemctl enable php-fpm
4. gd 라이브러리 설치
# yum -y install php-gd
참고하면 좋은 php.ini 설명
설정 인자 |
권장값 |
설명 |
register_globals |
Off |
이 값은 On으로 설정하면 php가 입력받는 값을 전역변수로 받아들이므로 프로그램의 동작 중 어디서나 변수값이 변경될 수 있기 때문에 파라미터 변조, 오동작으로 인한 보안 문제가 발생할 수 있다. |
safe_mode |
On |
On으로 설정시 시스템 중요파일(/etc/passwd) 접근을 제한 할 수 있지만, 웹 프로그램의 오동작 가능성이 존재 |
safe_mode_gid |
Off |
위와 마찬가지 |
expose_php |
Off |
웹 브라우저의 요청에 대해 PHP 정보 노출을 방지한다. |
file_uploads |
Off |
Off시 php프로그램의 파일 업로드를 차단한다. |
allow_url_fopen |
Off |
On으로 설정하면 파일 access시 외부 사이트의 파일을 호출할 수 있다. 특히 include(), require() 함수 사용 시 심각한 보안상의 문제를 유발하므로 반드시 Off로 한다.(PHP INJECTION) |
magic_quotes_gpc |
On |
On으로 설정하면 php가 입력으로 받아들이는 값에 단일 인용부호('), 이중 인용부호("), 백슬래시(), 널문자가 포함된 경우 자동으로 해당 문자 앞에 백슬래시를 추가하여 특수 문자를 처리한다. SQL INJECTION 차단이 가능하다. |
magic_quotes_sybase |
Off |
Sybase 사용자의 정상적인 DB접속을 위해 만들어진 기능이다. Sybase 사용자가 아니라면 Off로 설정한다. |
open_basedir |
디렉토리 |
해당 옵션에 특정 디렉토리 설정시, 지정된 디렉토리 내에서만 파일에 접근 가능 |
safe_mode_exec_dir |
디렉토리 |
해당 옵션을 사용시, system(), exec(), passsthru() 등 외부 명령어 실행 시 지정된 디렉토리에 존재하지 않는 프로그램은 실행할 수 없다. |
display_errors |
Off |
PHP 실행 중 에러 정보 노출을 방지하는 역할을 제공하므로 반드시 off설정한다. |
log_errors |
On |
해당 옵션을 On으로 설정하는 경우 PHP 실행 중 발생하는 경고나 에러 정보를 error_log에서 지정한 파일에 기록하게 되므로 침입자의 의도적인 에러 발생 시도를 확인해 볼 수 있다. |
error_log |
파일명 |
PHP 실행 중 발생하는 경고나 에러 정보를 작성할 파일을 지정하는 옵션 |
linux, centos7, lemp, php, php-fpm