워드프레스 4주차: MySQL 데이터베이스 구축 및 연동

지난 주에는 워드프레스 실행에 필요한 웹 서버(Nginx)와 PHP 환경을 구축했습니다. 이번 주차에서는 워드프레스의 데이터를 저장할 MySQL 데이터베이스를 설치하고 설정하는 방법을 알아보겠습니다.
데이터베이스는 워드프레스의 핵심 구성 요소로, 게시물, 페이지, 사용자 정보, 설정 등의 모든 콘텐츠를 저장하는 역할을 합니다.

1. MySQL vs MariaDB: 데이터베이스 선택하기

워드프레스는 MySQL 또는 그 대체제인 MariaDB와 호환됩니다.
MariaDB는 MySQL의 포크(fork)로, 성능과 보안면에서 일부 개선점이 있습니다.
이 가이드에서는 MariaDB를 사용하겠지만, 원하는 경우 MySQL을 선택해도 무방합니다.

MariaDB 선택 이유:

  • 오픈 소스 커뮤니티 지원이 활발함

  • MySQL과 완벽한 호환성 제공

  • 일부 성능 최적화 및 보안 개선

  • 대부분의 리눅스 배포판에서 기본 지원

2. MariaDB 설치

SSH를 통해 인스턴스에 접속한 후, 다음 명령어로 MariaDB를 설치합니다:

bash
sudo apt update
sudo apt install mariadb-server -y

설치가 완료되면 MariaDB 서비스를 시작하고 부팅 시 자동 실행되도록 설정합니다:

bash
sudo systemctl start mariadb
sudo systemctl enable mariadb

서비스 상태를 확인합니다:

sudo systemctl status mariadb

3. MariaDB 보안 설정

새로 설치된 MariaDB의 보안을 강화하기 위해 보안 스크립트를 실행합니다:

sudo mysql_secure_installation

이 스크립트는 다음과 같은 보안 설정을 도와줍니다:

  1. root 사용자의 비밀번호 설정

  2. 익명 사용자 제거

  3. root 사용자의 원격 로그인 비활성화

  4. 테스트 데이터베이스 제거

  5. 권한 테이블 다시 로드

각 질문에 적절히 답변하여 보안 설정을 완료합니다:

  • “Enter current password for root”: 초기 설치 시에는 비밀번호가 없으므로 Enter 키를 누릅니다.

  • “Switch to unix_socket authentication”: N 입력 후 Enter

  • “Change the root password”: Y 입력 후 Enter, 그리고 강력한 비밀번호 설정

  • “Remove anonymous users”: Y 입력 후 Enter

  • “Disallow root login remotely”: Y 입력 후 Enter

  • “Remove test database”: Y 입력 후 Enter

  • “Reload privilege tables now”: Y 입력 후 Enter

4. 워드프레스를 위한 데이터베이스 및 사용자 생성

이제 워드프레스 전용 데이터베이스와 사용자를 생성합니다:

sudo mysql -u root -p

root 비밀번호를 입력한 후, MySQL 쉘에서 다음 명령어를 실행합니다:

sql
 CREATE DATABASE wordpress_db;
 CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'your_strong_password';
 GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';
FLUSH PRIVILEGES;
 EXIT;

 

위 명령어에서:

  • wordpress_db: 워드프레스 데이터베이스 이름 (원하는 이름으로 변경 가능)

  • wordpress_user: 워드프레스용 데이터베이스 사용자 이름 (원하는 이름으로 변경 가능)

  • your_strong_password: 강력한 비밀번호로 변경 (특수문자, 숫자, 대소문자 조합 권장)

이 정보는 워드프레스 설치 과정에서 필요하므로 기억해두어야 합니다.

5. MariaDB 성능 최적화

워드프레스의 데이터베이스 성능을 향상시키기 위해 MariaDB 설정을 최적화할 수 있습니다:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld] 섹션에 다음 설정을 추가합니다:

# 기본 캐시 및 버퍼 설정
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT

# 쿼리 캐시 설정
query_cache_type = 1
query_cache_size = 32M
query_cache_limit = 1M

# 연결 설정
max_connections = 100

