나는 Amazon Lightsail에서 WordPress Multisite를 직접 구축하기로 했다. 기존에는 Lightsail 에서 제공하는 Bitnami 이미지를 사용할 수도 있었지만, 서버를 내가 원하는 대로 커스터마이징하고, 앞으로 Django 기반의 사이트 까지 함께 운영할 계획이 있었기 때문에 우분투 베이스로 깔끔하게 구성하고 싶었다. 이 글은 Lightsail에 Ubuntu 22.04를 설치하고, WordPress 기본 설치 및 Multisite 설정 직전까지 완료한 전체 과정을 자세히 정리한 기록이다.
왜 Bitnami를 쓰지 않고 수동 설치를 선택했을까?
Bitnami 이미지로 워드프레스를 설치하면 편하긴 하다. 클릭 몇 번이면 기본 워드프레스 환경이 갖춰지기 때문이다. 하지만 그만큼 구조가 비표준이고 복잡하다. Apache, PHP, MySQL의 위치도 일반적인 우분투 환경과 다르고, 추후 Django나 다른 애플리케이션을 같은 서버에서 함께 운영하려고 하면 제약이 생긴다.
그래서 나는 우분투를 직접 설치하고, 그 위에 LAMP 스택을 쌓아 WordPress를 수동으로 설치하는 길을 선택했다. 추후에 서버를 이전하거나 백업할 때도 유리하고, 나중에 도커나 Git으로 자동화할 기반도 만들 수 있기 때문이다.
1. Lightsail에서 Ubuntu 인스턴스 생성
우선 AWS 가입하는 부분은 이미 많은 곳에 있으니 가입 하는 방법은 생략을 하도록 하겠습니다.
Amazon Lightsail에 로그인한 뒤, 다음과 같이 인스턴스를 생성했다. 이때 ssh 키를 aws 에서 생성을 하게 된다면 그 키파일은 잘 보관을 해야 쉽게 접속이 가능하다.
- 플랫폼: Linux/Unix
- Blueprint: OS Only > Ubuntu 22.04 LTS
- 플랜: $7 /월 (1GB RAM, 2 vCPU)
- 이름: 인스턴스 이름으로 이건 중복만 되지 않으면 된다.
그 후 1분여정도 시간이 지나면 인스턴스가 생성이 완료된다. 상세 화면으로 들어가면 Static IP는 자동으로 만들어지고 "SSH를 사용하여 연결" 이라는 버튼을 통하여 웹에서도 인스턴스에 접속할수 있지만 복사 붙여 넣기라던지 사용성이 많이 떨어지기 때문에 직접 접속을 하는 것을 추천한다. wsl 환경이라면 키를 생성하는 것은 어렵지않고, 위에서 aws에서 생성한 키파일이 있다면 그것으로 사용을 해도 무방하다.
윈도우에서 WSL 설치 및 환경 설정: 동영상 스크린샷 추출 개발 준비
이 글에서는 윈도우에서 WSL(Ubuntu-24.04)을 설치하고, FFmpeg와 파이썬 환경을 설정하여 동영상에서 프레임을 추출할 수 있는 환경을 준비하는 방법을 설명합니다. 윈도우 WSL 설치 방법과 환경 설정
infobuckets.com
SSH 접속은 로컬에서 WSL을 활용해 .pem 키를 사용해 연결했다:
ssh -i ~/Downloads/LightsailDefaultKey-ap-northeast-2.pem ubuntu@위에서 할당된 ip
2. 기본 보안 설정
서버를 만들자마자 가장 먼저 해야 할 건 보안 설정이다. 아무 것도 안 한 상태에서 서버가 외부에 노출되면 해킹 위험이 크기 때문이다.
sudo apt update && sudo apt install ufw fail2ban -y
- ufw: 방화벽 관리 도구
- fail2ban: 비정상 로그인 시도를 감지해 자동 차단
SSH 접속 포트만 우선 허용했다:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Apache는 아직 설치 전이기 때문에 "Apache Full"은 이후 Apache를 설치한 뒤 방화벽에 추가할 예정이다.
3. Swap 설정 (RAM이 부족할 경우를 대비)
Lightsail $8 플랜은 1GB 메모리다. 기본적인 워드프레스 정도는 가능하지만, plugin이 많아지거나 서버가 살짝 무거워지면 메모리 부족 현상이 생길 수 있다. 그래서 디스크 일부를 가상 메모리처럼 쓰는 스왑 공간을 설정했다.
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
부팅 시 자동 활성화를 위해 아래도 추가했다:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
스왑이 잘 설정되었는지는 free -h로 확인 가능하다.
4. 서버 시간대를 한국(KST)으로 변경
글 작성 시간, 로그 기록 등을 한국 시간 기준으로 맞추기 위해 다음 명령어로 타임존을 바꿨다.
sudo timedatectl set-timezone Asia/Seoul
또한 PHP 시간대도 맞춰주기 위해:
sudo nano /etc/php/8.1/apache2/php.ini
# date.timezone = Asia/Seoul 로 수정
sudo systemctl restart apache2
5. LAMP 스택 설치
이제 본격적으로 워드프레스를 위한 환경을 구성했다.
sudo apt install apache2 mysql-server php php-mysql libapache2-mod-php php-xml php-curl php-gd php-mbstring php-zip php-soap php-intl php-bcmath unzip -y
설치 후 Apache 상태 확인:
sudo systemctl status apache2
정상 작동을 확인한 후, Apache 포트도 방화벽에 열었다:
sudo ufw allow "Apache Full"
6. WordPress 설치
cd /var/www/html
sudo rm index.html
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xvzf latest.tar.gz
sudo mv wordpress/* .
sudo rm -rf wordpress latest.tar.gz
권한 설정도 잊지 않았다: 이번에는 간단하게 띄워서 워드프레스의 사용성을 보고 싶기 때문에 웹서버 계정을 딱히 따로 염두는 안하고 단순하게 www-data로 만들었는데 이부분은 자유롭게 바꾸면된다.
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
7. MySQL에서 DB 및 사용자 생성
sudo mysql -u root -p
CREATE DATABASE wp_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON wp_db.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
오랜만에 DB셋팅을 하다보니 처음에 GRANT와 IDENTIFIED를 같이 쓰는 문법 오류로 시행착오가 있었지만, ALTER USER로 해결했다.
8. wp-config.php 설정 + Multisite 활성화
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
DB 정보 입력:
define( 'DB_NAME', 'wp_db' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', '비밀번호' );
define( 'DB_HOST', 'localhost' );
Multisite 기능 활성화 추가:
define( 'WP_ALLOW_MULTISITE', true );
Apache 재시작:
sudo systemctl restart apache2
9. 브라우저에서 설치 마법사 실행
이제 브라우저로 http://<정적IP>에 접속하면 워드프레스 설치 마법사가 뜬다.
설치 마법사에서 사이트명, 관리자 아이디, 비밀번호, 이메일을 설
정하고 설치를 완료했다.
정상적으로 설치가 완료되면 /wp-admin 으로 로그인할 수 있다.
나는 관리자 로그인까지 성공했고, 이제 다음 단계인 Multisite 설정을 할예정이다.
다음에 할 일: Multisite 서브도메인 구성 시작
나는 서브도메인 방식으로 Multisite를 구성할 계획이다. 즉, blog.mydomain.com, news.mydomain.com 같은 형식으로 블로그를 나눌 수 있게 되는 구조다.
서브도메인 방식은 조금 더 설정이 필요하지만, 다양한 블로그를 개별 도메인처럼 운영하고 싶을 땐 훨씬 유연하다. DNS에서 와일드카드 서브도메인(*.mydomain.com)을 설정해주면 손쉽게 확장 해볼 수 있다.
마치며
이번 세팅은 꽤 많은 단계와 삽질이 있었지만, 직접 서버를 손으로 세팅해본 만큼 얻는 게 많았다. 단순히 "워드프레스 설치했다"를 넘어서, 사용해보지 않은 AWS의 Lightsail 을 설치 해봤고 차근차근 단계를 밟아갈 수 있었다. 이 환경을 바탕으로 앞으로 Django 기반의 블로그 분석 도구도 같이 운영할 계획입니다.
다음 글에서는 Multisite를 본격적으로 구성하고, 첫 번째 하위 사이트를 만들어보는 과정을 정리해볼 예정이다.