반응형
AWS EC2 우분투 24.04에 WordPress를 설치하는 방법
EC2 인스턴스 생성
인스턴스 유형 : t2.micro
보안 그룹에서 HTTP(80), HTTPS(443), SSH(22) 포트 열기
운영체제 정보
$ lsb_release -d
Description: Ubuntu 24.04.3 LTS
1. 기본 환경 준비
sudo apt update -y
2. Nginx 설치
sudo apt update
sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl -fsSL https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt update
sudo apt install -y nginx
nginx -v
sudo systemctl enable --now nginx
3. PHP 설치
WordPress는 PHP 기반이므로 필요한 모듈을 함께 설치합니다.
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update -y
sudo apt install -y php8.4-fpm php8.4-cli php8.4-common \
php8.4-gd php8.4-mysql php8.4-curl php8.4-mbstring \
php8.4-xml php8.4-zip php8.4-opcache
php-fpm8.4 --version
systemctl --now enable php8.4-fpm
4. MySQL 설치 및 설정
sudo apt install -y libaio1t64
sudo ln -sf /usr/lib/aarch64-linux-gnu/libaio.so.1t64 /usr/lib/aarch64-linux-gnu/libaio.so.1
sudo ldconfig
cd /usr/local/src
wget -q https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.7-linux-glibc2.28-aarch64.tar.xz
mkdir /usr/local/mysql
sudo tar xf mysql-8.4.7-linux-glibc2.28-aarch64.tar.xz -C /usr/local/mysql --strip-components=1
/usr/local/mysql/bin/mysql --version
sudo groupadd -g 28 mysql
sudo useradd -r -c "MySQL Server" -d /usr/local/mysql -s /bin/false -u 28 -g mysql -M mysql
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql
sudo chmod 750 /usr/local/mysql/data
MySQL 설정 파일
sudo vim /etc/my.cnf
더보기
---
cat <<'EOF' | sudo tee /etc/my.cnf > /dev/null
# /etc/my.cnf
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
tmpdir = /tmp
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid
bind-address = 0.0.0.0
port = 3306
skip-name-resolve
log-error = /var/log/mysql/error.log
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
mysqlx = OFF
local_infile = OFF
secure-file-priv = /var/lib/mysql-files
# t4g.small 메모리 안전선
innodb_buffer_pool_size = 768M
innodb_redo_log_capacity = 201326592
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
tmp_table_size = 32M
max_heap_table_size = 32M
table_definition_cache = 400
table_open_cache = 2000
max_connections = 100
thread_cache_size = 50
sort_buffer_size = 256K
read_buffer_size = 128K
read_rnd_buffer_size = 256K
join_buffer_size = 256K
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = utf8mb4
EOF
---
sudo mkdir -p /var/run/mysqld /var/log/mysql /var/lib/mysql-files
sudo chown mysql:mysql /var/run/mysqld /var/log/mysql /var/lib/mysql-files
sudo chmod 750 /var/run/mysqld /var/log/mysql
/usr/local/mysql/bin/mysqld --validate-config
sudo /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY '강력한비밀번호123!';
FLUSH PRIVILEGES;
EXIT
mysql -u root -p
데이터베이스 생성
CREATE DATABASE wordpress;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
5. WordPress 다운로드 및 배치
cd /usr/share/nginx
sudo wget -q https://wordpress.org/wordpress-6.9.tar.gz
sudo tar -xzf wordpress-6.9.tar.gz
sudo mv wordpress /usr/share/nginx/html
sudo chown -R www-data:www-data /usr/share/nginx/html
sudo chmod -R 755 /usr/share/nginx/html
6. Nginx 서버 블록 설정
sudo vim /etc/nginx/conf.d/wordpress.conf
server {
listen 80;
server_name example.com www.example.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
sudo nginx -t
sudo systemctl reload nginx
7. WordPress 설정
wp-config.php 생성
cp /usr/share/nginx/html/wp-config-sample.php /usr/share/nginx/html/wp-config.php
vim /usr/share/nginx/html/wp-config.php
DB 정보 입력
define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', '비밀번호');
define('DB_HOST', 'localhost');
8. SSL (HTTPS) 적용
무료 SSL 인증서 발급 (Certbot)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
최종 확인
브라우저에서 http://EC2-퍼블릭-IP 접속
WordPress 설치 화면이 나오면 관리자 계정 생성 후 완료
참고URL
- WordPress : Download Releases(Current Stable : WordPress 6.9)
- NGINX : Download(Current Stable : nginx 1.28.0)
- PHP : Download(Current Stable : PHP 8.4.15)
- MySQL : Community Download(Current Stable : MySQL 8.4.7)
반응형
'퍼블릭 클라우드' 카테고리의 다른 글
| ZABBIX 템플릿을 활용하여 AWS CodeDeploy 에이전트를 모니터링하는 방법 (0) | 2025.09.24 |
|---|---|
| AWS 네트워크 방화벽 - 상태 유지 기본 작업 (1) | 2025.08.20 |
| Amazon Linux 2에서 pam_faillock 모듈을 사용해서 계정 잠금 정책을 설정하는 방법 (0) | 2025.08.18 |
| AWS Network Firewall 리소스 삭제 순서 (0) | 2025.07.23 |
| Amazon Linux 2에서 rpcbind 서비스 중지 및 비활성화 방법 (0) | 2025.07.18 |