본문 바로가기

퍼블릭 클라우드

AWS EC2 우분투 24.04에 WordPress를 설치하는 방법

반응형

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)

 

반응형