์ด ๋ฌธ์๋ ์ค์ ๊ตฌ์ถ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
Oracle Cloud ๋ฌด๋ฃ VM์ ์ฌ์ฉํด ๋๋ฉ์ธ ๊ธฐ๋ฐ์ ์๋ํ๋ ์ค ์ฌ์ดํธ๋ฅผ HTTPS๊น์ง ์ค์ ํ๊ณ ,
๊ณผ์ ์ค ๋ฐ์ํ ๋ชจ๋ ๋ฌธ์ ์ ํด๊ฒฐ์ฑ ์ ํจ๊ป ๊ธฐ๋กํ์ต๋๋ค.
๐งฐ ์ค๋น๋ฌผ
- โ
๊ตฌ๋งคํ ๋๋ฉ์ธ (์:
film862.com) - โ
์ฌ์ฉํ ์๋ธ๋๋ฉ์ธ (์:
jaehyun.film862.com) - โ Oracle Cloud Free Tier ๊ณ์
- โ Ubuntu 22.04 VM
- โ SSH ์ ์ ํ๊ฒฝ (Mac/Linux/WSL ๋ฑ)
- โ ๊ธฐ๋ณธ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด ์์ง
1๏ธโฃ Oracle Cloud ์ธ์คํด์ค ์์ฑ ๋ฐ ๋คํธ์ํฌ ์ค์
- VCN/Subnet์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์์ฑํด๋ OK
- SSH Key โ โGenerate key pair for meโ ์ ํ ํ
.keyํ์ผ ๋ค์ด๋ก๋
chmod 600 ~/Downloads/ssh-key-XXXX.key
- ์ธ์คํด์ค ์์ฑ ํ โ VNIC โ Private IP โ Ephemeral Public IP ํ ๋น
- Security List ์ธ๋ฐ์ด๋ ๊ท์น ์ถ๊ฐ
- TCP 22, 80, 443 โ
0.0.0.0/0
- Route Table์ Internet Gateway ๊ฒฝ๋ก ์ถ๊ฐ
0.0.0.0/0โ Internet Gateway
2๏ธโฃ SSH ์ ์ & Nginx ์ค์น
ssh -i ~/Downloads/ssh-key-XXXX.key ubuntu@<๊ณต์ธIP>
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx
๋ธ๋ผ์ฐ์ ์์ http://<๊ณต์ธIP> ์ ์ ์ Nginx Welcome ํ์ด์ง๊ฐ ๋์ค๋ฉด ์ ์ โ
โ ์ ์์ด ์๋๋ค๋ฉด Security List, Public IP, IGW ์ค์ ์ ๋ค์ ํ์ธํ์ธ์.
3๏ธโฃ MariaDB & PHP ์ค์น
โ MariaDB
sudo apt install -y mariadb-server
sudo mysql_secure_installation
DB ์์ฑ:
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '๊ฐ๋ ฅํ_๋น๋ฐ๋ฒํธ';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
โ PHP
sudo apt install -y php-fpm php-mysql php-xml php-gd php-curl php-mbstring php-zip php-imagick
์ ๋ก๋/๋ฉ๋ชจ๋ฆฌ ์ ํ ์กฐ์ (๊ถ์ฅ):
sudo sed -i 's/^upload_max_filesize.*/upload_max_filesize = 64M/' /etc/php/8.1/fpm/php.ini
sudo sed -i 's/^post_max_size.*/post_max_size = 64M/' /etc/php/8.1/fpm/php.ini
sudo sed -i 's/^memory_limit.*/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini
sudo systemctl restart php8.1-fpm
4๏ธโฃ ์๋ํ๋ ์ค ์ค์น ๋ฐ Nginx ์ค์
cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo mv wordpress myblog
sudo chown -R www-data:www-data myblog
sudo find myblog -type d -exec chmod 755 {} \;
sudo find myblog -type f -exec chmod 644 {} \;
Nginx ์๋ฒ ๋ธ๋ก ์์ฑ:
sudo nano /etc/nginx/sites-available/myblog
์๋ ๋ด์ฉ ์์ฑ:
server {
listen 80;
server_name jaehyun.film862.com;
root /var/www/myblog;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
location ~* /\.(git|svn|hg|env|ht|user.ini) {
deny all;
}
client_max_body_size 64m;
}
ํ์ฑํ ๋ฐ ํ ์คํธ:
sudo ln -s /etc/nginx/sites-available/myblog /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
5๏ธโฃ DNS ์ค์ (๋๋ฉ์ธ ์ฐ๊ฒฐ)
DNS A ๋ ์ฝ๋ ์์:
| ์ด๋ฆ | ํ์ | ๊ฐ(IP) |
|---|---|---|
| jaehyun | A | <๊ณต์ธ IP ์ฃผ์> |
6๏ธโฃ HTTPS ์ธ์ฆ์ ๋ฐ๊ธ (Certbot)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d jaehyun.film862.com
์ด๋ฉ์ผ ์ ๋ ฅ โ ์ฝ๊ด ๋์ โ ์๋ ์ธ์ฆ์ ๋ฐ๊ธ ๋ฐ ์ ์ฉ ์๋ฃ โ
ํ ์คํธ:
sudo certbot renew --dry-run
7๏ธโฃ ์๋ํ๋ ์ค ๋๋ฉ์ธ ์ค์ & SSL ๊ณ ์
WP-CLI ์ค์น:
cd ~
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
๋๋ฉ์ธ ๊ณ ์ :
php ~/wp-cli.phar --path=/var/www/myblog option update siteurl 'https://jaehyun.film862.com'
php ~/wp-cli.phar --path=/var/www/myblog option update home 'https://jaehyun.film862.com'
php ~/wp-cli.phar --path=/var/www/myblog cache flush
8๏ธโฃ wp-config.php ์์ (SSL ์ค์ ๋ฐ SALT ๋ถ๋ฆฌ)
sudo nano /var/www/myblog/wp-config.php
/* That's all, stop editing! Happy publishing. */ ๋ฐ๋ก ์์ ์๋ ๋ด์ฉ ์ถ๊ฐ:
define('WP_HOME', 'https://jaehyun.film862.com');
define('WP_SITEURL', 'https://jaehyun.film862.com');
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '', 'https') !== false) {
$_SERVER['HTTPS'] = 'on';
}
define('COOKIE_DOMAIN', false);
require_once __DIR__ . '/wp-salts.php';
SALT ํ์ผ ์์ฑ:
( echo "<?php"; curl -s https://api.wordpress.org/secret-key/1.1/salt/ ) | sudo tee /var/www/myblog/wp-salts.php >/dev/null
sudo chown www-data:www-data /var/www/myblog/wp-salts.php
sudo chmod 640 /var/www/myblog/wp-salts.php
๐ ์์ฃผ ๋ฐ์ํ๋ ์๋ฌ & ํด๊ฒฐ
โ 80 ํฌํธ ์ ์ ๋ถ๊ฐ
๐ Security List ์ธ๋ฐ์ด๋ ๊ท์น ํ์ธ (80/443 ์ด๋ ค์๋์ง), Public IP ํ ๋น, IGW ์ค์ ์ฌ๋ถ ํ์ธ
โ .key.pub ํ์ผ๋ง ์๊ณ .pem ์์
๐ Oracle Cloud์์ โGenerate key pair for meโ ์ ํ ํ ๊ฐ์ธํค(.key) ์ ์ฅ. .pub๋ SSH ์ ์์ ํ์ ์์.
โ curl: (7) Failed to connect ... No route to host
๐ ๋๋ถ๋ถ ๋คํธ์ํฌ/๋ฐฉํ๋ฒฝ ๋ฌธ์ . ์ธ์คํด์ค ๋ณด์ ๋ชฉ๋ก๊ณผ ๋ผ์ฐํ ํ์ธ.
โ ์๋ํ๋ ์ค ๋ก๊ทธ์ธ ๋ฌดํ ๋ฆฌ๋ค์ด๋ ํธ
๐ wp-config.php ์ HTTPS ๊ณ ์ ์ค์ ์ถ๊ฐ (FORCE_SSL_ADMIN + X_FORWARDED_PROTO ์ฒ๋ฆฌ).
๐ ์ฟ ํค ๋ฌธ์ ์ COOKIE_DOMAIN false ์ค์ ์ถ๊ฐ.
โ SALT ํค๊ฐ ํ์ด์ง์ ๋ ธ์ถ๋จ
๐ wp-salts.php ํ์ผ์ <?php ํ๊ทธ๊ฐ ๋น ์ ธ์๊ธฐ ๋๋ฌธ.
โ ๋ค์ ์์ฑํด์ ํด๊ฒฐ.
๐ ๋ง๋ฌด๋ฆฌ
์ด์ https://jaehyun.film862.com/wp-login.php ๋ก ์ ์ํด ๊ด๋ฆฌ์ ๋ก๊ทธ์ธ ํ
ํ๋ฌ๊ทธ์ธ, ํ
๋ง, ๊ณ ์ ๋งํฌ(โ๊ธ ์ด๋ฆโ) ์ค์ ๋ฑ์ ๋ง๋ฌด๋ฆฌํ๋ฉด ๋ฉ๋๋ค โ
์ด ๋ฌธ์๋ฅผ ๋ฐ๋ผ ํ๋ฉด, ๋ค์ ๋ฒ์๋ ๋ณ๋ค๋ฅธ ์ฝ์ง ์์ด
Oracle Cloud + ์๋ํ๋ ์ค๋ก ๋ฌด๋ฃ HTTPS ๋ธ๋ก๊ทธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค ๐
๋ต๊ธ ๋จ๊ธฐ๊ธฐ