[ 설치 환경 ]
OS | Centos 7.6 |
Apache 2.4 | |
PHP 7.3 | |
MariaDB 10.3 |
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 설치
다시 make 및 make install 해주면 정상적으로 설치가 완료됩니다.
make -j `grep processor /proc/cpuinfo | wc -l`; make install
4-8. Apache PHP 연동을 위해 httpd.conf 내용 추가
vi /opt/apache/conf/httpd.conf
AddType application/x-gzip .gz .tgz // 이 부분 찾아서 아래 2줄 추가 후 저장
AddType application/x-httpd-php .php .html .htm .inc
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html.index.php // index.php 추가
</IfModule>
위에 내용은 아래의 내용 참고 부탁드립니다.
AddType application/x-tar .tgz : AddType은 MIME 설정 파일인 mime.types에 정의되어 있지 않은 타입을 추가로 설정하고자 할 때에 사용됩니다.
그럼 MIME type 무엇일까??
MIME type이란 Multipurpose Internet Mail Extensions의 약어로 메시지 컨텐트 형식을 정의하기 위한 인터넷 표준을 말합니다. MIME 메시지는 텍스트, 이미지, 오디오, 비디오, 및 기타 애플리케이션의 특정 데이터를 포함할 수 있으며 일반적으로 홈페이지 상에 표현되는 멀티미디어 데이터에 대한 형식을 말합니다. 클라이언트의 웹브라우저나 웹사이트를 제공하는 웹서버에서 MIME Type이 등록되지 않는다면 사용자들은 해당하는 컨텐트를 웹브라우저에서 볼 수 없게 됩니다. 공식 MIME 정보는 IETF(Internet Engineering Task Force)에서 RFC 기준으로 정의하고 있습니다.
DirectoryIndex : 웹사이트의 초기페이지 문서로 어떤 파일을 사용할 것인가를 결정하는 지시자입니다.
적힌 순서에 따라 읽어 들이며 위에 지정한 목록들이 디렉터리에 없다면 Options 지시자에 Indexes 또는 All이 지정되어 있을 경우 디렉토리내의 파일리스트를 보여줍니다.
4-9. Apache PHP 연동을 위해 php.ini 수정
cp -f /root/src/php-7.3.5/php.ini-production /opt/php/lib/php.ini
vi /opt/php/lib/php.ini
↓ 내용 수정 ↓
short_open_tag = On
# 수정 완료 후 재시작
/opt/apache/bin/apachectl restart
PHP를 설치하셨다면 php.ini 파일이 존재할 것입니다.
이 파일을 열면 short_open_tag라는 부분이 있는데
short_open_tag=Off로 되어있으면
short_open_tag=On으로 바꿔줍시다.
PHP를 여는 태그의 짧은 형식을 허용해주는 것입니다.
4-10. 연동 확인
DocumentRoot 웹 경로의 PHP 연동이 되었는지 확인해보자
웹 서버 DocumentRoot는 모든 웹 컨텐트가 저장될 디렉토리 구조이며 이 디렉토리에 위치된 컨텐츠는 웹을 통하여 공개됩니다.
# 웹경로 확인
cat /opt/apache/conf/httpd.conf | grep DocumentRoot | grep -v "#"
DocumentRoot "/opt/apache/htdocs"
# 웹경로 이동
cd /opt/apache/htdocs
# 추가
vi index.php
<? phpinfo(); ?> // 저장 나가기
4-11. PHP 버전 확인
/opt/php/bin/php -v
PHP 7.3.5 (cli) (built: Jan 22 2021 07:33:54) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies
이제 브라우저를 실행해 주소창에 IP/index.php를 입력하시면 아래의 캡처처럼 연동되는 게 확인되실 겁니다.
이로서, 여기까지 진행하셨다면 APM 설치가 완료되었습니다. 모두 고생하셨습니다.
도움이 되셨다면 구독과 좋아요를
궁금한 내용이 있으시면 댓글 부탁드리겠습니다!!
'IT > Linux' 카테고리의 다른 글
Apache + tomcat 7 설치 및 연동 (2) (0) | 2021.01.23 |
---|---|
Apache + tomcat 7 설치 및 연동 (1) (0) | 2021.01.23 |
APM 이란? (1) | 2021.01.23 |
APM ( Apache 2.4 + PHP 7.3 + MariaDB 10.3 )소스설치 (2) (0) | 2021.01.20 |
APM ( Apache 2.4 + PHP 7.3 + MariaDB 10.3 )소스설치 (1) (1) | 2021.01.17 |
최근댓글