안녕, 세상!

1-3. Lamp 소스 설치 및 구현 - PHP 컴파일 설치 본문

It공부/Server

1-3. Lamp 소스 설치 및 구현 - PHP 컴파일 설치

dev_Lumin 2021. 1. 28. 14:08

앞서 apache와 mysql을 설치 및 실행을 해보았습니다.

이제 amp의 마지막 부분인 php를 컴파일 설치를 해보겠습니다.

 

구현 환경

가상 환경 : vmware workstation 16 community player

OS : Ubuntu 18.04.05 Desktop 64bit (LTS)

Apache : Apache 2.4.46

mysql : MySQL 8.0.19

PHP : PHP 7.4.1 

 

(1) 의존성 패키지 설치

php 공식 사이트 : ( www.php.net/manual/en/install.unix.apache2.php )

php도 설치를 하는데 의존성 패키지들이 필요합니다.

apache2 환경에서 php가 필요한 의존성 패키지들을 설치해줍니다.

$ sudo apt-get install libxml2-dev
$ sudo apt-get install libjpeg-dev
$ sudo apt-get install libpng-dev
$ sudo apt-get install libsqlite3-dev

 

(2) PHP tar.gz 다운로드

$ cd /usr/local
$ sudo wget https://www.php.net/distributions/php-7.4.1.tar.gz
$ sudo tar xvfz php-7.4.1.tar.gz

https://www.php.net/manual/en/install.unix.apache2.php  

 

 

(3) PHP configure, make & make install

앞서 apache2와 mysql 컴파일 과정과 마찬가지로 configure과 make 명령어를 실행하여

설치 및 컴파일을 진행합니다.

$ cd php-7.4.1
$ sudo ./configure \
--with-apxs2=/usr/local/apache2.4/bin/apxs \      # apache2.4는 이전에 apache컴파일설치할 때 만듬
--enable-mysqlnd \
--with-mysql-sock=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-imap-ssl \
--with-iconv \
--enable-gd \
--with-jpeg \
--with-libxml \
--with-openssl

$ make
$ make test
$ make install

configure 명령문을 실행시키면 다음과 같이 잘 나오는 것을 확인할 수 있습니다.

 

make 명령어를 실행시키면 잘 되는 것을 확인할 수 있습니다.

 

이 후 make test를 하면 다음과 같이 오류가 발생하긴 하지만 이는 무시해줘도 됩니다.

 

위의 오류를 무시하고 make install하면 잘 되는 것을 확인할 수 있습니다.

make install 까지 컴파일 설치를 모두 마치고 

잘 설치되었는지 /usr/local/apache2.4/modules 디렉토리에서 php so 파일을 확인합니다.

다음과 같이 apache에 새로운 모듈(php 모듈)이 추가된 것을 확인할 수 있습니다.

 

apache는 DSO(Dynamic Shared Object) 동적 공유 객체 방식으로 설치되어 있습니다.

그러므로 apache가 이미 컴파일된 상태에서 위와 같이 새로운 모듈이 추가될 때

apache를 새로 또 컴파일하지 않아도 됩니다.

즉, httpd에 기능이 포함되어 있는것이 아니라

외부에 기능을 두고 필요할 때 마다 동적으로 기능을 호출해서 사용하는 방식입니다.

PHP는 대부분 DSO 모듈방식을 사용합니다.

( 참조 : victorydntmd.tistory.com/222 )

 

 

 

(4) apache와 php의 연동

/usr/local/apache2.4/conf/httpd.conf 의 아파치 설정파일 (httpd.conf) 을 열어서 PHP 모듈이 설치되어 있는지 확인합니다.

$ sudo vim /usr/local/apache2.4/conf/httpd.conf

apache 설정파일(httpd.conf)에 php so 파일이 잘 설치되었는지 확인되었으면,

밑으로 내려서 403번째 줄쯤에 아래의 그림과 같이 Addtype을 작성합니다.

 

(5) php.ini 파일 설정

php.ini는 php의 설정파일입니다.

위에서 설치한 php-7.4.1 디렉터리로 이동하면 php.ini-development 와 php.ini-production

두 개의 파일이 있습니다.

프로덕션 시스템용과 개발 시스템 용 두 가지 버전인데,

개발용은 더 많은 오류와 경고를 표시하지만, 보안상의 이유로 개발환경에서만 사용해야 합니다.

일단 프로덕션용파일을 /usr/local/lib/php.ini 에 복사합니다.

$ cd /usr/local/php-7.4.1
$ sudo cp php.ini-production /usr/local/lib/php.ini

php configure 시에 옵션으로 php.ini 의 위치를 지정하지 않으면

디폴트로 /usr/local/lib/php.ini를 사용합니다.

 

 

(6) php 파일 작성

apache의 웹 콘텐츠 (html, php 파일등) 는 htdocs 디렉토리에 위치합니다.

해당 디렉터리에 이동하여 php파일을 작성하겠습니다.

$ cd /usr/local/apache2.4/htdocs
$ sudo vim phpinfo.php
<? php
phpinfo();
?>

 

이제 php가 작동되는지 확인하기 위해서 apache를 실행시킵니다.

$ sudo /usr/local/apache2.4/bin/httpd -k start
$ ps -ef|grep httpd|grep -v grep
$ sudo netstat -anp|grep httpd
$ sudo curl http://127.0.01

 

firefox웹브라우저에 http://127.0.0.1/phpinfo.php로 접속합니다.

127.0.0.1은 필자가 실행시킨 apache 서버의 ip주소입니다.

 

php가 잘 나오는 것을 확인할 수 있습니다.

 

apache웹서버의 실행을 끄면 php도 실행이 안되는 것을 확인할 수 있습니다.

$ sudo service httpd stop
$ service httpd status

 

 

 

 

 

핵심 참조 : salix97.tistory.com/142?category=837576  

 

 

 

Comments