우분투 NGINX에 PHP,PHP-FM 설치


📖워드프레스로 웹 사이트 만들기 » 2부 워드프레스 설치 » 워드프레스 설치 » 우분투 LEMP스택에 워드프레스 설치 » 우분투 NGINX에 PHP,PHP-FM 설치


우분투에 PHP와 PHP-FM을 설치한다. PHP 설치 후 php.ini 과 nginx 설정한다.

php logo

PHP, PHP 설치

현재 워드프레스의 권장 PHP 버전은 7.4이다. 우분트 20에는 PHP 7.4를 설치할 수 있게 되어 있다.

1.필수 패키지 업데이트

sudo apt install software-properties-common apt-transport-https -y

2. Ondřej Surý PHP 저장소를 추가

Debian의 PHP 유지 관리자로 활동했으며 Ubuntu 서버와 사용자 사이에서 널리 사용되는 Ondrej의 PHP 리포지토리를 가져온다.

sudo add-apt-repository ppa:ondrej/php -y

3. APT 패키지 업데이트하고 업그레이드한다.

sudo apt update

sudo apt upgrade

Do you want to continue? [Y/n] 나오면 y를 입력한다.

4. PHP 설치

sudo apt-get install php

설치된 PHP 버전을 확인한다.

php -V

5. php-fpm 설치

sudo apt-get install php7.4-fpm

Do you want to continue? [Y/n] 나오면 y를 입력한다.

6. PHP 추가 패키지 설치

php와 php-fm 설치는 끝났다. 이제 워드프레스에서 사용하는 php-fm 추가 패키지를 설치한다.

  • php-mysql : php에서 mysql에 접근 가능하게해주는 모듈
  • php-mbstring: 2바이트 확장 문자를 읽을 수 있도록 해주는 모듈.
  • php-7.4-gd: 워드프레에서 이미지 자동 리사이징, 이미지 편집
  • php7.4-imagick: 워드프레스에서 이미지 리사이징 할 때 품질 향상
  • php7.4-zip

아래 명령어로 한번에 설치할 수 있다.

sudo apt-get install -y php7.4-{curl,gd,mbstring,mysql,soap,imagick,json,intl,zip,xml,xmlrpc,cli,xsl} unzip

7. PHP-FPM 재시작

php-fm 을 재시작한다

sudo systemctl restart php7.4-fpm

php.ini 에 설정 추가

php.ini 에 설치한 php 확장 모듈과 타임존을 서울로 설정한다.

php.ini 는 두 곳에 있다. 이 두 개의 파일을 열어서 수정한다.

sudo vi /etc/php/7.4/fpm/php.ini

sudo vi /etc/php/7.4/cli/php.ini

타임존을 서울로 변경

date.timezone 이 주석으로 되어 있다. 이 부분을 수정하면 된다. php.ini 파일은 아주 크므로 date.timezone 을 검색해서 찾는다. vi 에서 /;date.timezone 를 입력한다.

;date.timezone =

주석을 삭제하고 Asia/Seoul을 추가한다.

date.timezone = Asia/Seoul

php.ini 에 확장 옵션 추가

앞에서 설치한 zip과 imagick 확장 옵션을 추가한다. 

extension=imagick
extension=zip.so

업로드 파일 크기 지정

다음 항목을 찾아서 값을 수정한다.

upload_max_filesize = 32M
post_max_size = 64M
upload_max_filesize = 64M
max_input_vars = 3000
max_input_time = 300
max_execution_time =  300

php.ini 파일 두 개를 수정한 후에 php-fm 을 재시작한다.

sudo systemctl restart php7.4-fpm

nginx 설정에 PHP 적용

웹 서버인 nginx 에서 php 를 처리할 수 있게 nginx 설정을 추가한다.

1. nginx 설정 파일을 연다.

sudo vi /etc/nginx/sites-available/default

2. 처리할 순서에 index.php를 추가

server 의 index 의 맨 앞에 index.php 를 추가한다. 웹 서버가 디렉토리안에서 처리해야할 순서이다. 워드프레스는 디렉토리에서 index.php 가장 먼저 실행하게 한다.

server {
    listen 80 default_server; 
    listen [::]:80 default_server;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name _;

    location / {
      try_files $uri $uri/ =404;
   }

}

3. php 처리 설정 추가

server { 안에 php 처리 부분을 추가한다. 디폴트로 들어 있는 php 설정 값의 주석을 푼 후에 타임아웃 등의 설정을 추가한다.

location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/run/php/php7.4-fpm.sock;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params; 
       fastcgi_read_timeout 300;
    }

연 김에 .htaccess 사용하지 않게 주석을 삭제한다.

location ~ /\.ht {
                deny all;
        }

4. 저장하고 빠져 나온다.

5. nginx 설정에 문제가 없는지 체크하고 재시작한다.

sudo nginx -t

nginx 를 재시작한다.

sudo nginx -s reload

nginx 업로드 용량 설정

파일 업로드 할 때 용량 제한은 php 에만 있는게 아니라 웹 서버에도 있다. nginx 는 reverse proxy 를 사용할 때 업로드 용량 제한이 있다. 워드프레스에서 이미지 업로드 할 때는 문제가 없고 플러그인을 업로드해서 설치할 때 관련이 있다. 파일 업로드 용량 기본은 1MB 이다. 엘레멘트 프로 플러그인을 업로드해서 설치할 때 오류가 발생할 수 있다.

nginx 설정에서 client_max_body_size 로 파일 업로드 용량을 변경한다. 업로드 용량을 제한하지 않으려면 0을 입력한다

http {

	client_max_body_size 64M;
}

nginx를 재시작하면 반영된다.

sudo nginx -s reload

LEMP 스택을 모두 설치했다. 다음은 워드프레스를 설치한다.