이 설정은 4GB 메모리가 있는 서버에 적합합니다.
서버 사양에 따라 값을 조정할 수 있습니다.
설정을 저장한 후 MariaDB를 재시작합니다:

sudo systemctl restart mariadb

6. phpMyAdmin 설치 (선택 사항)

데이터베이스를 웹 인터페이스로 관리하고 싶다면 phpMyAdmin을 설치할 수 있습니다:

sudo apt install phpmyadmin -y

 

설치 과정에서:

  • “Web server to reconfigure automatically”: 웹 서버 선택 화면에서 아무것도 선택하지 않고 Tab 키를 눌러 OK로 이동 후 Enter

  • “Configure database for phpmyadmin with dbconfig-common”: Yes 선택

  • “MySQL application password for phpmyadmin”: phpMyAdmin용 비밀번호 설정

설치 후 Nginx와 연동하기 위해 설정 파일을 생성합니다:

bash
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
sudo chown -R www-data:www-data /usr/share/phpmyadmin
sudo chown -R www-data:www-data /var/lib/phpmyadmin

Nginx 설정을 변경합니다:

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

server 블록 내에 다음 내용을 추가합니다:

location /phpmyadmin {
root /var/www/html;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /var/www/html;
fastcgi_pass unix:/run/php/php-fpm.sock; # PHP 버전에 맞게 수정
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /var/www/html;
}
}

PHP-FPM 소켓 경로는 PHP 버전에 따라 달라질 수 있습니다. 정확한 경로로 수정해주세요.

변경 후 Nginx를 재시작합니다:

sudo nginx -t # 설정 문법 검사
sudo systemctl restart nginx

이제 웹 브라우저에서 http://[인스턴스_공개IP]/phpmyadmin에 접속하여 phpMyAdmin을 사용할 수 있습니다.

7. 데이터베이스 백업 설정

워드프레스 데이터베이스를 정기적으로 백업하는 것은 매우 중요합니다. 간단한 백업 스크립트를 생성해보겠습니다:

bash
sudo nano /usr/local/bin/backup-wordpress-db.sh

다음 내용을 입력합니다:

bash
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H%M)
BACKUP_DIR="/home/ubuntu/backups"
# 백업 디렉토리 생성
mkdir -p $BACKUP_DIR# 데이터베이스 백업
mysqldump -u wordpress_user -p‘your_strong_password’ wordpress_db | gzip > $BACKUP_DIR/wordpress-db-$DATE.sql.gz# 30일 이상된 백업 파일 삭제
find $BACKUP_DIR -name “wordpress-db-*.sql.gz” -type f -mtime +30 -delete

스크립트에 실행 권한을 부여합니다:

bash
sudo chmod +x /usr/local/bin/backup-wordpress-db.sh

정기적인 백업을 위해 cron 작업을 설정합니다:

bash
sudo crontab -e

다음 라인을 추가하여 매일 새벽 3시에 백업을 실행합니다:

0 3 * * * /usr/local/bin/backup-wordpress-db.sh

8. MySQL/MariaDB 모니터링

데이터베이스 상태를 모니터링하려면 다음 명령어를 사용합니다:

sudo mysqladmin -u root -p status
sudo mysqladmin -u root -p extended-status
sudo mysqladmin -u root -p processlist

데이터베이스 성능 문제 진단에 도움이 되는 추가 도구를 설치할 수도 있습니다:

sudo apt install mytop -y

mytop을 실행하여 MySQL/MariaDB 프로세스를 실시간으로 모니터링합니다:

mytop -u root -p

다음 주차 예고

이번 주차에서는 워드프레스 데이터를 저장할 MySQL/MariaDB 데이터베이스를 설치하고 구성했습니다. 다음 주차에서는 실제 워드프레스를 설치하고 기본 설정을 완료하여 블로그를 운영할 준비를 갖추겠습니다.

1주차: 오라클 클라우드 Free Tier 소개 및 계정 생성

2주차: Compute 인스턴스 생성 및 환경 설정

3주차: 워드프레스용 웹 서버 (Apache/Nginx) 및 PHP 설치

Leave a Comment