[Server] Ubuntu에서 PHP 소스 설치하기/컴파일 설치/수동설치

PHP 소스설치

 

1 ) 패키지 설치

 

$ sudo su
$ cd /usr/local
$ apt-get install libxml2-dev
$ apt-get install libjpeg-dev
$ apt-get install libpng-dev
$ apt-get install libsqlite3-dev

 

2 ) php 설치

 

php 7.4.1 버전을 설치하였다.

$ wget https://www.php.net/distributions/php-7.4.1.tar.gz
$ tar xvfz php-7.4.1.tar.gz

 

3 ) php configure

 

$ ./configure \
--with-apxs2=/usr/local/apache2.4/bin/apxs \
--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

 

[ configure 설정이 성공하면 뜨는 창 ]

 

4 ) make, make install

 

$ make # 생각보다 make가 오래걸린다
$ make test
$ make install

 

[make 성공 시 뜨는 창]

[ make install 성공 시 뜨는 창 ]

 

5 ) php.so 파일이 설치되었는지 확인

 

$ cd /usr/local/apache2.4/modules
$ ls -l # 이 명령어를 수행하면 아래에 libphp7.so를 확인할 수 있음

여기서 libphp7.so가 있으면 잘 깔린 것이다!

 

 

 

6 ) apache와 php 연동

 

아파치 설정 파일인 httpd.conf파일을 열어 PHP 모듈이 설치되어 있는지 확인한다.

모듈이 잘 설치되어 있다면 httpd.conf에서 mine_module을 찾아 다음과 같이 작성한다.

AddType application/x-httpd-php .php .html

 

 

7 ) PHP.ini 파일 세팅

 

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

 

🤔 여기서 잠깐, .ini 파일이 무엇일까?

  • 프로그램이 실행될 때 필요한 초기 정보를 담은 파일이다.
  • 그러나 ini 파일의 구조에 맞춰 값을 저장 하기 위해서 사용하기도 한다.

8 ) 테스트용 php 파일 작성

 

아파치의 웹 콘텐츠(html, php 파일 등)는 htdocs 디렉토리에 위치한다. 이곳에 phpinfo.php를 작성한다.

 

$ vi /usr/local/apache2.4/htdocs/phpinfo.php

# 편집기를 열고 다음과 같이 작성해준다.
<?php
phpinfo();
?>

 

9 ) Apache 실행

 

$ sudo /usr/local/apache2.4/bin/httpd -k start
$ ps -ef|grep httpd|grep -v grep

 

[ Issue 1 ]

 

0.0.0.0:80 즉, 80을 통한 소켓 연결이 불가능하다는 에러 내용이었다.

이럴 때는 80을 잡고 있는 프로세스를  kill 하여야 한다. (생각보다 여러번 수행해주어야 한다!! 30번 넘게 한듯?)

 

$ netstat -tnlp
$ kill -9 [80에 해당하는 프로세스]

 

[ Issue 2]

 

80 포트를 잡고 있는 프로레스를 다 kill한 이후에 apache를 다시 실행하기 위하여 명령어를 입력해주었다.

하지만 다음과 같은 에러를 또 마주쳤다! 

 

sudo apachectl -k restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using {MY_LOCAL}. 
Set the 'ServerName' directive globally to suppress this message

 

httpd.conf 파일의 살펴보면 ServerName을 localhost로 지정해주라는 것이었다.

 

그래서 다음과 같은 경로에서 httpd.conf파일의 ServerName을 변경해주려고 했는데,

$ cd /usr/local/etc/apache2.4/httpd.conf

 

분명 나는 apache 소스설치 시 httpd.conf 파일의 서버네임을 지정해주었다 .. (띠용)

apache 소스설치 시 마주친 issue

 

그래서 열심히 구글링을 하던 와중 ...

 

https://stackoverflow.com/questions/43559201/could-not-reliably-determine-the-servers-fully-qualified-domain-name-for-macboo

 

Could not reliably determine the server's fully qualified domain name for MacBook

First time got a new MBP 2016. Trying to setup PHP,MySQL & Apache. Started Apache by using command sudo apachectl restart Then installed PHP by brew install php71 --with-httpd24 Also did

stackoverflow.com

 

( 맥 유저의 경우는 - 확실치 않음)

apache2.4의 htpd.conf 뿐만아니라 httpd의 httpd.conf도 수정이 필요한 것이었다!

그래서 다음 경로로 이동하여 ServerName localhost로 수정해주고 저장해주었다 ..

$ cd /usr/local/etc/httpd/httpd.conf

 

10 ) 성공

 

아파치가 실행된 이후에 http://내가 실행시킨 아파치 서버IP/phpinfo.php를 url에 입력해주면 다음과 같은 창이 뜬다! 성공!!!!

댓글