워드프레스 사용을 위한 PHP 모듈, 익스텐션 설치하기

0

이 글은 워드프레스 사용자를 위해 글을 작성했지만, 리눅스 우분투 서버에 PHP 모듈, 패키지를 설치하는 환경 구성에대한 일반적인 방법이므로 워드프레스를 사용하지 않는 경우에도 PHP 모듈 설치를 위해 참고하실 수 있습니다.

WordPress는 원천적으로 PHP 기반의 웹 애플리케이션(프로그램)이라서 워드프레스 코어뿐만 아니라 플러그인, 테마까지 모두 PHP로 동작하므로 PHP 없이는 기능할 수 없고, 그에따라 여러가지 기능들이 PHP 모듈에 의존하게됩니다.

대부분의 VPS, 웹호스팅에서 워드프레스를 한번에 설치할 수 있는 서버 설치 이미지를 마련해두었다면 워드프레스가 동작하는데 필요한 대부분의 모듈(라이브러리, 확장, 익스텐션)이 준비되어있을 겁니다만, 때로는 없는 게 있을 수도 있고 자주 쓰이지 않는 기능을 필요로 할 수 도 있겠죠. 그럴땐 직접 설치해야합니다. 

다만, 고대디, 카페24의 일부 서비스처럼 서버 컴퓨터를 다른 사람들과 나눠쓰며 폴더 하나만 할당받아 사용하는 웹호스팅은 자신이 PHP 모듈을 설치할 리눅스 서버의 root 권한이 없을 것이므로, 필요할 경우 고객센터를 통해 요청해야할 것입니다.

이 글에서는 PHP 모듈과 익스텐션을 설치하는 방법을 알아 볼 텐데요. 제 블로그에서 다룬 워드프레스 설치 유형은 두가지이므로 각각의 모듈에 대해서 두경우 모두를 설명하려고 합니다.

  1. 비트나미 스택 워드프레스 일 때 (아마존 라이트세일 워드프레스 설치 연재작 참고)
  2. Nginx + 워드프레스 일 때 (LEMP스택 워드프레스 설치 연재작 참고)

 

이글에서 작성된 PHP 모듈 설치방법은 아래의 것들인데요. 필요하다면 후에 또 추가할 예정입니다.

리눅스 서버에 설치된 PHP 버전 확인 명령어

모듈을 설치할 땐 자신이 사용하는 PHP버전과 맞춰주는게 좋겠습니다. 자신의 서버가 어떤 PHP 버전을 사용하는지 확인하고 싶다면 php -v 명령어로 알아볼 수 있습니다.

PHP 7.2.11-3+ubuntu16.04.1+deb.sury.org+1

리눅스 우분투에서 로드된 PHP 모듈 확인 방법

자신의 우분투 서버에 로딩된 전체 PHP 모듈 리스트는 php -m 명령어를 사용하면 알 수 있는데요.

php -m

비트나미 스택에서는 php가 /opt/bitnami/ 폴더 안에 설치되어있는데 아래 명령어로 살펴볼 수 있습니다.

/opt/bitnami/php/bin/php -m

PHP 이메일 발송을 위한 라이브러리 – sendmail

워드프레스 코어, 콘택트폼 7(contact form 7)등의 플러그인에서 이메일을 보내기 위해서는 우선 자신의 서버가 이메일을 발송할 수 있는 준비가 되어있어야 합니다.  

이메일을 전송할 수 있는 PHP 라이브러리는 여러가지가 있지만 아래 링크의 sendmail 설치 방법에 대해 별도로 자세히 설명되어있으니 해당 글을 참고하시면 되겠습니다.

워드프레스의 이미지 편집기능과 리사이징을 위한 PHP 모듈 – php-gd

먼저 워드프레스의 이미지 편집기능에대해 간단히 알아봅시다.

워드프레스의 미디어 라이브러리에 이미지를 업로드하면 이미지파일은 기본적으로 /wp-content/uploads/ 폴더에 저장하게되는데 그 과정에서 워드프레스는 이미지 리사이즈 기능을 사용해 자동으로 여러가지 크기의 같은 이미지를 만들어두게 됩니다. 

그래서 썸네일 이미지처럼 작은 사이즈가 필요할 때 해당 사이즈의 이미지를 보여줄 수 있게 되죠. 대표적인 예로 글목록에 나타나는 썸네일이나, 특성이미지의 크기등이 그렇습니다.

