Univ Admissions
추천전형

OCI Free Tier로 워드프레스 블로그 만들기 - (4) Wordpress 설치하기: 기본 구성편

안녕하세요!
지난 포스팅에서 네트워크 설정과 MySQL HeatWave 데이터베이스 구성을 알아보았는데요. 많은 분들이 실제 설치와 구성 과정에서 어려움을 겪으신다는 이야기를 해주셨습니다. 그래서 이번에는 워드프레스를 처음부터 차근차근 설치하고 기본 구성하는 방법을 자세히 알아보도록 하겠습니다.

이번 포스팅에서 다룰 내용

오늘은 워드프레스 설치의 기초가 되는 다음 내용들을 자세히 살펴보겠습니다:
Oracle Linux 초기 설정 및 보안 강화
워드프레스 실행을 위한 환경 구성 (LAMP 스택)
데이터베이스 연결과 기본 설정
워드프레스 설치 및 초기 구성
이번 포스팅에서는 기본적인 설치와 구성에 집중하고, 성능 최적화나 모니터링 설정과 같은 고급 주제는 다음 포스팅에서 다루도록 하겠습니다. 그럼 시작해볼까요?

1. Oracle Linux 초기 설정하기

시스템 접속 및 기본 설정

SSH로 처음 접속하기
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 저장소 추가하기
EPEL(Extra Packages for Enterprise Linux) 저장소는 추가 패키지 설치를 위해 꼭 필요합니다.
sudo dnf install oracle-epel-release-el8 -y
Bash
복사
왜 EPEL 저장소가 필요한가요?
추가 패키지 설치를 위해 필요합니다.
워드프레스 운영에 유용한 도구들이 포함되어 있습니다.

보안 설정하기

보안 설정은 시스템 운영에 있어 가장 중요한 부분 중 하나입니다. 특히 워드프레스와 같은 웹 서버는 항상 외부 공격의 위험에 노출되어 있기 때문에, 철저한 보안 설정이 필요해요.
SELinux 설정
SELinux는 Linux 시스템의 보안을 강화해주는 도구인데요, 워드프레스 운영을 위해 몇 가지 설정이 필요합니다.
# SELinux 상태 확인 getenforce # 설정 파일 백업 sudo cp /etc/selinux/config /etc/selinux/config.bak
Bash
복사
[중요!] 워드프레스 초기 설치 시에는 SELinux를 Permissive 모드로 설정하는 것이 좋습니다.
# 임시로 Permissive 모드로 변경 sudo setenforce 0
Shell
복사
웹 서버 관련 SELinux 설정
# 웹 서버 포트 허용 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 설치하기
# Apache 웹 서버 설치 sudo dnf install httpd -y # 서비스 시작 및 자동 시작 설정 sudo systemctl start httpd sudo systemctl enable httpd
Bash
복사
[잠깐!] 서비스 상태 확인하기
sudo systemctl status httpd
Bash
복사
초록색 "active (running)" 메시지가 보이면 정상입니다.
빨간색 메시지가 보인다면 뭔가 잘못된 거예요!
Apache 기본 설정
먼저 기존 설정 파일을 백업해 둡니다.
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 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 설정 최적화하기
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 8.0 클라이언트 설치
# MySQL 클라이언트 설치 sudo dnf install mysql -y # MySQL Shell도 설치해볼까요? (선택사항) sudo dnf install mysql-shell -y
Bash
복사
MySQL 클라이언트 설정
사용자 홈 디렉토리에 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 컨텍스트 설정
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 가상 호스트 설정
이제 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 성능 최적화
실시간 모니터링 시스템 구축
보안 설정과 백업 전략
실전 운영 팁과 트러블슈팅
많은 기대 부탁드립니다!