안녕하세요! 
지난 포스팅에서 네트워크 설정과 MySQL HeatWave 데이터베이스 구성을 알아보았는데요. 많은 분들이 실제 설치와 구성 과정에서 어려움을 겪으신다는 이야기를 해주셨습니다. 그래서 이번에는 워드프레스를 처음부터 차근차근 설치하고 기본 구성하는 방법을 자세히 알아보도록 하겠습니다.
이번 포스팅에서 다룰 내용
오늘은 워드프레스 설치의 기초가 되는 다음 내용들을 자세히 살펴보겠습니다:
•
Oracle Linux 초기 설정 및 보안 강화
•
워드프레스 실행을 위한 환경 구성 (LAMP 스택)
•
데이터베이스 연결과 기본 설정
•
워드프레스 설치 및 초기 구성
이번 포스팅에서는 기본적인 설치와 구성에 집중하고, 성능 최적화나 모니터링 설정과 같은 고급 주제는 다음 포스팅에서 다루도록 하겠습니다. 그럼 시작해볼까요?
1. Oracle Linux 초기 설정하기
시스템 접속 및 기본 설정
SSH(Secure Shell) 접속을 사용하여 실행 중인 Linux 인스턴스에 접속해야 합니다. 접속을 위해서는 인스턴스 생성 시 만들었던 프라이빗 키가 필요해요.
인스턴스 만들 때 이미 프라이빗 키를 만들어 두었으므로 SSH에 사용하시면 됩니다. 혹시 키를 만들지 않으셨다면, OCI 콘솔에서 새로 생성하실 수 있어요.
Linux/MacOS 사용자:
ssh -i ~/.ssh/oci_wordpress opc@[인스턴스_공용_IP]
Bash
복사
Windows 사용자:
1.
PuTTY 실행
2.
호스트 이름에 opc@[인스턴스_공용_IP] 입력
3.
SSH > Auth 메뉴에서 개인키 파일(.ppk) 선택
4.
'열기' 클릭
[처음 접속 시 주의사항]
•
"fingerprint" 관련 경고가 뜨면 'Accept'를 선택하면 됩니다.
•
처음에는 꼭 opc 사용자로 접속해야 합니다.
•
비밀번호를 물어보지 않는 것이 정상입니다.
시스템을 최신 상태로 업데이트하는 것은 매우 중요합니다. 보안 패치와 버그 수정이 포함되어 있기 때문이죠.
# 시스템 패키지 정보 업데이트
sudo dnf update -y
# 모든 패키지 업그레이드
sudo dnf upgrade -y
Bash
복사
•
업데이트 중에 SSH 연결이 끊기면 잠시 기다렸다가 다시 접속하세요.
•
업데이트 완료 후 재부팅이 필요하다는 메시지가 나오면 꼭 재부팅해 주세요.
•
대규모 업데이트의 경우 시간이 오래 걸릴 수 있으니 여유를 가지고 기다려주세요.
EPEL(Extra Packages for Enterprise Linux) 저장소는 추가 패키지 설치를 위해 꼭 필요합니다.
sudo dnf install oracle-epel-release-el8 -y
Bash
복사
•
추가 패키지 설치를 위해 필요합니다.
•
워드프레스 운영에 유용한 도구들이 포함되어 있습니다.
보안 설정하기
보안 설정은 시스템 운영에 있어 가장 중요한 부분 중 하나입니다. 특히 워드프레스와 같은 웹 서버는 항상 외부 공격의 위험에 노출되어 있기 때문에, 철저한 보안 설정이 필요해요.
SELinux는 Linux 시스템의 보안을 강화해주는 도구인데요, 워드프레스 운영을 위해 몇 가지 설정이 필요합니다.
# SELinux 상태 확인
getenforce
# 설정 파일 백업
sudo cp /etc/selinux/config /etc/selinux/config.bak
Bash
복사
[중요!] 워드프레스 초기 설치 시에는 SELinux를 Permissive 모드로 설정하는 것이 좋습니다.
# 임시로 Permissive 모드로 변경
sudo setenforce 0
Shell
복사
# 웹 서버 포트 허용
sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443
# 웹 서버 정책 설정
sudo setsebool -P httpd_can_network_connect_db 1
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_can_sendmail 1
Bash
복사
[자주 발생하는 문제]
"semanage: command not found" 에러가 발생한다면?
sudo dnf install policycoreutils-python-utils -y
Bash
복사
# SELinux 문제 해결 도구 설치
sudo dnf install setroubleshoot setools -y
# SELinux 감사 로그 확인
sudo ausearch -m AVC -ts recent | grep httpd
Bash
복사
방화벽 설정
Oracle Linux는 firewalld를 사용합니다. 이를 통해 시스템의 네트워크 접근을 효과적으로 제어할 수 있습니다.
# 상태 확인
sudo systemctl status firewalld
# 기본 서비스 허용
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 설정 적용
sudo firewall-cmd --reload
Bash
복사
sudo firewall-cmd --list-all
Bash
복사
설정이 제대로 되었다면 다음과 비슷한 출력을 보실 수 있습니다:
public (active)
target: default
...
services: dhcpv6-client http https ssh
...
Plain Text
복사
2. 워드프레스 실행 환경 구성하기
워드프레스를 실행하기 위해서는 LAMP(Linux, Apache, MySQL, PHP) 스택이 필요합니다. 각 구성 요소를 하나씩 차근차근 설정해보겠습니다.
Apache 웹 서버 설치 및 설정
# Apache 웹 서버 설치
sudo dnf install httpd -y
# 서비스 시작 및 자동 시작 설정
sudo systemctl start httpd
sudo systemctl enable httpd
Bash
복사
[잠깐!] 서비스 상태 확인하기
sudo systemctl status httpd
Bash
복사
•
초록색 "active (running)" 메시지가 보이면 정상입니다.
•
빨간색 메시지가 보인다면 뭔가 잘못된 거예요!
먼저 기존 설정 파일을 백업해 둡니다.
sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
Bash
복사
이제 설정 파일을 수정해볼게요:
sudo vi /etc/httpd/conf/httpd.conf
Bash
복사
다음 설정들을 찾아서 수정하거나 추가해주세요:
# 서버 정보 숨기기 (보안을 위해 필수!)
ServerTokens Prod
ServerSignature Off
# 디렉토리 설정
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 성능 관련 설정
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
Plain Text
복사
•
ServerTokens Prod: 서버 정보를 최소화하여 보안 강화
•
AllowOverride All: .htaccess 파일 사용 허용
•
KeepAlive: 연결 유지로 성능 향상
•
AllowOverride None으로 되어 있으면 워드프레스 퍼머링크가 작동하지 않아요!
•
KeepAliveTimeout 값이 너무 크면 서버 부하가 증가할 수 있습니다.
PHP 8.2 설치 및 설정
먼저 필요한 저장소들을 확인하고 활성화합니다:
# PHP 모듈 초기화
sudo dnf module reset php
# PHP 8.2 활성화
sudo dnf module enable php:8.2 -y
# PHP 및 필요한 확장 모듈 설치
sudo dnf install php php-mysqlnd php-fpm php-opcache \
php-gd php-xml php-mbstring php-json php-pecl-zip \
php-intl -y
Shell
복사
[참고]
•
Oracle Linux 8에서는 PHP 8.2가 최신 안정 버전입니다
•
추가 확장이 필요한 경우 별도의 저장소 설정이 필요할 수 있습니다
[모듈 설명]
•
php-mysqlnd: MySQL 연결용
•
php-fpm: PHP FastCGI 프로세스 관리자
•
php-opcache: PHP 코드 캐싱으로 성능 향상
•
php-gd: 이미지 처리용
•
나머지는 워드프레스 필수 및 권장 모듈들입니다
PHP 설정은 워드프레스 성능에 직접적인 영향을 미치는 중요한 부분이에요. 차근차근 설정해볼게요!
먼저 설정 파일을 백업해둡니다:
sudo cp /etc/php.ini /etc/php.ini.bak
Bash
복사
이제 설정 파일을 수정해볼까요?
sudo vi /etc/php.ini
Bash
복사
다음 설정들을 찾아서 수정해주세요:
; 메모리 제한
memory_limit = 256M
; 파일 업로드 설정
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
; 에러 처리 (운영 환경 기준)
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
Plain Text
복사
•
memory_limit: PHP 스크립트가 사용할 수 있는 최대 메모리
•
upload_max_filesize: 업로드 가능한 최대 파일 크기
•
post_max_size: POST 요청의 최대 크기 (upload_max_filesize보다 커야 해요!)
•
max_execution_time: 스크립트 최대 실행 시간(초)
MySQL 클라이언트 설치하기
# MySQL 클라이언트 설치
sudo dnf install mysql -y
# MySQL Shell도 설치해볼까요? (선택사항)
sudo dnf install mysql-shell -y
Bash
복사
사용자 홈 디렉토리에 MySQL 설정 파일을 만들어볼게요:
vi ~/.my.cnf
Bash
복사
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
prompt = '\\u@\\h [\\d]>\\_'
Plain Text
복사
chmod 600 ~/.my.cnf
Bash
복사
•
.my.cnf 파일에는 민감한 정보가 포함될 수 있으므로 권한 설정이 중요해요
•
다른 사용자가 읽을 수 없도록 600으로 설정해야 합니다
워드프레스와 MySQL HeatWave를 연결하는 과정은 매우 중요합니다. 보안과 성능 모두를 고려해야 하죠.
a) 데이터베이스 생성
# MySQL HeatWave 접속
mysql -h [MySQL_HeatWave_엔드포인트] -u admin -p
# 데이터베이스 및 사용자 생성
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress_user'@'%' IDENTIFIED BY '안전한_비밀번호';
# 권한 부여
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'%';
FLUSH PRIVILEGES;
Shell
복사
b) 보안 그룹 설정
1.
OCI 콘솔에서 MySQL HeatWave 보안 그룹 수정
2.
수신 규칙 추가:
소스: WordPress 서버의 보안 그룹
포트: 3306
설명: WordPress Database Access
Plain Text
복사
c) 연결 테스트
# 기본 연결 테스트
mysql -h [MySQL_HeatWave_엔드포인트] -u wordpress_user -p
# 데이터베이스 접속 테스트
mysql -h [MySQL_HeatWave_엔드포인트] -u wordpress_user -p wordpress_db -e "SELECT VERSION();"
Shell
복사
d) 성능 최적화 설정
-- 데이터베이스 설정 확인
SHOW VARIABLES LIKE '%max_connections%';
SHOW VARIABLES LIKE '%timeout%';
-- 필요한 경우 설정 조정
SET GLOBAL max_connections = 200;
SET GLOBAL connect_timeout = 60;
SQL
복사
e) 문제 해결
자주 발생하는 연결 문제와 해결 방법:
1.
"Access denied" 에러
-- 사용자 권한 재설정
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'%';
FLUSH PRIVILEGES;
SQL
복사
1.
"Can't connect to MySQL server" 에러
•
보안 그룹 설정 확인
•
MySQL HeatWave 엔드포인트 확인
•
방화벽 규칙 확인
# 네트워크 연결 테스트
ping [MySQL_HeatWave_엔드포인트]
telnet [MySQL_HeatWave_엔드포인트] 3306
Shell
복사
1.
연결 지연 문제
# DNS 확인
nslookup [MySQL_HeatWave_엔드포인트]
# 경로 추적
traceroute [MySQL_HeatWave_엔드포인트]
Shell
복사
f) 모니터링 설정
# 연결 상태 확인
mysql -h [MySQL_HeatWave_엔드포인트] -u wordpress_user -p -e "SHOW STATUS LIKE '%Conn%';"
# 프로세스 목록 확인
mysql -h [MySQL_HeatWave_엔드포인트] -u wordpress_user -p -e "SHOW PROCESSLIST;"
Shell
복사
3. 워드프레스 설치하기
이제 드디어 워드프레스를 설치해볼 차례예요! 차근차근 따라오시면 어렵지 않답니다. 
워드프레스 파일 준비하기
# 웹 서버 루트 디렉토리로 이동
cd /var/www/html
# 기존 파일 백업 (혹시 모르니까요!)
sudo mv index.html index.html.bak
Bash
복사
한국어 버전을 다운로드 받을 거예요:
# 최신 한국어 버전 다운로드
sudo wget https://ko.wordpress.org/latest-ko_KR.tar.gz
# 압축 풀기
sudo tar -xzvf latest-ko_KR.tar.gz
# 압축 파일 삭제 (용량 절약!)
sudo rm latest-ko_KR.tar.gz
Bash
복사
[알아두세요!]
•
한국어 버전을 설치하면 관리자 페이지도 한국어로 표시됩니다.
•
나중에 언어 설정은 언제든지 변경할 수 있어요.
이 부분이 매우 중요해요! 권한이 잘못 설정되면 워드프레스가 제대로 작동하지 않을 수 있습니다.
# 소유권 변경
sudo chown -R apache:apache /var/www/html/wordpress
# 기본 권한 설정
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
Bash
복사
•
755: 디렉토리 권한 (소유자 전체 권한, 다른 사용자는 읽기/실행)
•
644: 파일 권한 (소유자 읽기/쓰기, 다른 사용자는 읽기만)
1.
"업로드 폴더에 쓰기 권한이 없습니다" 오류
sudo chmod -R 775 /var/www/html/wordpress/wp-content/uploads
Bash
복사
2.
"파일을 수정할 수 없습니다" 오류
sudo chown -R apache:apache /var/www/html/wordpress/wp-content
Bash
복사
SELinux를 사용 중이라면 다음 설정이 필요해요:
# 워드프레스 디렉토리 컨텍스트 설정
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html/wordpress(/.*)?"
sudo restorecon -Rv /var/www/html/wordpress
# wp-content 디렉토리 특별 설정
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wordpress/wp-content(/.*)?"
sudo restorecon -Rv /var/www/html/wordpress/wp-content
Bash
복사
워드프레스 설정하기
# 샘플 설정 파일 복사
cd /var/www/html/wordpress
sudo cp wp-config-sample.php wp-config.php
# 설정 파일 편집
sudo vi wp-config.php
Bash
복사
다음 내용을 상황에 맞게 수정해주세요:
// 데이터베이스 설정
define('DB_NAME', 'wordpress_db'); // 위에서 생성한 데이터베이스 이름
define('DB_USER', 'wordpress_user'); // 위에서 생성한 사용자
define('DB_PASSWORD', '안전한_비밀번호'); // 설정한 비밀번호
define('DB_HOST', 'MySQL_HeatWave_엔드포인트'); // 예: mysql.subnet.vcn.oraclevcn.com
define('DB_CHARSET', 'utf8mb4'); // 한글 지원을 위한 문자셋
define('DB_COLLATE', 'utf8mb4_unicode_ci'); // 한글 정렬을 위한 설정
/**
* MySQL HeatWave 연결 최적화 설정
*/
// 데이터베이스 연결 재시도 비활성화 (HeatWave는 안정적인 연결 제공)
define('WP_ALLOW_REPAIR', false);
// 지속적 연결 활성화로 성능 향상
define('DB_PERSISTENT', true);
// 보안 키 설정 (아래 링크에서 생성)
// https://api.wordpress.org/secret-key/1.1/salt/
// 한글 설정
define('WPLANG', 'ko_KR');
// 디버그 모드 (개발 시에만 true로 설정하세요!)
define('WP_DEBUG', false);
// 자동 업데이트 설정
define('WP_AUTO_UPDATE_CORE', 'minor');
PHP
복사
2.
생성된 키를 복사
3.
wp-config.php 파일의 해당 부분에 붙여넣기
이제 Apache가 워드프레스를 서비스하도록 설정해 볼게요!
# 설정 파일 생성
sudo vi /etc/httpd/conf.d/wordpress.conf
Bash
복사
다음 내용을 입력해주세요:
<VirtualHost *:80>
ServerAdmin webmaster@your-domain.com
DocumentRoot /var/www/html/wordpress
ServerName your-domain.com
ServerAlias www.your-domain.com
<Directory /var/www/html/wordpress>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
# 로그 설정
ErrorLog logs/wordpress_error.log
CustomLog logs/wordpress_access.log combined
</VirtualHost>
Plain Text
복사
[설정 파일 설명]
•
ServerAdmin: 관리자 이메일 주소
•
DocumentRoot: 워드프레스 설치 경로
•
ServerName: 도메인 주소
•
AllowOverride All: .htaccess 파일 사용 허용
•
ErrorLog: 에러 로그 저장 위치
설정을 적용하기 전에 문법 검사부터 해볼까요?
# Apache 설정 문법 검사
sudo apachectl configtest
Bash
복사
Syntax OK
Plain Text
복사
AH00526: Syntax error...
Plain Text
복사
문법에 문제가 없다면 Apache를 재시작합니다:
sudo systemctl restart httpd
Bash
복사
워드프레스 설치 마법사 실행하기
이제 웹 브라우저를 열고 다음 주소로 접속해보세요:
•
http://[서버_IP] 또는
•
http://your-domain.com (도메인이 있는 경우)
[중요!]
처음 접속할 때 화면이 안 나온다면?
1.
방화벽에서 80번 포트가 열려있는지 확인
2.
Apache 서비스가 실행 중인지 확인
3.
SELinux 설정 확인
설치 마법사에서 다음 정보들을 입력합니다:
•
사이트 제목
•
관리자 계정 정보
•
관리자 이메일
•
아이디로 'admin'은 피하세요 (보안상 취약)
•
비밀번호는 복잡하게 만들어주세요
•
이메일 주소는 실제 사용하는 것으로 입력하세요
만약 설치 진행시 오류가 발생 한다면?
에러 메시지가 다음과 같은 내용이 포함 할 경우에는 해당 데이터베이스에 대한 접근 권한을 설정하지 않았기 때문입니다. 따라서 아래와 같이 조치해 주어야 합니다.
워드프레스 데이터베이스 오류: [INSERT, UPDATE command denied to user 'admin'@'arm-wordpress-instance.publicsubnet.wordpressvcn.oraclevcn.com'
Plain Text
복사
# wordpress 서버에 SSH로 로그인 한 다음 아래와 같은 명령어를 실행 합니다.
mysql -h 10.0.2.162 -P 3306 -u admin -p -e "GRANT ALL PRIVILEGES ON wordpress_db.* TO 'admin'@'%';"
Bash
복사
저는 이전에 wordpress_db라는 데이터베이스를 하나 만들어 두었고요. admin이라는 기본 관리자로 설정 작업을 진행하고 있었답니다! 여러분에게 해당하는 정보로 적용해 주세요.
데이터베이스를 새로 만드는 명령어 실행 방법은 아래와 같아요! wordpress 서버로 사용할 컴퓨트 인스턴스에 SSH 접속 하셔서 실행하세요.
mysql -h 10.0.2.162 -P 3306 -u admin -p -e "CREATE DATABASE wordpress_db;”
이렇게 하고 다시 실행하면 정상적으로 wordpress가 설치 될 거에요!
wordpress 설치 결과 화면
자, 그럼 로그인 해 볼까요?
wordpress 로그인 화면
Wordpress 메인 대시보드 화면
1.
파일 업로드가 되는지 테스트
# 업로드 디렉토리 권한 다시 확인
sudo ls -la /var/www/html/wordpress/wp-content/uploads
Bash
복사
2.
퍼머링크 설정이 작동하는지 확인
# .htaccess 파일 권한 확인
sudo ls -la /var/www/html/wordpress/.htaccess
Bash
복사
3.
이메일 발송 테스트
•
관리자 페이지에서 테스트 이메일 발송해보기
•
비밀번호 재설정 기능 테스트
다음 포스팅 예고
지금까지 워드프레스의 기본 설치와 구성에 대해 알아보았습니다. 다음 포스팅에서는 워드프레스 성능 최적화, 모니터링 설정, 보안 강화 방법에 대해 자세히 알아보도록 하겠습니다.
특히 다음과 같은 내용들을 다룰 예정이에요:
•
Apache, PHP, MySQL 성능 최적화
•
실시간 모니터링 시스템 구축
•
보안 설정과 백업 전략
•
실전 운영 팁과 트러블슈팅
많은 기대 부탁드립니다! 