워드프레스 코어의 이미지 자동 리사이징 기능

워드프레스 미디어 라이브러리에 사진파일을 업로드하면 그것을 원본파일로 여러가지 크기를 만들어 두는데 미디어 라이브러리에서는 아래처럼 원본파일만을 표시하고 있는 것을 볼 수 있습니다.

원본파일을 표시하고 있다. 크기 4Mb, 규셕 4928x3008테

아래는 FTP 클라이언트로 서버에 접속해서 본 uploads 폴더 안의 이미지 파일입니다. 업로드 했던 원본과 자동 리사이징으로 만들어진 각각의 크기별 이미지들이 함께 존재합니다.

원본파일과 리사이징된 모든 이미지 파일들이 있다. 파일이름은 '원본파일이름-가로x세로.jpg' 같은 이름으로 지어진다

이런 부가적으로 만들어진 크기별 이미지는 워드프레스 코어에서 뿐만 아니라 자신이 사용하는 테마나 플러그인에의해서도 만들어지는 크기가 다양해지게 됩니다.

그러므로 이런 썸네일 이미지를 만드는 플러그인이 별로 필요치 않다면 해당 플러그인은 삭제하는게 서버 용량을 아끼는 지름길이기도 합니다.

워드프레스 코어의 이미지 편집(자르기,회전등) 기능

워드프레스 코어에는 간단한 이미지 편집기능이 있습니다. Crop(자르기) 긴능은 이미지 비율을 변경할 수 있죠.

미디어 라이브러리에서 사진아래에 있는 이미지 편집 버튼을 누르면 사진을 드래그하거나 가로X세로 픽셀값을 넣어서 자를 수 있습니다. 

이미지편집으로 자르기 실행

이런 자르기 역시도 모든 이미지에대해 적용하는 것을 선택하면 워드프레스 코어는 또다시 다양한 크기로 이미지 파일을 만들어 서버에 추가하게됩니다. 그러므로 워드프레스 내에서 자르기를 여러번 수행하는 것은 서버 SSD 용량차지면에서 좋은 선택은 아닙니다.

워드프레스가 사용하는 PHP 이미지 편집 모듈

위처럼 이미지 업로드시 자동 리사이징이나, 워드프레스 자체 이미지 편집기능이 동작하기위해 사용되는 PHP 모듈은  보통은 php-gd 인데요. 대부분의 워드프레스 지원서버에는 php-gd가 이미 설치, 활성화 되어있을 겁니다.

그런데 이런 이미지 리사이즈 모듈이 없다면 워드프레스는 리사이즈 기능을 사용할 수 없습니다. 

이런 PHP 이미지 편집 모듈이 지원되지 않으면 해당 기능이 동작하지 않는데요. 이미지를 업로드 후 FTP를 통해 살펴봐도 원본 파일 외에는 리사이즈 이미지가 만들어지지 않습니다.

원본이미지 파일만 존재
FTP에서 본 워드프레스 uploads 폴더

또한 이미지 편집 시도시 아래와 같은 에러메시지만 나옵니다.

편집화면에 이미지가 나타나지 않게 에러메시지만 출력된다
오류: 이미지 회전은 사용중인 웹호스트에서는 지원이 되지 않습니다. (Image rotation is not supported by your web host.)

위 처럼 워드프레스 코어의 자동 리사이즈된 이미지 생성이나 편집기능이 동작하기위해서는 php-gd나 imagick(ImageMagic)같은 PHP 이미지 편집 모듈이 필요합니다.

참고: 워드프레스 이미지 업로드가 느릴 때 대부분의 이유는 위와 같은 여러개의 이미지 리사이징을 위한 과정이 완료되기까지가 느려서인 게 대부분입니다. 여러 사이즈의 이미지를 만드는 테마나 플러그인이 추가되면 만들어야할 이미지가 많아져 업로드 과정이 더 길어지게 됩니다.

PHP-GD 모듈 설치

대부분의 워드프레스를 위한 서버는 이미 GD가 포함되어있을 것이라서 별도로 설치할일은 없을 것입니다만 필요하다면 아래의 절차를 거치면 됩니다.

PHP GD 활성화  확인

아래의 명령어 중 하나를 입력하면 아래 그림처럼 GD Support 정보가 enabled로 나온다면 문제가 없는 것입니다.

php -i | grep 'GD'
php -r \phpinfo\(\)\; | grep 'GD'

