WordPress 설치와 초기 세팅
수동 설치, 자동 설치, Docker 방식의 WordPress 설치법과 wp-config.php 설정, 시간대, 퍼머링크, 읽기/쓰기 설정을 마스터합니다.
WordPress 설치 전 준비사항
시스템 요구사항
WordPress를 설치하기 전에 서버가 최소 요구사항을 충족하는지 확인해야 합니다. WordPress.org에서 공식적으로 권장하는 요구사항은 다음과 같습니다:
호스팅 선택 가이드
WordPress 호스팅은 크게 네 가지 유형으로 나눌 수 있습니다:
공유 호스팅(Shared Hosting): 여러 사이트가 하나의 서버를 공유합니다. 가장 저렴하지만 성능이 제한적입니다. 초보자에게 적합합니다. (월 3,000~10,000원) 예: Bluehost, SiteGround, 카페24
VPS(Virtual Private Server): 가상 서버를 독립적으로 사용합니다. 더 높은 성능과 자유도를 제공합니다. 중급 사용자에게 적합합니다. (월 10,000~50,000원) 예: Vultr, DigitalOcean, AWS Lightsail
전용 서버(Dedicated Server): 물리 서버 전체를 독점적으로 사용합니다. 최고의 성능을 제공하지만 비용이 높습니다. 대규모 사이트에 적합합니다. (월 100,000원~)
관리형 WordPress 호스팅: WordPress에 최적화된 전문 호스팅입니다. 자동 업데이트, 백업, 보안, 캐싱 등을 제공합니다. (월 30,000~100,000원) 예: WP Engine, Kinsta, Flywheel
방법 1: 수동 설치 (FTP/SSH)
가장 기본적인 설치 방법
수동 설치는 WordPress의 동작 원리를 가장 잘 이해할 수 있는 방법입니다. 서버에 직접 파일을 올리고 데이터베이스를 연결하는 과정을 통해 WordPress의 구조를 체감할 수 있습니다.
- WordPress 다운로드: wordpress.org에서 최신 버전을 다운로드합니다. 한국어 버전은 ko.wordpress.org에서 받을 수 있습니다. zip 또는 tar.gz 파일로 제공됩니다.
- 데이터베이스 생성: MySQL/MariaDB에서 WordPress용 데이터베이스와 사용자를 생성합니다. phpMyAdmin이나 CLI를 사용할 수 있습니다.
- 파일 업로드: 다운로드한 WordPress 파일을 웹 서버의 document root(보통 /var/www/html/ 또는 public_html/)에 업로드합니다. FTP, SFTP, 또는 SSH를 사용합니다.
- wp-config.php 설정: wp-config-sample.php를 wp-config.php로 복사한 후, 데이터베이스 정보를 입력합니다.
- 설치 마법사 실행: 브라우저에서 도메인에 접속하면 5분 설치 마법사가 실행됩니다. 사이트 제목, 관리자 계정 등을 설정합니다.
데이터베이스 생성 (MySQL CLI)
mysql -u root -p
-- 데이터베이스 생성
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 사용자 생성 및 권한 부여
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '강력한비밀번호123!@#';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
SSH를 이용한 WordPress 다운로드 및 설치
cd /var/www/html/
# WordPress 최신버전 다운로드
wget https://wordpress.org/latest.tar.gz
# 압축 해제
tar -xzf latest.tar.gz
# 파일 이동 (도메인 루트에 설치할 경우)
mv wordpress/* .
rmdir wordpress
rm latest.tar.gz
# 소유권 및 권한 설정
chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html/
chmod -R 775 /var/www/html/wp-content/
# wp-config.php 생성
cp wp-config-sample.php wp-config.php
nano wp-config.php
1. 데이터베이스 비밀번호는 반드시 강력하게 설정하세요 (영문 대소문자 + 숫자 + 특수문자 조합, 16자 이상).
2. root 계정 대신 전용 데이터베이스 사용자를 만들어 사용하세요.
3. 데이터베이스 사용자에게는 해당 WordPress 데이터베이스에만 권한을 부여하세요.
4. wp-config.php 파일의 권한은 600 또는 640으로 설정하는 것이 안전합니다.
방법 2: 자동 설치 (cPanel/Softaculous)
원클릭 설치의 편리함
대부분의 공유 호스팅에서는 Softaculous, Installatron, Fantastico 등의 자동 설치 도구를 제공합니다. cPanel 기반 호스팅에서 가장 많이 사용되는 Softaculous를 기준으로 설명합니다.
- cPanel 접속: 호스팅 업체에서 제공한 cPanel URL(보통 yourdomain.com:2083)에 로그인합니다.
- Softaculous 찾기: cPanel 대시보드에서 "Softaculous Apps Installer" 또는 "WordPress" 아이콘을 클릭합니다.
- WordPress 선택: Softaculous에서 WordPress를 찾아 "Install" 또는 "Install Now" 버튼을 클릭합니다.
- 설치 옵션 설정: 프로토콜(https://), 도메인, 디렉토리, 사이트 이름, 관리자 계정 정보를 입력합니다. 데이터베이스는 자동으로 생성됩니다.
- 고급 옵션: 테이블 접두사(보안을 위해 wp_ 대신 다른 접두사 권장), 자동 업데이트 설정, 백업 설정 등을 구성합니다.
- 설치 완료: "Install" 버튼을 클릭하면 몇 분 내에 설치가 완료됩니다. 관리자 URL이 표시됩니다.
방법 3: Docker를 이용한 설치
컨테이너 기반 WordPress
Docker를 사용하면 개발 환경을 완전히 격리하여 WordPress를 실행할 수 있습니다. 로컬 개발, 테스트, CI/CD 파이프라인에서 매우 유용합니다. Docker Compose를 사용하면 WordPress와 MySQL을 한 번에 설정할 수 있습니다.
version: '3.8'
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: mypassword
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp-content:/var/www/html/wp-content
depends_on:
- db
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wp_user
MYSQL_PASSWORD: mypassword
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
docker-compose up -d
# 브라우저에서 접속
# http://localhost:8080
# 중지
docker-compose down
# 데이터 포함 완전 삭제
docker-compose down -v
wp-config.php 완전 가이드
WordPress의 두뇌: wp-config.php
wp-config.php는 WordPress의 핵심 설정 파일입니다. 데이터베이스 연결 정보, 보안 키, 디버그 설정, 파일 시스템 설정 등 WordPress의 동작에 관한 모든 중요한 설정이 이 파일에 담겨 있습니다. 이 파일을 제대로 이해하고 설정하는 것이 WordPress 관리의 기본입니다.
define('DB_NAME', 'wordpress_db'); // DB 이름
define('DB_USER', 'wp_user'); // DB 사용자
define('DB_PASSWORD', '비밀번호'); // DB 비밀번호
define('DB_HOST', 'localhost'); // DB 호스트
define('DB_CHARSET', 'utf8mb4'); // 문자 인코딩
define('DB_COLLATE', ''); // 정렬 규칙
// 테이블 접두사 (보안상 기본값 변경 권장)
$table_prefix = 'mysite_'; // 기본값 'wp_' 대신
// 보안 키 (api.wordpress.org/secret-key에서 생성)
define('AUTH_KEY', '고유한 긴 문자열...');
define('SECURE_AUTH_KEY', '고유한 긴 문자열...');
define('LOGGED_IN_KEY', '고유한 긴 문자열...');
define('NONCE_KEY', '고유한 긴 문자열...');
define('AUTH_SALT', '고유한 긴 문자열...');
define('SECURE_AUTH_SALT', '고유한 긴 문자열...');
define('LOGGED_IN_SALT', '고유한 긴 문자열...');
define('NONCE_SALT', '고유한 긴 문자열...');
// 디버그 설정 (개발 시에만 활성화)
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);
// 추가 보안 설정
define('DISALLOW_FILE_EDIT', true); // 관리자에서 파일 편집 차단
define('FORCE_SSL_ADMIN', true); // 관리자 SSL 강제
// 메모리 제한
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
// 자동 업데이트 설정
define('WP_AUTO_UPDATE_CORE', 'minor'); // 마이너 버전만 자동 업데이트
보안 키(Salt Keys)를 반드시 고유한 값으로 변경하세요! api.wordpress.org/secret-key/1.1/salt/에 접속하면 랜덤한 키를 자동으로 생성해줍니다. 이 값을 그대로 복사해서 wp-config.php에 붙여넣으면 됩니다. 보안 키는 쿠키 암호화, 세션 보안 등에 사용되며, 유출되면 사이트 보안이 위험해집니다.
WordPress 5분 설치 마법사
설치 마법사 단계별 안내
wp-config.php 설정이 완료되면 브라우저에서 사이트에 접속하여 설치 마법사를 진행합니다. WordPress가 유명한 "5분 설치(Famous 5-minute Install)"의 시작입니다.
- 언어 선택: "한국어"를 선택합니다. 언어는 나중에 설정 > 일반에서 변경할 수 있습니다. 다국어 사이트를 만들 계획이라면 영어로 설치한 후 WPML이나 Polylang 플러그인을 사용하는 것도 방법입니다.
- 사이트 제목 입력: 사이트의 이름을 입력합니다. SEO에 영향을 주므로 신중하게 선택하세요. 나중에 변경 가능합니다.
- 관리자 사용자명: "admin"은 절대 사용하지 마세요! 해커들이 가장 먼저 시도하는 사용자명입니다. 고유한 사용자명을 설정하세요.
- 관리자 비밀번호: WordPress가 생성하는 강력한 비밀번호를 사용하거나, 직접 강력한 비밀번호를 만드세요. 영문 대소문자, 숫자, 특수문자를 모두 포함하는 16자 이상의 비밀번호를 권장합니다.
- 이메일 주소: 관리자 이메일을 입력합니다. 비밀번호 재설정, 업데이트 알림 등에 사용되므로 실제 사용하는 이메일을 입력하세요.
- 검색엔진 노출: 사이트가 아직 준비 중이라면 "검색엔진이 사이트를 색인하지 못하게 합니다"를 체크하세요. 사이트가 완성되면 해제합니다.
초기 세팅: 일반 설정
설정 > 일반
WordPress 설치 후 가장 먼저 해야 할 것이 일반 설정입니다. 관리자 대시보드의 설정 > 일반에서 다음 항목들을 확인하고 수정합니다:
사이트 제목: 브라우저 탭과 검색 결과에 표시되는 사이트 이름입니다. 브랜드명이나 핵심 키워드를 포함하세요.
태그라인: 사이트를 한 줄로 설명하는 문구입니다. "또 하나의 WordPress 사이트"가 기본값인데, 반드시 변경하세요. SEO에 도움이 되는 문구를 작성합니다.
WordPress 주소(URL): WordPress가 설치된 실제 URL입니다. 잘못 변경하면 사이트에 접속할 수 없게 되므로 주의하세요.
사이트 주소(URL): 방문자가 접속하는 URL입니다. 보통 WordPress 주소와 동일합니다.
관리자 이메일: 관리 관련 알림을 받을 이메일입니다.
회원 가입 허용: 누구나 회원가입할 수 있게 할지 여부입니다. 커뮤니티 사이트가 아니라면 비활성화를 권장합니다.
새 사용자 기본 역할: 회원가입 시 기본 역할입니다. 반드시 "구독자"로 설정하세요. "관리자"로 설정하면 보안에 큰 위험이 됩니다.
시간대(Timezone) 설정
올바른 시간대 설정은 예약 발행, 로그 기록, 사용자 활동 추적 등에 필수적입니다.
설정 위치: 설정 > 일반 > 시간대
한국 사이트라면 "서울" (UTC+9)를 선택합니다. "UTC+9"로 선택해도 되지만, 도시명으로 선택하면 서머타임 등이 자동 처리됩니다.
날짜 형식: 한국에서는 "Y년 n월 j일" 또는 "Y-m-d" 형식이 적합합니다.
시간 형식: 24시간 형식(H:i)이 한국에서 일반적이지만, 12시간 형식(a g:i)도 선택 가능합니다.
한 주의 시작: 한국에서는 보통 "월요일"로 설정합니다.
퍼머링크(고유주소) 설정
SEO의 시작: 퍼머링크
퍼머링크(Permalink)는 각 포스트와 페이지의 고유한 URL 구조를 말합니다. WordPress 설치 후 반드시 첫 번째로 변경해야 할 설정입니다. 기본값인 "일반(?p=123)" 구조는 SEO에 매우 불리합니다.
설정 위치: 설정 > 고유주소(퍼머링크)
| 구조 | 예시 | SEO |
|---|---|---|
| 기본 | ?p=123 | 나쁨 |
| 날짜와 이름 | /2024/03/15/제목/ | 보통 |
| 월과 이름 | /2024/03/제목/ | 보통 |
| 숫자 | /archives/123 | 나쁨 |
| 글 이름 | /제목/ | 최고 |
| 사용자 정의 | /%category%/%postname%/ | 좋음 |
퍼머링크 구조 태그 레퍼런스
사용자 정의 구조에서 사용할 수 있는 태그들입니다:
%year% - 발행 연도 (4자리, 예: 2024)
%monthnum% - 발행 월 (예: 03)
%day% - 발행 일 (예: 15)
%postname% - 포스트 슬러그 (URL에 사용되는 이름)
%post_id% - 포스트 ID 번호
%category% - 카테고리 슬러그
%author% - 작성자 슬러그
읽기 설정
설정 > 읽기
읽기 설정은 사이트의 첫 화면과 콘텐츠 표시 방식을 결정합니다.
홈페이지 표시:
- "최근 글": 블로그 형태로 최신 포스트가 메인 페이지에 표시됩니다.
- "정적인 페이지": 특정 페이지를 홈으로 설정합니다. 기업 사이트나 랜딩 페이지에 적합합니다.
페이지당 표시할 최대 글 수: 기본값 10개. 너무 많으면 로딩이 느려지고, 너무 적으면 페이지네이션이 과다해집니다. 10~15개가 적절합니다.
RSS 피드 글 수: RSS 구독자에게 보여줄 글 수입니다.
피드에서 표시: "요약"을 선택하면 RSS로 전체 콘텐츠가 유출되는 것을 방지할 수 있습니다.
검색엔진 가시성: "검색엔진이 이 사이트를 색인하지 못하도록 합니다"를 체크하면 noindex 메타 태그가 삽입됩니다. 사이트 개발 중에만 체크하고, 공개 시 반드시 해제하세요.
쓰기 설정
설정 > 쓰기
기본 글 카테고리: 포스트 작성 시 카테고리를 지정하지 않으면 이 카테고리가 자동 적용됩니다. "미분류" 대신 의미 있는 카테고리를 만들어 설정하세요.
기본 글 형식: 일반적으로 "표준"을 유지합니다.
이메일로 글쓰기: 이메일을 보내서 포스트를 발행하는 기능입니다. 보안상 사용하지 않는 것을 권장합니다.
업데이트 서비스: 새 글을 발행하면 핑(ping)을 보내는 서비스 URL입니다. 기본값인 rpc.pingomatic.com으로 충분합니다.
토론 설정
설정 > 토론 (댓글 관리)
댓글 관련 설정은 스팸 방지와 커뮤니케이션 관리에 중요합니다:
기본 글 설정:
- "새 글에 대해 다른 블로그에서의 알림 허용" (핑백/트랙백) - 스팸의 원인이 될 수 있으므로 비활성화 권장
- "사람들이 새 글에 댓글을 남길 수 있도록 허용" - 목적에 따라 설정
댓글 표시 전 조건:
- "댓글은 수동으로 승인되어야 합니다" - 스팸 방지를 위해 활성화 권장
- "댓글 작성자가 이전에 승인된 댓글이 있어야 합니다" - 유용한 옵션
댓글 관리:
- 링크가 포함된 댓글을 보류 대기열에 추가하는 옵션 (스팸 방지에 효과적)
- 금지 단어 목록으로 특정 키워드가 포함된 댓글을 자동 차단
아바타: Gravatar 서비스를 통해 댓글 작성자의 프로필 이미지를 표시합니다.
설치 후 필수 체크리스트
- 퍼머링크 설정: 설정 > 고유주소에서 "글 이름(/%postname%/)"으로 변경합니다. 이것은 설치 후 가장 먼저 해야 할 작업입니다.
- 시간대 설정: 설정 > 일반에서 시간대를 "서울"로 변경합니다.
- 태그라인 변경: "또 하나의 WordPress 사이트"를 의미 있는 문구로 변경합니다.
- 기본 콘텐츠 삭제: "Hello world!" 포스트, "샘플 페이지", 기본 댓글을 삭제합니다.
- 불필요한 플러그인 삭제: Hello Dolly 플러그인을 삭제합니다. Akismet은 활성화하세요.
- SSL/HTTPS 설정: 사이트 URL을 https://로 변경합니다. Really Simple SSL 플러그인이 도움이 됩니다.
- 관리자 프로필 업데이트: 사용자 > 프로필에서 닉네임과 표시 이름을 설정합니다. 로그인 사용자명이 사이트에 노출되지 않도록 합니다.
- 핑백/트랙백 비활성화: 설정 > 토론에서 핑백을 비활성화합니다.
- 검색엔진 노출 확인: 설정 > 읽기에서 "검색엔진이 이 사이트를 색인하지 못하게 합니다"가 해제되어 있는지 확인합니다 (사이트 공개 시).
- wp-config.php 보안: DISALLOW_FILE_EDIT을 true로 설정하고, 보안 키가 고유한 값인지 확인합니다.
WP-CLI: 커맨드라인 설치 & 관리
고급: WP-CLI로 WordPress 관리하기
WP-CLI는 WordPress를 커맨드라인에서 관리할 수 있는 공식 도구입니다. 서버에 SSH 접속이 가능하다면 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
# WordPress 다운로드 & 설치 (한 번에!)
wp core download --locale=ko_KR
wp config create --dbname=wordpress --dbuser=wp_user --dbpass=password
wp core install --url=example.com --title="내 사이트" \
--admin_user=myadmin --admin_password=StrongPass123! \
--admin_email=admin@example.com
# 기본 설정 변경
wp option update timezone_string "Asia/Seoul"
wp rewrite structure "/%postname%/" --hard
wp option update blogdescription "나의 사이트 설명"
# 기본 콘텐츠 정리
wp post delete 1 --force # Hello World 삭제
wp post delete 2 --force # 샘플 페이지 삭제
wp comment delete 1 --force
wp plugin delete hello
이 레슨의 핵심 정리
기억해야 할 것들
1. WordPress 설치 방법은 수동(FTP/SSH), 자동(Softaculous), Docker 세 가지가 있습니다.
2. wp-config.php는 WordPress의 핵심 설정 파일입니다. 보안 키, DB 정보, 디버그 설정을 관리합니다.
3. 퍼머링크를 /%postname%/로 설정하는 것이 SEO에 가장 유리합니다.
4. 시간대를 "서울(Asia/Seoul)"로 설정하세요. 예약 발행에 영향을 줍니다.
5. 설치 후 기본 콘텐츠(Hello World, 샘플 페이지) 삭제와 보안 설정을 반드시 수행하세요.
6. WP-CLI를 사용하면 커맨드라인에서 빠르게 WordPress를 관리할 수 있습니다.