[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에 입력해주면 다음과 같은 창이 뜬다! 성공!!!!

    댓글