GD Support => enabled 그리고 GD Version => bundled

1) 비트나미 스택 워드프레스에서 PHP-GD

비트나미에서는 이미지 리사이즈 모듈이 별도로 활성화 되어있을 겁니다. 없다면 아래 LEMP 스택에서의 예처럼 설치해주고 php-fpm과 아파치 웹서버를 재시작해주세요. 비트나미에서 재시작 명령어는 아래와 같습니다.

$ sudo /opt/bitnami/ctlscript.sh restart php-fpm
$ sudo /opt/bitnami/ctlscript.sh restart apache

 

2) LEMP 스택(nginx) 워드프레스에서 PHP GD 설치하고 세팅하기

제 블로그글을 따라 LEMP 스택을 설치했다면 PHP-FPM을 설치하면서 자주쓰이는 모듈을 설치 할 때 php-gd를 이미 설치했으니 다시 설치할 필요는 없을 겁니다만, 혹여 설치되지 않았다면 아래의 절차를 거치면 됩니다.

apt-get 업데이트

먼저 아래명령어를 입력해서 apt 리스트를 최신으로 업데이트 해주는게 좋습니다.

sudo apt-get update

 

apt 레파지토리 리스트에서 php-gd 설치 확인 및 설치 패키지 버전 보기

php-gd의 설치여부, 설치가능한 패키지이름 확인은 apt 리스트에서 확인해볼 수 있는데 apt-cache policy 패키지이름 처럼 확인해보는데 명령어를 아래처럼 작성하면 됩니다.

sudo apt-cache policy php-gd

위 명령어는 끝에 php-gd 처럼 패키지 이름에 php 버전번호가 붙지 않았았는데 apt의 리스트에는 여러 php 버전별로 모듈 설치 리스트가 존재할 수도 있습니다. 그래서 아래 명령어 끝에 php7.2-gd 처럼 php 버전번호를 붙여 살펴볼 수도 있는데요.

sudo apt-cache policy php7.2-gd

하지만 자신의 apt 프로그램이 어떤 버전에대한 패키지 설치정보를 가지고 있을지 모를 때는 버전번호대신 와일드카드 문자인 * 을 사용해 패키지이름이 php로 시작해서 -gd로 끝나는 모든 패키지이름을 검색해볼 수 있습니다.

sudo apt-cache policy php*-gd

설치가능 패키지들: php-gd, php5-gd, php7.0-gd, php7.2gd

그러면 위 그림처럼 현재 apt에 존재하는 모든 php-gd 설치정보가 패키지별로 나오는데, 각각은 아래처럼 구성되어있습니다.

  • php버전번호-gd: 패키지이름(위 그림에서 노란 밑줄)
  • Installed: – 설치된 버전. 설치되지 않았다면 (none)으로 표시됩니다.
  • Candidate: – 설치가능 버전. 설치정보가 없다면 (none)으로 표시됩니다.
  • Version table: – 다운로드 받을 주소. 설치정보가 없다면 아무것도 나오지 않습니다.)

php7.2-gd 설치

제 테스트 서버의 경우 PHP-FPM을 php 7.2 버전으로 설치해 사용하므로 php7.2-gd를 설치하겠습니다.  리스트에있는 특정버전의 패키지이름에 맞춰 아래처럼 입력해줍니다.

sudo apt-get install php7.2-gd

Processing triggers for php7.2-fpm 이라는 메시지와 함게 설치완료

PHP-FPM 재시작

아래 명령어로 php-fpm 재시작을 해줘야합니다. 보통은 끝에가 php-fpm 이지만 제경우 LEMP 스택구성에서 php를 설치할 때 7.2가 없었던 관계로 별도로 7.2로 설치해서 아래처럼 php7.2-fpm을 붙여야합니다.

sudo service php7.2-fpm restart

또는

sudo systemctl restart php7.2-fpm

PHP Zip 모듈 설치하기

대부분의 서버구성은 PHP가 압축파일 .zip 만들거나 압축해제하는데 문제가 없을 것입니다만, 플러그인 중에 zip 을 요구하는 경우 zip 모듈의 클래스인 ZipArchive를 설치해 해결 할 수 있습니다.

1) Bitnami 스택 워드프레스 서버에서 Zip 모듈 

모듈 활성화 확인

비트나미 스택 워드프레스에서는 컴파일된 zip 모듈을 확인려면 아래 명령어를 통해서 확인해 볼 수 있습니다.

