[WordPress]블로그 Apache2 to Nginx

배경

지난 밤 EC2 인스턴스에서 장애가 발생했다.

기존 /etc/fstab에 EFS 자동 마운트 옵션을 주었는데, 비용 절감을 위해 EFS 를 삭제하면서 fstab을 업데이트 하는 것을 까먹어서 문제가 발생했다.

SSH 접속이 되지 않아서, tty 연결을 통해서 콘솔에서 인스턴스에 연결하고 /etc/fstab 마운트 문제를 해결한 뒤 서버를 다시 재부팅 했다.

그럼에도 사이트 접속이 안되어서 확인해보니 Apache SSL 관련 설정이 문제를 일으키고 있었고, 이번 기회(장애)에 Apache를 Nginx로 바꾸려는 시도를 하게되었다.

참고한 URL은 다음과 같다.

Configure Nginx to Serve WordPress over HTTPS on Ubuntu 20.04 in 2021 (spinupwp.com)

위 페이지에서 대부분의 옵션을 내 블로그에 맞게 수정하여 썼다.

물론 당연히 PHP 가 있는 주소나, 로그 파일 저장 위치 같은 경우는 home 폴더에 임의의 디렉토리를 설정해서 사용하였다.

자동으로 SSL을 업데이트 해주는 certbot을 이용해서 SSL 등록도 진행하였고,다 순조롭게 진행되는 듯 싶었으나

막상 블로그에 접속하려고 하자 502에러가 발생했었다.

에러

  1. php-fpm8.0 미설치
    2022/01/16 15:01:08 [crit] 21328#21328: *49 connect() to unix:/run/php/php8.0-fpm.sock failed (2: No such file or directory) while connecting to upstream

    제일 먼저 발생한 에러는 로그를 확인한 결과 php8.0-fpm이 설치되어 있지 않아서 발생하는 오류였다.
    php8.0-fpm을 설치하자 이 에러는 사라졌다.
sudo apt update
sudo apt install php8.0 php8.0-fpm
  1. nginx fastcgi 설정 에러
    nginx 설정을 처음 해보는거라서 위 URL 을 따라했지만, 문제가 있었다.
    아래 부분인데, 결과적으로는 include fastcgi.conf; 이 한 줄이 빠져있어서 안되는 것이었다.
    새벽에 구글링을 통해서 다른 사람들이 502 에러가 뜰 때 fastcgi 관련 설정을 어떻게 했는지 검색해서 따라했다.
server {
	``` 생략 
    ```
    location ~ \.php$ {
        include fastcgi.conf;
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

위 두 가지를 해결하자 정상적으로 사이트가 돌아왔고, Apache를 사용할 때 보다 조금 더 속도가 빨라진 것 같다.

성능체크와 캐시 최적화 작업은 추후에 여유가 있을 때 진행예정이다.

후기

블로그에 접속이 안되는 것을 확인하고, Apache2에서 Nginx로 설정을 변경하는데 까지 약 2시간 정도 걸렸다.
nginx 에 대한 지식이 없는 상태에서 nginx 설정을 하려다 보니 처음으로 fast cgi에 대해서도 아주 얕게 찾아보았다.
앞으로는 성능 테스트와 튜닝이 남아있는데 아직 자질구래한 SSL 오류등이 남아 있는걸로 보인다.

또 다음에 흥미로운 주제로 돌아오겠다.