리눅스 서버에서 웹 서버를 구축 시, 어디서부터 시작해야 할지 막막한 게 한두 번이 아니다.
특히 PHP 기반 웹 애플리케이션을 실행해야 할 때는 더더욱이다.
나 같은 경우는 단순히 PHP 기반인 워드프레스를 사용하기 위함이지만,
아무것도 모르는 상태에서 서버를 구축하기가 쉽지만은 않다.
이번에는 리눅스 서버에 PHP와 필요한 모듈을 설치하고,
PHP-FPM을 설정하는 방법을 단계별로 설명하려 한다.
차근차근 따라만 오면 손쉽게 PHP 개발 환경을 구축할 수 있으니 걱정하지 말자!

PHP 및 관련 모듈 설치하기

터미널에 아래의 명령어를 입력하여 PHP와 관련 필요 확장 프로그램을 설치한다.

sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip php-imagick
ShellScript

이 글은 워드프레스를 사용하기 위해 PHP를 설치했으며, 그에 필요한 PHP 확장 모듈을 설치하였다.
확장 모듈에 대한 설명은 왜 필요한지 설명해두었으나 딥하게 알아둘 필요는 없다.

  • php-mysql 또는 php-mysqli : MySQL 데이터베이스와 상호 작용에 사용된다.
  • php-curl : 원격 서버와의 HTTP 통신에 사용된다.
  • php-gd : 이미지 처리와 생성에 사용된다.
  • php-xml : XML 문서의 파싱에 사용된다.
  • php-mbstring : 멀티 바이트 문자열 처리를 위해 사용된다.
  • php-json : JSON 데이터 처리를 위해 사용된다.
  • php-zip : ZIP 파일의 압축 해제와 생성을 위해 사용된다.
  • php-intl : 국제화 기능을 위해 사용된다. 국제화 관련 기능은 다국어 지원과 날짜, 시간, 숫자 등의 현지화 기능을 뜻한다.
  • php-soap : SOAP 통신을 위해 사용된다. 특정 플러그인이나 외부 서비스와의 통합에서 SOAP를 사용할 수도 있기 때문에 필요하다.
  • php-imagick : 고급 이미지 처리에 필요합니다 (선택 사항). GD 라이브러리보다 더 나은 품질의 이미지 처리 기능을 제공한다. 워드프레스에서는 이미지 품질 향상을 위해 많이 사용하고 있으며 권장사항이다.

설치한 PHP 버전 확인

PHP 요청을 웹 서버에서 처리 할 때 보안 강화를 위한 설정이 필요하다.
그러기 위해서는 우선 PHP 버전을 알아야 한다.
설정 파일의 위치가 설치된 PHP 버전 디렉토리 내에 위치하기 때문이다.
php 설치 폴더로 이동해서 버전을 확인해보자.

cd /etc/php
ls
ShellScript

리눅스에서 php의 설치 경로로 이동하여 php의 버전을 확인하는 예시 이미지

포스팅에서는 PHP 의 버전이 ‘8.1’로 나왔다.
자신의 버전을 확인해두자.

PHP-FPM 설정하기

PHP 기반 웹 사이트 혹은 애플리케이션을 구축하기 위해서는 PHP-FPM을 많이 사용한다.

PHP-FPM이란?

PHP-FPM은 PHP FastCGI Process Manager의 약자로,
대부분의 부하가 큰 웹사이트와 애플리케이션에 유용한 일부 기능을 포함하는 기본적인 PHP의 FastCGI 구현체이다.
쉽게 말해서, PHP 기반 서버를 실행할 수 있게 해주는 것이라고 이해하면 된다.

PHP-FPM 보안 설정

보안 강화를 위한 PHP-FPM의 기본 설정 파일을 수정해보자.
위에서 확인한 PHP 버전 하위 디렉토리에 FPM 설정 파일이 존재한다.
아래의 명령어에서 자신의 버전에 맞게 수정한 뒤, 명령어를 실행하여 설정 파일을 열어보자.

sudo nano /etc/php/버전/fpm/php.ini

# 포스팅에서의 경로
# sudo nano /etc/php/8.1/fpm/php.ini
ShellScript

내용이 너무 기니 우리가 수정할 문자열을 검색하여 해당 라인으로 이동하자.
Ctrl + W (컨트롤+W)를 눌러 “ cgi.fix_pathinfo= “를 입력하고 엔터를 눌러보자.
입력한 문자열을 검색하여 해당 라인으로 이동한다.
검색된 결과의 앞에 세미 콜론(;)을 제거하고, ‘1’의 값을 ‘0’으로 변경해준다.

# 기존
# ; cgi.fix_pathinfo=1

# 변경
cgi.fix_pathinfo=0
ShellScript

여기서 잠깐! cgi.fix_pathinfo란?

  • cgi.fix_pathinfo=0
    • PHP가 정확한 경로의 파일만 실행하도록 하여, 잘못된 경로 정보로 인해 발생할 수 있는 보안 취약점을 줄여준다.
    • PATH_INFO를 무시하고 요청된 파일 경로가 실제로 존재하는지 확인한다. 보안상 더 안전하다.
  • cgi.fix_pathinfo=1 (기본값)
    • PATH_INFO를 사용하여 PHP 스크립트를 찾고 실행합니다. 보안상 취약할 수 있다.

변경한 내용을 저장하자.

  1. Ctrl + X  (컨트롤+X)를 누르고 ‘Y’를 눌러 작성한 내용을 저장한다.
  2. 엔터를 눌러 파일명 변경 없이 파일 쓰기 작업을 마무리한다.

변경 사항 적용을 위한 PHP-FPM 재시작

변경한 내용을 재적용하기 위해서는 PHP-FPM을 재시작해야 한다.

현재 자신의 리눅스에서 구동되고 있는 PHP-FPM은 PHPx.x-FPM으로,
x.x 부분은 설치된 PHP 버전으로 변경하면 된다.

sudo systemctl restart phpx.x-fpm

# 포스팅에서의 명령어
# sudo systemctl restart php8.1-fpm
ShellScript

PHP 설치 과정이 모두 완료되었다.
리눅스 서버에서 PHP를 설치하고 PHP-FPM을 설정하여 PHP 웹 사이트를 실행할 준비를 마쳤다.
이제 웹 서버를 설정하여 PHP 파일을 처리하도록 해야 한다. 웹 서버의 설정 방법은 사용하는 웹 서버 종류에 따라 다르나,
나는 Nginx를 사용하여 구축할 예정이다.

다음글 보러 가기

Similar Posts

댓글 남기기