sudo /opt/bitnami/php/bin/php -m | grep zip

출력결과: zip

위처럼 zip 이 나오면 zip 모듈은 설치되어있는 것이고 아래 명령어로 활성화 여부를 체크할 수 있습니다.

sudo php -i | grep 'ZIP'

출력결과: ZIP-based phar archives => enabled

비트나미 스택 워드프레스는 위처럼 이미 모듈이 설치되어 동작 중일 것이므로 추가로 설치가 필요없을 것입니다.

참고로 비트나미 스택에서는 apt 명령어로 설치여부를 확인해도 설치되지 않은 것으로 나오는데 이는 비트나미는 자체적으로 컴파일된 패키지를 /opt/bitnami/common/에 설치해두기 때문입니다. 위처럼 정상 동작될테지만 혹시 동작되지 않는다면 아래의 방법으로 apt를 통해 설치해주면 될 겁니다.

apt로 ZIP 모듈 설치

apt update 명령어로 우선 apt 레파지토리 리스트를 업데이트 해주고, php*-zip 처럼 중간에 와일드카드 문자(별표)를 써서 php-zip이 들어가는 패키지이름을 검색해서 설치가능한 패키지를 확인해봅시다.

sudo apt update
sudo apt policy php*-zip

php-zip, php7.0-zip

위 그림처럼 apt가 설치가능한 zip 패키지는 php-zipphp7.0-zip 두개로 나옵니다.

Installed:(none)이라고 나온다면 해당 패키지는 설치되지 않은 건데요. 어느것 하나라도 설치되어있으면 호환되는 버전인 이상 동작할 겁니다. 그리고 Candidate:에 나온 패키지버전 번호를 보고 하나를 선택해 아래 명령어처럼 설치해주면 됩니다.

참고: 현재 이글을 작성하는 시점에서 아마존 라이트세일 비트나미스택은 PHP7.0버전이고 zip모듈은 PHP 버전번호를 따라갑니다.

sudo apt install php-zip

sudo apt install php-zip 명령어 입력후 Do you want to continue? 질문에 Y입력

완료되면 php-fpm과 아파치 웹서버를 재시작 해줘야합니다. 

$ sudo /opt/bitnami/ctlscript.sh restart php-fpm
$ sudo /opt/bitnami/ctlscript.sh restart apache

 

2) LEMP 스택 워드프레스 서버에서 Zip 모듈 설치하기

LEMP 스택 서버구성에서는 아래의 절차를 거쳐 설치하면 되겠습니다.

php-zip 모듈 설치 확인

$ php -m | grep zip
$ php -i | grep 'ZIP'

위 명령어는 각각 컴파일된 zip 모듈이 로드되었는지 확인하는 것과, php 설정에서 zip에 관한 내용을 출력하는 명령어입니다.

ZIP-based phar archives 는 enabled 이지만 zip 모듈이 없음위 처럼 첫번째 명령어를 입력후 아무런 출력도 되지않으면 현재 로드된 php-zip 모듈이 없는 것입니다. 다만 zip 모듈의 클래스인 ZipArchives를 사용하도록 설정만 되어있는 것 같네요.

apt 레파지토리 업데이트 및 설치할 php-zip 패키지 확인

먼저 update 명령어로 apt 레파지토리 리스트를 최신으로 업데이트 하고, plicy 명령어에 php*-zip 처럼 중간에 와일드카드 문자*를 넣어서 검색해줍니다.

$ sudo apt update
$ sudo apt policy php*-zip

apt 업데이트 후 policy명령어로 검색여러개의 php-zip 패키지. php-zip, php7.2-zip, php7.0-zip위 그림처럼 php-zip 패키지가 여럿 나오는데요. 이중에 하나라도 설치되어있는게 있을 수 있고, Installed:(none)이라고 나오는 패키지는 설치되지 않은 것입니다.

php-zip 모듈 설치

아무것도 설치되지 않았다면 자신의 php 버전과 맞는 버전을 골라 아래 형식처럼 설치하면 되는데 버전은 버전은 Candidate:에 7.2.11 처럼 나오는 것이 PHP 버전입니다. 앞에 숫자 한자리 도는 두자리까지만 맞으며 왠만해서는 호환성이 보장됩니다.

sudo apt install 패키지이름

제 경우 LEMP 스택을 설치했을 때 PHP 7.2버전을 설치했고, 위 그림에서 패키지 이름이 php-zip 인 것이 7.2 버전이므로 아래처럼 설치하겠습니다.

