우분투 Nginx 워드프레스 설치 중 SSL 갱신 오류와 DB 연결 오류 해결 정리

오라클 클라우드나 AWS 라이트세일 같은 우분투(Ubuntu) 서버 환경에서 Nginx 기반으로 워드프레스를 직접 설치하다 보면, 예상치 못한 여러 시스템 에러와 마주하게 됩니다.

특히 도메인을 변경하면서 발생하는 Nginx SSL 설정 충돌, Certbot 인증서 발급 시 나타나는 Secondary validation timeout 오류, 그리고 초기 설정 단계의 워드프레스 데이터베이스 연결 오류는 대표적인 걸림돌입니다.

이번 글에서는 실제 워드프레스 설치 과정에서 발생한 핵심 오류들의 원인과 터미널 명령어를 통한 해결 방법을 단계별로 정리합니다.

1. Nginx 이전 도메인 SSL 인증서 경로 충돌 해결

새로운 도메인을 연결하고 Nginx 설정을 테스트(sudo nginx -t)할 때, 기존에 사용하던 구 도메인의 인증서 파일이 없다는 에러가 발생하며 웹서버 리로드가 막히는 경우가 있습니다.

nginx: [emerg] cannot load certificate ".../fullchain.pem": BIO_new_file() failed (SSL: error: ... No such file or directory)

원인

새 도메인 인증서를 발급받았더라도, Nginx 기본 가상 호스트 설정 파일(/etc/nginx/sites-available/default) 내부에 과거 도메인의 SSL 경로(ssl_certificate, ssl_certificate_key)가 주석 처리되지 않고 활성화되어 있으면 충돌이 발생합니다.

해결 방법

설정 파일을 일일이 열어 찾을 필요 없이 sed 명령어를 사용하여 터미널에서 구 도메인 경로만 즉시 주석(#) 처리합니다.

# 구 도메인 경로 자동 주석 처리
sudo sed -i '/구도메인\/fullchain\.pem/s/^/#/' /etc/nginx/sites-available/default
sudo sed -i '/구도메인\/privkey\.pem/s/^/#/' /etc/nginx/sites-available/default

# Nginx 문법 검사 및 재실행
sudo nginx -t && sudo systemctl reload nginx

syntax is ok 메시지가 확인되면 기존 SSL 경로 충돌이 깔끔하게 정리됩니다.

2. Certbot Multi-Perspective 실패: Secondary validation 타임아웃

루트 도메인과 www 서브도메인을 단일 SSL 인증서로 묶기 위해 certbot 명령어(-d 도메인 -d www.도메인)를 실행할 때 종종 아래와 같은 에러로 발급이 중단됩니다.

Certbot failed to authenticate some domains (authenticator: nginx).
Detail: During secondary validation: [이전 IP]: Fetching http://... Timeout during connect

원인: Let’s Encrypt 다중 관점 검증

국내 DNS 조회 사이트나 내 PC에서는 도메인 IP가 정상적으로 변경된 것으로 보여도 에러가 날 수 있습니다. Let’s Encrypt는 보안을 위해 전 세계 3~4곳의 해외 보조 검증 서버(Secondary Validation)에서 동시에 도메인 IP를 조회합니다.

이때 해외 네임서버 캐시(TTL) 갱신이 늦어져 구 IP를 조회하게 되면 타임아웃이 발생합니다.

해결 방법

글로벌 공용 DNS(Cloudflare, Google)를 지정해 전파가 완료되었는지 먼저 확인합니다.

# 글로벌 DNS 전파 확인
dig @1.1.1.1 내도메인.com +short
dig @8.8.8.8 내도메인.com +short

두 조회 결과 모두 현재 서버의 공인 IP로 일치하게 출력되면, 다시 인증서 확장(Expand) 명령을 실행합니다.

sudo certbot --nginx -d 내도메인.com -d www.내도메인.com
# 선택창이 뜨면 E (Expand) 입력

인증서 발급 완료 후 sudo certbot renew --dry-run을 실행해 Congratulations, all simulated renewals succeeded 메시지가 뜨면 90일 주기 자동 연장까지 정상 등록된 것입니다.

3. 워드프레스 데이터베이스 연결 오류 및 DB 계정 설정

웹 브라우저에서 워드프레스 초기 설정 화면(wp-admin/setup-config.php)에 접속했을 때 가장 흔히 겪는 문제가 “데이터베이스 연결 중 오류” 또는 “데이터베이스를 선택할 수 없습니다”입니다.

MySQL/MariaDB에서 계정을 생성할 때 지정한 접속 호스트('localhost')와 데이터베이스 이름, 사용자명이 화면 입력값과 정확히 일치해야 합니다.

MySQL DB 및 전용 사용자 생성

터미널에서 root 권한으로 데이터베이스에 접속한 뒤 아래 명령어로 워드프레스 전용 DB와 유저를 명확하게 생성합니다.

-- MySQL 접속
sudo mysql -u root

-- 1. 데이터베이스 생성
CREATE DATABASE IF NOT EXISTS wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 2. 로컬 전용 사용자 생성 및 비밀번호 설정
CREATE USER IF NOT EXISTS 'wpuser'@'localhost' IDENTIFIED BY '사용할비밀번호';
ALTER USER 'wpuser'@'localhost' IDENTIFIED BY '사용할비밀번호';

-- 3. 권한 부여 및 적용
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

워드프레스 브라우저 설정 입력값

  • 데이터베이스 이름: wordpress (방금 생성한 DB명)
  • 사용자명: wpuser (@'localhost'는 제외하고 계정 아이디만 기재)
  • 비밀번호: 위에서 설정한 비밀번호
  • 데이터베이스 호스트: localhost
  • 테이블 접두어: wp_

값을 입력하고 [제출]을 누르면 즉시 DB 연결이 완료되고 관리자 계정 생성 단계로 넘어갑니다. 실제 도메인을 활성화 한 후 설치하셔야 후 작업 필요 없이 주소가 깔끔하게 생성됩니다.


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다