VPS 서버를 구매하고 보안 설정까지 끝냈다면, 이제 워드프레스를 설치할 차례다.

이 글에서는 Ubuntu 서버에 Nginx + PHP + MySQL + WordPress를 설치하는 전체 과정을 정리한다. 직접 VPS에 워드프레스를 설치하면서 겪은 문제(로그인 오류)와 해결 방법도 함께 다룬다.

워드프레스 설치에 필요한 4가지

워드프레스를 서버에서 돌리려면 4가지 구성 요소가 필요하다.

구성 요소 역할
Nginx 웹서버 — 방문자의 요청을 받아서 처리하는 문
PHP 워드프레스가 돌아가는 엔진
MySQL 글, 댓글, 설정값을 저장하는 데이터베이스
WordPress 블로그 본체

4개가 전부 설치되어야 워드프레스가 정상 작동한다. 하나라도 빠지면 안 된다.

1단계: Nginx 설치 (웹서버)

Nginx는 방문자가 사이트에 접속할 수 있게 해주는 웹서버다.

sudo apt update
sudo apt install -y nginx

설치 후 브라우저에서 http://서버IP를 입력하면 Nginx 기본 페이지가 나온다. 이 화면이 보이면 웹서버가 정상 작동하는 것이다.

만약 페이지가 안 뜨면 방화벽(UFW)에서 80번 포트가 열려 있는지 확인하자.
sudo ufw allow 80

2단계: PHP 설치

워드프레스는 PHP로 만들어져 있다. PHP 본체와 함께 워드프레스에 필요한 확장 모듈을 같이 설치해야 한다.

sudo apt install -y php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-intl php8.3-imagick
모듈 역할
php8.3-fpm PHP 실행 엔진 (Nginx와 연동)
php8.3-mysql 데이터베이스 연결
php8.3-gd, imagick 이미지 처리 (썸네일 생성 등)
php8.3-mbstring 한글 처리
php8.3-curl 외부 API 통신

명령어 한 줄이면 전부 설치된다. 하나씩 따로 설치할 필요 없다.

3단계: MySQL 설치 + 데이터베이스 생성

MySQL은 워드프레스의 모든 데이터를 저장하는 데이터베이스다.

sudo apt install -y mysql-server

설치 후 워드프레스 전용 데이터베이스와 사용자를 만들어야 한다.

sudo mysql -u root

MySQL에 접속한 뒤 아래 명령어를 실행한다.

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '비밀번호입력';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

중요: 문자셋을 반드시 utf8mb4로 설정해야 한다. 한글과 이모지를 정상적으로 저장하려면 이 설정이 필수다.

4단계: 워드프레스 다운로드 + 설치

WP-CLI를 사용하면 워드프레스를 명령어 한 줄로 설치할 수 있다.

# WP-CLI 설치
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# 워드프레스 다운로드
cd /var/www
sudo mkdir wordpress
sudo chown www-data:www-data wordpress
sudo -u www-data wp core download --path=/var/www/wordpress

다운로드 후 데이터베이스 연결 설정을 한다.

sudo -u www-data wp config create \
  --dbname=wordpress \
  --dbuser=wpuser \
  --dbpass=비밀번호입력 \
  --path=/var/www/wordpress

워드프레스 설치를 완료한다.

sudo -u www-data wp core install \
  --url=http://서버IP \
  --title="사이트 이름" \
  --admin_user=admin \
  --admin_password=관리자비밀번호 \
  --admin_email=이메일주소 \
  --path=/var/www/wordpress

5단계: Nginx ↔ 워드프레스 연동

Nginx가 워드프레스를 인식하도록 설정 파일을 만들어야 한다.

sudo nano /etc/nginx/sites-available/wordpress

아래 내용을 입력한다.

server {
    listen 80;
    server_name 서버IP;
    root /var/www/wordpress;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-params.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

설정 파일을 활성화하고 Nginx를 재시작한다.

sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

nginx -t에서 “test is successful”이 나오면 성공이다. 브라우저에서 서버 IP를 입력하면 워드프레스 화면이 나온다.

로그인이 안 될 때 — 비밀번호 오류 해결

설치는 잘 됐는데, 관리자 페이지에 로그인이 안 되는 경우가 있다. 비밀번호가 분명 맞는데 계속 오류가 나는 상황.

직접 겪어본 결과, 원인은 워드프레스의 비밀번호 암호화 방식이었다.

워드프레스는 비밀번호를 PHPass라는 특수한 방식으로 암호화한다. MySQL에서 직접 비밀번호를 바꿔도, 이 암호화 방식에 맞지 않으면 로그인이 안 된다.

해결 방법 — WP-CLI로 비밀번호 재설정:

sudo -u www-data wp user update admin --user_pass=새비밀번호 --path=/var/www/wordpress

이 명령어는 워드프레스 자체 함수를 사용해서 비밀번호를 변경하기 때문에 PHPass 암호화가 정상 적용된다. 실행 후 바로 로그인이 된다.

팁: MySQL에서 직접 UPDATE wp_users SET user_pass='...'로 바꾸면 안 된다. 반드시 WP-CLI나 워드프레스 함수를 통해 변경해야 한다.

설치 완료 확인

구성 요소 확인 방법
Nginx sudo systemctl status nginx — active 확인
PHP php -v — 버전 확인
MySQL sudo systemctl status mysql — active 확인
WordPress 브라우저에서 서버IP 접속 — 워드프레스 화면 확인

정리

VPS에 워드프레스를 설치하는 전체 순서:

  1. Nginx 설치 — 웹서버 세팅
  2. PHP + 확장 모듈 설치 — 워드프레스 엔진
  3. MySQL 설치 + DB 생성 — 데이터 저장소 (utf8mb4 필수)
  4. 워드프레스 다운로드 + 설정 — WP-CLI로 간편 설치
  5. Nginx ↔ 워드프레스 연동 — 설정 파일 생성 + 재시작

로그인 오류가 나면 MySQL에서 직접 수정하지 말고, wp user update 명령어로 비밀번호를 재설정하면 해결된다.

다음 단계는 도메인을 연결하는 것이다. 서버 IP 대신 내 도메인으로 접속할 수 있게 만들어 보자.