nginx/Apache 우분투 서버에 PHP7(PHP7-fpm) 설치(또는 업데이트) 하기
※ 본 팁은 기본적으로는 nginx + PHP7-fpm + PHP7-mysql 조합으로 설치 또는 업데이트 하는 방법을 기준으로 하고 있습니다.
※ 하지만 Apache + PHP7 + PHP7-mysql 조합으로 설치하는 분들에게도 적용이 가능합니다. (nginx 설정 부분 제외하여 적용)
▶ 들어가며
nginx는 기본적으로 Apache 등에 비해서 퍼포먼스가 괜찮은 웹 서버입니다. 현재 이 곰곰 잡동사니 블로그를 운영하고 있는 필자의 서버 또한 라즈베리 파이 2B라는 좋지 않은 스팩의 미니 컴퓨터인데도, nginx로 워드프레스를 운영하고 있는 중입니다.워드프레스를 운영하기 위해서는 nginx 외에도 같이 작동해야 할 어플리케이션이 있는데, 그 중에 대표적인 어플리케이션을 뽑으라고 하면 PHP가 있습니다. PHP는 과거부터 HTTP 어플리케이션이 좀 더 동적이고 다양한 방식으로 운영될 수 있도록 해 주었는데요. 최근까지는 PHP5 버전이 비교적 많이 쓰이고 있었고, 제품 지원또한 잘 이루어지고 있었습니다.
하지만 2015년 12월, PHP7 버전이 정식으로 릴리즈 되었고, PHP5.5는 2016년 7월 10일, PHP 5.6은 2017년 8월 28일에 보안 업데이트 지원이 중단된다(관련 공식 홈페이지 페이지)는 이야기가 있는 만큼, PHP7 으로 업그레이드 해서 지속적인 보안 지원을 받고, 한편으로는 PHP 처리 속도 등에서도 유리하지 않을까 하는 생각에 업데이트를 결심하게 되었습니다.
또한 다행히도 PHP7 에서도 워드프레스는 정상 작동(링크)한다는 이야기를 들었기에, 안심하고 업데이트를 수행하였습니다.
▶ PHP 7.0 설치 준비하기
현재 우분투 공식 apt-get 배포지에서는 PHP7 등이 공식적으로 지원되지 않고 있습니다. 따라서 현재 PHP7 등을 설치하기 위해서는 개인 패키지 어카이브(영어로 Personal Package Archive; 이하 PPA)를 등록하여 apt-get를 이용해야 합니다. Ondřej Surý는 우분투 개발자중에 한 명인데, 그의 PPA에는 우분투에서 바로 사용 가능한 PHP 7.0이 올라와 있습니다. 따라서 우리 리눅스 시스템에서 이 PPA를 활용하기 위해 아래와 같은 명령어를 사용하여 저장소를 등록해 줍니다.
$ sudo add-apt-repository ppa:ondrej/php
참고로 외국 홈페이지에 따르면, 이 저장소를 활용할 때는 시스템이 UTF-8을 지원하는 시스템으로 설정되어 있어야 한다고 합니다.
어쨌든 PPA에서 php-7.0 관련 저장소를 인스톨했다면, apt-get update를 활용해 개인 리눅스 시스템 저장소를 업데이트 해 줍니다.
$ sudo apt-get update
이제, PHP 7.0을 설치할 준비는 모두 끝났습니다.
▶ 선택지 1) nginx 유저를 위한 PHP 7.0 fpm 설치
nginx를 사용해신 분들이라면 아시겠지만, nginx는 PHP를 기본적으로 지원하고 있지 않아, nginx 상에서 PHP를 구동하기 위해 PHP-fpm 이라는 패키지를 필요로 하게 됩니다. 따라서 보통 Apache 서버에서 설치하는 것처럼 apt-get install php7.0 이라는 명령어로는 PHP를 구동하실 수 없습니다.
따라서 php7.0-fpm 을 설치해주도록 합니다.
$ sudo apt-get install php7.0-fpm
기존에 php5-fpm 이 설치되어 있으셨던 분들은, 자동으로 php5-fpm이 php7.0-fpm으로 업데이트 되는 것을 확인하실 수 있으실 겁니다.
php7.0-fpm의 설치 이후, MySQL/MariaDB을 같이 이용하시는 분들은 php5-mysql의 업데이트 버전인 php7.0-mysql 또한 설치해 주셔야 합니다.
$ sudo apt-get install php7.0-mysql
설치가 끝나면, 이어서 nginx 상에서 PHP 7.0을 구동하실 수 있게 nginx 설정 파일을 바꾸어 주셔야 합니다. nginx를 apt-get을 통해 설치해 주신 분들은, 기본 사이트의 설정 파일이 /etc/nginx/sites-available/default 에 존재함을 아실겁니다. 여러분들이 편한 텍스트 에디터로 이 파일을 열어줍니다. (저는 편의상 nano를 활용합니다.)
$ sudo nano /etc/nginx/sites-available/default
설정 파일을 열어, 먼저 기존 php5-fpm을 위해 구동되고 있던 부분을 주석처리 한 후, php7.0-fpm을 위해 설정 파일에 다음과 같은 부분이 들어가도록 합니다.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # (For PHP 7.0) # location ~ \.php$ { # With php7-fpm: try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
저의 경우는 아래 이미지와 같이 설정해 두었으므로, 설정 파일 입력에 참고하시기 바랍니다.
다음과 같이 설정하고, 설정 파일을 저장한 이후, nginx를 재시작해 줍니다.
$ sudo service nginx restart
▶ 선택지 2) Apache 유저를 위한 PHP 7.0 설치
Apache 유저는 설정 파일의 수정 없이 PHP 7.0과 관련 패키지만 설치되면 됩니다. 다음과 같이 PHP 7.0/PHP7-mysql을 설치 후, 아파치 서버를 새로 시작해 줍니다.
$ sudo apt-get install php7.0 $ sudo apt-get install php7.0-mysql $ sudo service apache2 restart
▶ PHP 테스트하기 & 끝마치며
여러분들의 웹서버가 돌아가고 있는 디렉토리 루트에, PHP 정보 확인을 위한 파일을 하나 만듭니다. (예: phpinfo.php)
<?php phpinfo(); ?>
이 파일을 만들어 실행해 보면, PHP가 7.0으로 실행되고 있는 것으로 확인하실 수 있습니다.
( 확인을 위해 만든 phpinfo.php 는 확인하시고 지워주시는 것이 보안상 좋습니다. )
저는 개인적으로 PHP 7.0 업데이트 후 어느 정도 워드프레스가 가벼워진 느낌을 받았는데, 여러분들은 어떨지 모르겠습니다.
어찌되었든 성공적인 업데이트를 기원합니다. 두서 없는 글 읽어주셔서 감사합니다.
질문 남겨봅니다.
제가 설치는 제대로 한거 같은데…php -v 으로 확인하면 php 7.0으로 제대로 나오는데..
웹서버가 돌아가고 있는 디렉토리 루트에, PHP 정보 확인을 위한 파일을 하나 만들어서 확인을 하면 (phpinfo.php같은거) 이전버젼인 php 5.5라고 나오네요. T T.
혹시 왜그런지 아시면 답변좀..부탁드려요..구글링을 해도 소용이 없네요
nginx를 사용하시는 경우에는 nginx.conf 파일에 php 소켓을 php7.0-fpm으로 잘 전달되게 설정해두셨는지 확인하실 필요가 있습니다.
혹시 웹서버는 nginx와 아파치 중에서 어떤 것을 사용중이신가요? ^^;