우분투 NGINX에 PHP,PHP-FM 설치
우분투에 PHP와 PHP-FM을 설치한다. PHP 설치 후 php.ini 과 nginx 설정한다.
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 스택을 모두 설치했다. 다음은 워드프레스를 설치한다.