반응형

[ 설치 환경 ]

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/

 

PHP: Releases

The most recent branches to reach end of life status are: 7.2: 1 Oct 20207.1: 24 Oct 2019

www.php.net


 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 설치가 완료되었습니다. 모두 고생하셨습니다.

도움이 되셨다면 구독 좋아요

궁금한 내용이 있으시면 댓글 부탁드리겠습니다!!

정리.txt
0.00MB

반응형

'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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
});