[ 설치 환경 ]
OS | Centos 7.6 |
Nginx 1.18 | |
PHP 7.3.5 |
|
MySQL 5.7.26 |
PHP 컴파일 바로 진행하면 아래의 오류가 발생됩니다.
PHP 7.3.4 는 libzip 0.11 이상부터 지원합니다. CentOS 7 기준으로 yum 설치 시 0.10이 설치됩니다.
PHP 컴파일 진행하기 전 libzip 패키지는 소스설치로 진행하겠습니다.
configure: error: Please reinstall the libzip distribution
4-1. libzip 패키지 소스 설치 진행
cd /root/src
wget https://libzip.org/download/libzip-1.2.0.tar.gz
tar xvfz libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install
ldconfig / 라이브러리 적용
4-2. PHP 설치
설치링크 : https://www.php.net/releases/
4-3. PHP 다운로드
wget 뒤에 링크 주소 복사를 붙여 넣으시면 됩니다.
해당 링크 주소 시간이 지나면 변하기 때문에 직접 들어가서 다운로드하시는 걸 추천드립니다.
mkdir /root/src/
cd /root/src
wget https://www.php.net/distributions/php-7.3.5.tar.gz
tar xvfz php-7.3.5.tar.gz
cd /root/src/php-7.3.5
4-4. PHP 컴파일
./configure --prefix=/opt/php --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-apxs2=/opt/apache/bin/apxs --with-curl --with-gd --with-jpeg-dir=/usr --with-freetype-dir=/usr --with-png-dir=/usr --with-xpm-dir=/usr --with-zlib --with-zlib-dir=/usr --with-gdbm --with-gettext --with-iconv --with-openssl --with-libxml-dir=/usr/lib --with-bz2 --enable-exif --enable-ftp --enable-sockets --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-soap --enable-mbstring=all --enable-bcmath --enable-zip
위에 컴파일 내용은 아래의 내용 참고 부탁드립니다.
--with-mysql - mysql 데이터베이스 지원.
--with-pdo-mysql - pdo mysql 지원.
--with-mysqli - mysqli 지원.
--with-apxs2 - apache2 와 연동 지원.
--with-freetype-dir - FreeType 폰트 라이브러리 디렉토리 지정.
--with-pear - php 라이브러리인 pear 를 지원.
--with-gettext - php내에 국제화를 위한 프로그램을 지원하기 위해서 필요한 기능을 지원.
--with-iconv - 문자셋 변환을 위한 기능을 지원.
--with-bz2 - 압축프로그램인 BZip2 기능을 지원.
--with-gmp - GNU MP 지원. GNU MP는 멀티 프로세싱을 위한 것입니다. 쓰레드, Fork 와는 또 다른 병렬 프로그래밍 기법입니다.
--with-apxs2 - apache2 와 연동 지원.
--with-zlib - ZLIB 지원.
--with-mcrypt - mcrypt 로 암호화 과련 기능을 지원.
--with-mhash - mhash 지원.
--with-mysql - mysql 데이터베이스 지원.
--with-pdo-mysql - pdo mysql 지원.
--with-mysqli - mysqli 지원.
--with-pgsql - pgsql 데이터베이스 지원.
--with-pdo-pgsql - pdo pgsql 지원.
--with-xmlrpc - xmlrpc 지원.
--with-libxml-dir - XML2 지원을 위한 libxml2 라이브러리 디렉토리 지정.
--with-pcre-dir - Perl Compatible Regular Expression 지원을 위한 라이브러리 디렉토리 지정.
--with-gd - GD 그래픽 지원.
--with-native-ttf - TrueType 문자열 지원.
--with-jpeg-dir - JPEG 그래픽 지원을 위한 라이브러리 디렉토리 지정.
--with-png-dir - PNG 그래픽 지원을 위한 라이브러리 디렉토리 지정.
--with-xpm-dir - XPM 그래픽 지원을 위한 라이브러리 디렉토리 지정.
--with-ttf - FreeType 폰트 지원.
--with-freetype-dir - FreeType 폰트 라이브러리 디렉토리 지정.
--enable-safe-mode - safe mode 지원.
--enable-zend-multibyte - Zend 의 multibyte 지원.
--enable-soap - SOAP 웹 서비스 지원.
--enable-curl - cURL 지원.
--enable-sockets - fsockopen 과 같은 소켓 함수를 쓰기 위해서는 필요합니다.
--enable-zip - Zip 파일을 읽고 쓸수 있는 기능 지원.
--enable-magic-quotes - '," 와 같은 것을 자동으로 처리해주는 기능을 제공합니다.
--enable-mbstring - multibyte 문자열 처리를 위한 지원.
--enable-shmop - Shared Memory Operations 으로서 공유 메모리 접근 기능을 지원합니다. Windows 플랫폼은 사용할 수 없습니다.
--enable-pcntl(CLI/CGI only) - Process Control 를 지원합니다. Windows 플랫폼은 사용할 수 없습니다.
--enable-sysvmsg - System V message 를 지원합니다. Windows 플랫폼은 사용할 수 없습니다.
--enable-soap - SOAP 웹 서비스 지원.
--enable-mbstring - multibyte 문자열 처리를 위한 지원.
--enable-bcmath - bc 스타일의 수학함수를 지원합니다.
--enable-zip - Zip 파일을 읽고 쓸수 있는 기능 지원.
4-5. PHP 설치
make -j `grep processor /proc/cpuinfo | wc -l`; make install
4-6. fatal error: zipconf.h 에러 발생
이렇게 하면 PHP 설치가 될줄 알았는데, 아래의 에러가 발생하게 됩니다.
해당 에러는 /usr/local/include 해당 경로의 zipconf.h 디렉터리가 없어서 생긴 이유입니다.
실제로 include에서 c프로그램을 실질적으로 관리하기 때문에 해당 경로로 넣어준 거라고 생각하시면 됩니다.
/usr/include : C 프로그램에 필요한 헤드파일(*.h) 디렉토리.
/usr/local/include/zip.h:59:21: fatal error: zipconf.h: No such file or directory
#include <zipconf.h>
^
# zipconf.h를 /usr/local/include에 복사해주자
cp -arp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/
cp -arp /root/src/php-7.3.5/ext/zip/lib/zipconf.h /usr/local/include/
4-7. PHP.ini 변경
cp -f /root/src/php-7.3.5/php.ini-production /opt/php/lib/php.ini
cp -f /root/src/php-7.3.5/sapi/fpm/php-fpm.conf /opt/php/etc/php-fpm.conf
cp -f /root/src/php-7.3.5/sapi/fpm/www.conf /opt/php/etc/php-fpm.d/www.conf
cp -r /root/src/php-7.3.5/sapi/fpm/init.d.php-fpm /opt/php/php-fpm
chmod +x /opt/php/php-fpm
Nginx PHP 연동
Nginx PHP 연동을 하기 위해서는, PHP-FPM을 통해 연동이 가능합니다.
PHP-FPM은 Nginx 로 부터 전달 받은 경로의 PHP 파일을 실행시키고 그 실행 결과를 Nginx 에게 반환하는 독립 실행 프로그램입니다.
PHP-FPM
PHP-fpm은 php FastCGI Process Manager의 약자로, CGI보다 빠른 버전이라고 말할 수 있습니다.
CGI란, 웹 서버에서 요청을 받아 외부 프로그램에 넘겨주면, 외부 프로그램은 그 파일을 읽어 HTML로 변환하는 단계를 거치는 것을 말합니다. Fast CGI는 요청할때마다 이미 생성된 프로세스를 가지고 구동하기 때문에 처리가 CGI보다 빠릅니다. Apache에서는 php 모듈이 있기 때문에 처리가 가능하지만, nginx에서는 php-fpm을 따로 설치해 연동을 해주어야 합니다.
4-8. Nginx PHP 연동
vim /opt/nginx/conf/nginx.conf
↓ 아래와 같이 변경 ↓
location / {
root /opt/nginx/html;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /opt/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
fastcgi_pass는 php-fpm과 nginx를 연결하기 위해 인터페이스를 지정하기 위해 사용됩니다.
vim /opt/php/etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
Nginx 프로그램은 기본적으로 nginx 사용자 권한으로 실행되고,
PHP-FPM 프로그램은 기본적으로 www-data 사용자 권한으로 실행된다
www-data 권한을 nginx 으로 변경
4-9 연동 확인
vi /opt/nginx/html/index.php
<?php phpinfo(); ?>
/opt/php/php-fpm start
/opt/nginx/nginx restart
이로서, 여기까지 진행하셨다면 nginx + php + mysql 설치가 완료되었습니다. 모두 고생하셨습니다.
도움이 되셨다면 구독과 좋아요를
궁금한 내용이 있으시면 댓글 부탁드리겠습니다!!
'IT > Linux' 카테고리의 다른 글
Ceontos7 패스워드 초기화 (0) | 2021.03.09 |
---|---|
CentOS Ioncube 설치 (0) | 2021.02.21 |
Nginx + PHP + MySQL 소스 설치 (2) (0) | 2021.02.13 |
Nginx + PHP + MySQL 소스 설치 (1) (0) | 2021.02.13 |
리눅스 CentOS 7 설치 (0) | 2021.02.13 |
최근댓글