sudo apt install php-zip

Do you want to continue? 질문에 Y입력

그러면 위처럼 Creating config file … 메시지가 나오면서 완료됩니다. 이제 아래처럼 명령어를 입력해 잘 로딩되었는지확인해봅니다.

zip enabled

그리고 nginx와 php-fpm을 재시작 해주세요.

  • php-fpm 재시작 명령어
    • sudo systemctl restart php7.2-fpm
  • nginx 재시작 명령어
    • sudo nginx -t 로 문법 확인 후 OK메시지가 나오면…
    • sudo service nginx restart 로 재시작

PHP XML 파서의 DOMDocument 확장 클래스

HTML 마크업 언어(코드)를 인간이 보기좋은 웹페이지로 렌더링 하는 것처럼 비슷한 용도로 XML 이라는 언어도 있는데요. XML 코드를 해석(파싱,Parsing)하기위해서는 XML Parser 가 필요합니다. 보통은 php-xml 모듈이 설치되었겠지만, DOMDocument 클래스 확장을 필요로 하는 워드프레스 플러그인도 있더군요.

워드프레스 관리자화면에 서버정보, phpinfo() 실행결과, MySQL 정보를 보여주는 페이지를 마련해주는 WP-ServerInfo 플러그인 같은게 그러 예입니다. 

참고: phpinfo()는 서버의 php 설정내용을 출력하는 PHP 프로그램 함수이름입니다.

 

1) 비트나미 스택 워드프레스에서 PHP XML 모듈

별도의 패키지로 구성된 비트나미 스택에서는 PHP XML 모듈이 이미 로딩 되어있을 겁니다. 아래 명령어로 확인 가능합니다.

php -m | grep xml

결과: libxml, xml, xmlreader, xmlrpc, xmmlwriter

그렇지 않다면 아래 LEMP 스택에서의 예처럼 설치해주고 php-fpm과 아파치웹서버를 아래 명령어로 재시작해주세요.

$ sudo /opt/bitnami/ctlscript.sh restart php-fpm
$ sudo /opt/bitnami/ctlscript.sh restart apache

 

2) LEMP 스택(nginx) 워드프레스에서 PHP XML 모듈 설치하기

 

서버에 로딩된 php-xml 모듈 확인

PHP XML 모듈이 로딩되어있는지 확인해봅시다.

php -m | grep xml

libxml 만 나온다

libxml 만 있을 뿐 xml과 xmlreader가 없는 모습입니다. 아래 절차를 거쳐 설치해봅시다.

apt로 설치가능한 모든 php-xml 패키지 보기

update 명령어로 우선 apt 레파지토리 리스트를 갱신해주고, policy 명령어로 패키지이름을 검색할 때 php*-xml처럼 찾아보면 중간에 별표 *대신 아무단어나 포함되는 패키지 이름을 모두 검색하게 됩니다.

$ sudo apt update
$ sudo apt policy php*-xml

그러면 아래 그림처럼 여러가지 PHP 버전의 php-xml 패키지 이름이 나열되고, 어떤 패키지가 설치되어있는지(Installed), 어떤 버전을 설치 가능한지(Candidate) 알 수 있습니다.

php-xml, php7.2-xml, php7.3-xml

php-xml 설치

제 LEMP스택은 PHP 7.2 버전을 사용중이고 php-xml 이라는 이름의 패키지의 Candidate가 7.2버전용이므로 php-xml을 설치하겠습니다. 

sudo apt install php-xml

그러면 아래처럼 Creating config file… 메시지가 나오면서 완료됩니다. 이제 다시 한번 xml 글자가 들어가는 php 모듈이 어떤게 로딩되었는지 확인해봅니다.

php -m | grep xml

libxml, xml, xmlreader, xmlwriter 로딩됨

이제 nginx 웹서버와 php-fpm을 재시작 해주면 됩니다.

  • php-fpm 재시작 명령어
    • sudo systemctl restart php7.2-fpm
  • nginx 재시작 명령어
    • sudo nginx -t 로 문법 확인 후 OK메시지가 나오면…
    • sudo service nginx restart 로 재시작

댓글은 익명이나 SNS, wordpress.com 로그인 지원). 마크다운 문법 사용가능(Shift+~ 키로 특정문구 혹은 위아래 ~~~으로감싸서 여러줄을 코드블락으로 작성)