์ด์ ๊ธ์์๋ EC2 ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด์ ์๋ํ๋ฅผ ํ์๋๋ฐ์, ์ฌ์ค ์ด๋ ๋ฐฐํฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด์ฅ H2 DB๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋จํ ํ๋ก์ ํธ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ค์ ๋ก ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ๋์๋ Mysql ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋ฒ์ ๋์์ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ์, ์ด๋ฒ ๊ธ์์๋ ์๋ก์ด EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ค, ๊ทธ๊ณณ์์ Mysql์ ์คํ์์ผ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง ์๋ก์ด EC2 ์์ฑํ๊ธฐ
ํด๋น ๊ธ์ ๊ณผ์ ์์ ์งํํ๋ ๊ฒ ์ฒ๋ผ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํด ์ฃผ๋ฉด ๋๋๋ฐ์, ์ค๋ณต๋ ๊ณผ์ ์ด์ง๋ง ์์ฃผ ์ด์ง ์ฐจ์ด์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ฐจ๋ก์ฐจ๋ก ์งํํด๋ณด๋ ค ํฉ๋๋ค.
๋จผ์ EC2 ๋์๋ณด๋์ ์ ์ํฉ๋๋ค.
์ดํ ์ธ์คํด์ค ์์์ ํด๋ฆญํด์ฃผ์ธ์.
์ด๋ฆ์ ๋ง์๋๋ก ์ง์ด์ฃผ์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ๋ฐ OS ์ด๋ฏธ์ง๋ Ubuntu์ 22.04 LTS ๋ฒ์ ์ ์ ํํด ์ฃผ์๋๋ฐ์,
์ด๋ฅผ ๋ฐ๋ผํ๋ ์์ ์์ ํ๋ฆฌ ํฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ์ด๋ฏธ์ง๋ฅผ ์ ํํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ํคํ ์ฒ๋ 64๋นํธ(x86)์ ์ ํํ์ต๋๋ค.
์ธ์คํด์ค ์ ํ์ ํ๋ฆฌ ํฐ์ด ์ฌ์ฉ ๊ฐ๋ฅ์ธ t2.micro๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
ํค ํ์ด๋ ํด๋น ๊ธ์์ ์์ฑํ ํค ํ์ด๋ฅผ ์ ํํด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋คํธ์ํฌ ์ค์ ์์๋ ํธ์ง์ ๋๋ฌ์ฃผ์ธ์.
๋คํธ์ํฌ ์ค์ ๋ถ๋ถ์ด ์กฐ๊ธ ๋ณต์กํ ์ ์๋๋ฐ์, ์ฐ์ VPC๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ๋ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
๋งจ ์ ๋ถํ ๋ฐ์ค ์ฒ๋ฆฌ๋ ๋ถ๋ถ์ ์ดํด๋ณด๋ฉด xxx.xxx.xxx.xxx/xx ํ์์ผ๋ก VPC์ IP ์ฃผ์๊ฐ ์ ํ์๋ ๊ฒ์ ๋ณผ ์ ์๋๋ฐ์, ์ด๋ฅผ ๋ณด์ ๊ทธ๋ฃน ๊ท์น์ ์๋ณธ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๋ณด์ ๊ทธ๋ฃน ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ํ | ํ๋กํ ์ฝ | ํฌํธ๋ฒ์ | ์์ค์ ํ | ์๋ณธ |
ssh | TCP | 22 | ์ฌ์ฉ์ ์ง์ | VPC IP ์ฃผ์ |
์ฌ์ฉ์ ์ง์ TCP | TCP | 3306 | ์ฌ์ฉ์ ์ง์ | VPC IP ์ฃผ์ |
22 ํฌํธ๋ ssh๋ก ec2 ์๋ฒ์ ์ ๊ทผํ๊ธฐ ์ํด ํ์ํ๋ฉฐ, 3306 ํฌํธ๋ MYSQL ๋ฐ์ดํฐ๋ฐ์ด์ค๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ๋ ํฌํธ๋ฒํธ์ด๋ฉฐ,
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ธฐ ์ํด ํ์ํ ์ค์ ์ ๋๋ค.
์ด๋ ์๋ณธ์ VPC์ IP ์ฃผ์๋ก ์ ์ด์ค ์ด์ ๋ ํด๋น VPC ๋ด๋ถ์์๋ง DB ์๋ฒ์ ์ ์ํ๊ธฐ ์ํจ์ ๋๋ค.
์ฆ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ด EC2๋ ์ธ๋ถ(์ค์ ์ ๋ด IP)์์ ์ ์์ด ๊ฐ๋ฅํ์ง๋ง, DB ์๋ฒ์๋ ๊ตณ์ด ์ธ๋ถ์์ ์ ์ํ ํ์๊ฐ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ ์ ๊ฐ๋ฅํ IP ์ฃผ์๋ฅผ VPC์ private ip๋ก ์ค์ ํจ์ผ๋ก์จ, ํด๋น VPC ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํ์์ต๋๋ค.
(์ด๋ฅผ ์ํด์๋ ํ์ฌ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ์ํค๋ ์๋ฒ์ Mysql์ ์คํํ EC2 ์๋ฒ๊ฐ ๊ฐ์ VPC๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ, ์ ํฌ๋ ์ง๊ธ๊น์ง ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ๋ VPC๋ง์ ์ฌ์ฉํ์ผ๋ฏ๋ก ๋ VPC๋ ๋์ผํฉ๋๋ค.)
๋์ ํด๋น ์๋ฒ์์๋ ํผ๋ธ๋ฆญ IP๋ก ์ ๊ทผํ์ง ์์ ๊ฒ์ด๋ฏ๋ก ํผ๋ธ๋ฆญ IP ์๋ ํ ๋น์ ํ์ฑํ๋ก ์ค์ ํฉ๋๋ค.
(์ถ๊ฐ์ ์ธ ์ค์ ์ ํ๋ค๋ฉด ๋นํ์ฑํ๋ก๋ ํ ์ ์๊ธด ํ๋ฐ, VPC, ์๋ธ๋ท, NAT ๋ฑ ์ค์ ํด์ฃผ์ด์ผ ํ ๋ถ๋ถ์ด ๋ง๊ธฐ ๋๋ฌธ์ ํด๋น ๊ธ์์ ๋ฒ์ด๋๋ ์ฃผ์ ๋ผ ์๊ฐํ์ฌ ๋์ค์ AWS ๊ด๋ จํด์ ์ ๋ฆฌ๋ฅผ ํ๋ฉฐ ์งํํด ๋ณด๋๋ก ํ๊ณ , ์ด๊ณณ์์๋ ๋์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐธ๊ณ ๋งํฌ๋ ๋งจ ์๋ Reference์ ๊ฑธ์ด๋๊ฒ ์ต๋๋ค.)
๋ง์ง๋ง ์คํ ๋ฆฌ์ง ๊ตฌ์ฑ์ ํ๋ฆฌํฐ์ด ์ต๋ ์ฌ์ฉ๋์ธ 30GB๋ฅผ ์ค์ ํด ์ฃผ๊ฒ ์ต๋๋ค.
์ด์ ์ธ์คํด์ค ์์์ ๋๋ฌ์ฃผ๋ฉด ์ธ์คํด์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋ฉ๋๋ค.
๐ง ์์ฑ๋ EC2์ ์ ์ํ๊ธฐ
EC2 ์ฝ์์์ ๋ฐฉ๊ธ ์์ฑํ DB์ฉ EC2 ์ธ์คํด์ค์ ID๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ๋ผ์ด๋น IPv4 ์ฃผ์์ ์ ํ IP ์ฃผ์๋ฅผ ํ์ธํฉ๋๋ค.
์์ผ๋ก๋ ํ๋ผ์ด๋น-DB-IP ์ฃผ์๋ผ๊ณ ํต์ผํด์ ๋ถ๋ฅด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ์ ์ธ๋ถ์์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ์ง ์์๋ณด๊ธฐ ์ํด, ์ ์ PC์์ ํด๋น ์ฃผ์๋ก ์ ์์ ํด๋ณด๊ฒ ์ต๋๋ค.
ssh -i ํคํ์ด ubuntu@ํ๋ผ์ด๋น-DB-IP ์ฃผ์
ํ 3์ด ๊ธฐ๋ค๋ ค๋ณด๊ณ ์ ์์ด ์๋๋ค๋ฉด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋๊ฒ๋๋ค.
(control + c๋ฅผ ๋๋ฌ์ ์ ์ ์๋๋ฅผ ์ค์งํด์ฃผ์ธ์)
์ด์ ๊ธฐ์กด์ ์์ฑํ๋ EC2(์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2)์ ์ ์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2์์ DB์ฉ EC2๋ก ์ ์ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2์๋ ํคํ์ด๊ฐ ์กด์ฌํ์ง ์์ผ๋ฏ๋ก DB์ฉ EC2์ ์ ์ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ํ์ฌ ์ ์ ์ปดํจํฐ์ ์กด์ฌํ๋ ํคํ์ด๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2์ ์ฎ๊ฒจ์ฃผ๋ ์์ ์ด ํ์ํฉ๋๋ค.
๐ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2์ ํค ํ์ด ์ ๋ฌํ๊ธฐ
scp -i [pem ํ์ผ๊ฒฝ๋ก] [์ ๋ก๋ํ ํ์ผ ์ด๋ฆ] [ec2-user๊ณ์ ๋ช ]@[ec2 instance์ ํผ๋ธ๋ฆญ IPv4 ์ฃผ์]:~/[๊ฒฝ๋ก]
- pem ํ์ผ๊ฒฝ๋ก : ํคํ์ด ํ์ผ์ด ์๋ ๊ณณ์์ ์งํํ์๊ธฐ์ ํคํ์ด ์ด๋ฆ์ ๊ทธ๋๋ก ์์ฑํด์ฃผ์์ต๋๋ค.
- ์ ๋ก๋ํ ํ์ผ ์ด๋ฆ : ํคํ์ด ํ์ผ์ ์ฌ๋ ค์ผ ํ๋ฏ๋ก ํคํ์ด์ ์ด๋ฆ์ ๊ทธ๋๋ก ์์ฑํ์ต๋๋ค.
- ec2-user๊ณ์ : ๋ฐ๋ก ์ค์ ํ์ง ์์์ผ๋ฏ๋ก ubuntu์ ๋๋ค.
- ec2 ์ธ์คํด์ ํผ๋ธ๋ฆญ IPv4 ์ฃผ์ : ์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2์ public IPv4 ์ฃผ์์ ๋๋ค.
- ๊ฒฝ๋ก : ํ ๋๋ ํฐ๋ฆฌ์ ์ถ๊ฐํ ๊ฒ์ด๋ฏ๋ก ~/ ๋ง ์ ์ด์ฃผ์์ต๋๋ค.
์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2์ ์ ์ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ssh -i [ํคํ์ด] ubuntu@[ec2 instance์ ํผ๋ธ๋ฆญ IPv4 ์ฃผ์]
์ด๋ ls ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ผ์ ํ์ธํ๋ฉด ์์ ๊ฐ์ด pemํค๊ฐ ์ ๋ฌ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๐ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2์์ DB์ฉ EC2์ ์ ์ํ๊ธฐ
์ด์ ์ ๋ฌ๋ pem ํค๋ฅผ ํตํด์ DB์ฉ EC2์ ์ ์ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ssh -i ํคํ์ด ubuntu@ํ๋ผ์ด๋น-DB-IP ์ฃผ์
์์ ๊ฐ์ด DB์ฉ EC2 ์๋ฒ์ ์ ์์ ์ผ๋ก ์ ์ํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ง MYSQL ์ค์นํ๊ณ ์คํํ๊ธฐ
์ด์ DB์ฉ EC2์์ MYSQL์ ์ค์นํ๊ณ ์คํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
apt-get update
์์ธ๊ฐ ๋ฐ์ํ๋ sudo๋ฅผ ๋ถ์ฌ์ค๋๋ค.
(์ ๋ง ๋ฐ์ํ๊ฑด์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ, ๋ฐ์ ์ํ๊ณ ์ ๋ฐ์ดํธ ์ฑ๊ณตํ์๋ฉด ๋์ด๊ฐ์๋ฉด ๋ฉ๋๋ค.)
sudo apt-get update
์ฑ๊ณตํ์ต๋๋ค!
sudo apt-get install mysql-server
(ํน์ ๋ฒ์ ์ ๋ช ์ํ๊ณ ์ถ๋ค๋ฉด mysql-server=8.0.33-0ubuntu0.22.04.2 ๋ฑ์ ๋ช ์ํฉ๋๋ค.)
mysql --version
MYSQL ์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด ์์ฒ๋ผ ๋ฒ์ ์ด ๋์ฌ ๊ฒ์ ๋๋ค.
mysql -u root -p
๊ทธ๋ฅ ์ํฐ๋ฅผ ๋๋ฅด๊ฑฐ๋, root๋ฅผ ๊ทธ๋๋ก ์ ๋ ฅํ์ฌ๋ ๋ก๊ทธ์ธ์ ์คํจํฉ๋๋ค.
์ด๋ ๋ฃจํธ ํจ์ค์๋๊ฐ ์ง์ ๋์ด์์ง ์๊ธฐ ๋๋ฌธ์ธ๋ฐ, ์ด์ ๋ถํฐ ์๋ฌ๋ฅผ ํด๊ฒฐํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
sudo mysql -u root -p
์ด๋ ๊ทธ๋ฅ ์ํฐ๋ง ๋๋ฌ์ฃผ๋ฉด ๋ฉ๋๋ค.
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by '์ํ๋ ๋น๋ฐ๋ฒํธ';
flush privileges;
์ด์ exit;๋ก mysql์์ ๋๊ฐ๋๋ค.
๐ง MYSQL ํ ์ด๋ธ ์์ฑํ๊ธฐ
๋ค์ ๊ธ์์ ์งํํ ์์ ๋ฅผ ์ํด ๊ฐ๋จํ ํ์ ํ ์ด๋ธ ํ๋๋ฅผ ๋ง๋ค์ด๋๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ์ ๋ค์ mysql ์ ์ ์ํฉ๋๋ค.
mysql -u root -p
๋น๋ฐ๋ฒํธ๋ ์์์ ์ค์ ํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ๋ ๋ง๋ค์ด ์ฃผ๊ฒ ์ต๋๋ค.
create database [์ํ๋ ์ด๋ฆ];
ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํฉ๋๋ค.
use [์ค์ ํ ์ด๋ฆ];
์ด์ ํ์ ํ ์ด๋ธ์ ์์ฑํ๊ฒ ์ต๋๋ค.
CREATE TABLE member
(
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL
);
๋๋ฌ์ต๋๋ค.
๐ง ๋ง๋ฌด๋ฆฌ
์ด๋ ๊ฒ ํด์ ์ด๋ฒ์๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ฉ EC2 ์๋ฒ์์๋ง ์ ๊ทผํ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ฉ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ํด๋น ์ธ์คํด์ค์ MYSQL์ ์ค์นํ๋ ๊ณผ์ ์ ์งํํ์ต๋๋ค.
DB์ฉ EC2์์ Public IP๋ฅผ ํ ๋น๋ฐ์ง ์๋ ๋ฐฉ๋ฒ๋ ์์๋ด๊ณ ์ถ์์ง๋ง, ์์ง๊น์ง๋ ์กฐ๊ธ ์ด๋ ค์ด ๊ฒ ๊ฐ์ต๋๋ค...๐ญ
๊ทธ๋๋ ์ธ๋ฐ์ด๋ ๊ท์น๋ง ์ ์ค์ ํด์ฃผ๋ฉด ๋ณ ๋ฌธ์ ๊ฐ ์์๊ฑฐ๋ผ ์๊ฐ๋๋ค์!
๋ค์ ๊ธ์์๋ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์์ ํด๋น DB์ ์ ์ํ ์ ์๋๋ก ์ค์ ํ๋ ๊ณผ์ ์ ์งํํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค~!
๐ Reference
ํผ๋ธ๋ฆญ IP๋ฅผ ํ ๋นํ๊ณ ์ถ์ง ์๋ค๋ฉด ๋ค์์ ์ฐธ๊ณ ํด์ฃผ์ธ์.