AWS ์ฌ์ฉํ์ฌ Next.js ์๋น์ค ๋ฐฐํฌํ๊ธฐ
EC2 ์ค์ ํ๊ธฐ
์๋น์ค์ ๋ง๋ ์ปจํ
์ด๋ ์ด๋ฆ์ ์ค์ ํด์ฃผ๊ณ , AMI๋ ubuntu๋ฅผ ์ฌ์ฉํ๋ค. ์์ฑ ์์ (23.08.17) ๊ธฐ์ค 22.0.4 ๋ฒ์ ์ด
LTS์๊ธฐ์ ํด๋น ๋ฒ์ ์ ์ฌ์ฉํ์์ผ๋ฉฐ, LTS ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
์ธ์คํด์ค ์ ํ์ ์ปจํ
์ด๋ ์์ฑ ํ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ ํ๋ฆฌํฐ์ด๋ก ์ฌ์ฉํ ์ ์๋ t2.micro๋ก ์ค์ ํด์ฃผ๊ณ ํ์ํ๋ค๋ฉด ๋์ค์ ๋ฐ๊พธ๋๋ก ํ๋ค.
์ฌ๋ฌ ๋ฒ ec2 ์ฌ์์ฑ์ ํ๊ณ ์๋ ์ค์ด๋ผ ํค ํ์ด๋ ๋ณด์ ๊ทธ๋ฃน์ ๊ธฐ์กด์ ์๋ ๊ฒ์ ์ฌ์ฉํ์๋ค. (์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ถํ ์ถ๊ฐ ์์ )
์คํ ๋ฆฌ์ง ์ญ์ ํ๋ฆฌํฐ์ด๋ก ์ฌ์ฉ ๊ฐ๋ฅํ 30GB๋ก ์ค์ ํด์ฃผ์๋ค.
์คํ ๋ฆฌ์ง ์ค์ ๊น์ง ๋ง์ณค๋ค๋ฉด ์ธ์คํด์ค ์์!
ํ๋ ฅ์ IP
ec2๋ ์ฌ๋ถํ
์ IP๊ฐ ์ฌํ ๋น๋์ด ๋งค๋ฒ ๋ฐ๋๊ฒ ๋๋ค. ๊ณ ์ ๋ IP๋ฅผ ์ค์ ํ๊ธฐ ์ํด ํ๋ ฅ์ IP ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค.
์ข์ธก ๋ฉ๋ด์ ํ๋ ฅ์ IP ๋ฉ๋ด๋ก ๋ค์ด๊ฐ์ค๋ค.
์์ฑ๋ ํ๋ ฅ์ IP๋ฅผ ์ ํํ๊ณ ์์
> ํ๋ ฅ์ IP ์ฃผ์ ์ฐ๊ฒฐ ์ ์ ํํด์ค๋ค.
๋ฆฌ์์ค ์ ํ์ โ์ธ์คํด์คโ๋ฅผ ์ ํํด์ฃผ๊ณ , ์๋ ์ธ์คํด์ค ๊ฒ์๋์์ ์ ์ ๋ง๋ ec2 ์ด๋ฆ์ ๊ฒ์ํ์ฌ ์ ํํด์ค๋ค. ํ์์ ๊ฒฝ์ฐ, ๊ธฐ์กด์ ์์ฑํ๋ ์ธ์คํด์ค์ ํ๋ ฅ์ IP๊ฐ
์ฐ๊ฒฐ๋์ด ์์ด, ์๋ ์ฌ์ฐ๊ฒฐ์ ์ฒดํฌํด์ฃผ์์ง๋ง ์ฒ์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ์ฒดํฌํ์ง ์๊ณ ์ฐ๊ฒฐ์ ๋๋ฌ์ฃผ๋ฉด ๋๋ค.
EC2 ์ฐ๊ฒฐ ๋ฐ ๋ด๋ถ ์ค์
ํ๋ ฅ์ IP ์ธํ
๊น์ง ๋๋ค๋ฉด ์ง์ ec2์ ์ฐ๊ฒฐํ์ฌ ๋ด๋ถ์์ nginx, codedeploy, docker ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค. ๋ค์ ec2 ๋ฉ๋ด๋ก ๋์์ ์์ฑํ๋
์ปจํ
์ด๋๋ฅผ ์ ํํด์ฃผ๊ณ , ์ฐ์ธก ์ ์ฐ๊ฒฐ์ ๋๋ฌ์ค๋ค.
ssh๋ก ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ ๋จ๊ณ๋ฅผ ๊ทธ๋๋ก ๋ฐ๋ผํด์ฃผ๋ฉด ๋๋ค. ์ธ์คํด์ค ์์ฑํ ๋ ๋ง๋ค๊ฑฐ๋ ์ฐ๊ฒฐํ๋ ํค ํ์ด์ ์์น๋ก ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์ฐจ๋ก๋๋ก ์คํํด์ฃผ๋ฉด ๋๋ค.
ssh ์ฐ๊ฒฐ ์๋๋ ๋ฌธ์
ํ๋์ ํ๋ ฅ์ IP์ ๊ณ์ํด์ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ํ ๋นํด์์ธ์ง ssh ์ฐ๊ฒฐ์ด ์คํจํ๋ ์ค๋ฅ๋ฅผ ๋ง์ฃผํ๋ค. ์ค๋ฅ ๋ด์ฉ์ ๋์ถฉ ์๋์ ๊ฐ์๊ณ , ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ธ๋ฐฉ ์ฐพ์๋ผ ์ ์์๋ค.
REMOTE HOST IDENTIFICATION HAS CHANGED![ํด๊ฒฐ ๋ฐฉ๋ฒ]
ssh-keygen -R [ IP or DomainName]์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ด๊ธฐํํด์ฃผ๊ณ ๋์ ๋ค์ ssh ์ฐ๊ฒฐ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์ ์ ์๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
nginx ์ค์
sudo apt update
sudo apt install nginx์ค์น๋๊ณ ๋์ ์๋ ๋ช
๋ น์ด๋ฅผ ์คํํ์ ๋ running์ด๋ผ๊ณ ๋จ๋ฉด nginx๊ฐ ์ ์คํ๋๊ณ ์๋ ๊ฒ์ด๋ค.
systemctl status nginx
๋๋ ํ๋ ฅ์ IP ์ฃผ์๋ก ์ ์ํ์ฌ Welcome to nginx! ๋ฌธ๊ตฌ๋ฅผ ๋ณด์๋ค๋ฉด nginx ์ค์น์ ์ฑ๊ณตํ ๊ฒ์ด๋ค.

nginx ์ค์ ํ์ผ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
vi /etc/nginx/site-available/defaultserver {
listen 80;
listen [::]:80;
server_name _;
location / {
proxy_pass http://127.0.0.1:3000;
}
}์ค์ ํ์ผ ๋ณ๊ฒฝ ํ nginx ์ฌ๋ถํ
sudo systemctl restart nginxcode deploy ์ค์
Code deploy ์๋น์ค๋ก ๋ค์ด๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์
๋ฉ๋ด๋ฅผ ์ ํํด์ค๋ค.

๋ฐฐํฌ ๊ทธ๋ฃน์ ์ ํํด์ค ํ ์ฐ์ธก ํธ์ง ๋ฉ๋ด๋ฅผ ๋๋ฌ์ค๋ค.

ํธ์ง ํ๋ฉด ๋ค์ด๊ฐ๋ฉด ์๋ ์ชฝ์ ํ๊ฒฝ ๊ตฌ์ฑ์ผ๋ก ๋ด๋ ค๊ฐ EC2 ์ธ์คํด์ค์ ์ฐ๊ฒฐํด์ค๋ค. ์ฐ๊ฒฐ์ ์์ฑํ ๋ ์ค์ ํ๋ Name์ผ๋ก ํ ์ ์๋ค.
์ด์ ๋ค์ EC2๋ก ๋์์ ์ปจํ ์ด๋ ๋ด๋ถ์ codedeploy-agent๋ฅผ ์ค์นํด์ค๋ค.
1. apt ์ ์ฅ์ ์ ๋ฐ์ดํธ
sudo apt-get update2. ruby ์ค์น
sudo apt-get install ruby3. wget ์ค์น
sudo apt-get install wget4. agent ์ค์น
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto5. ์๋น์ค ํ์ธ
sudo service codedeploy-agent statusnginx์ ๋ง์ฐฌ๊ฐ์ง๋ก running ํค์๋๊ฐ ๋ณด์ธ๋ค๋ฉด ์ ์ค์น๋ ๊ฒ์ด๋ค.
Docker ์ค์น
EC2 ๋ด๋ถ Docker ์ค์น ๋ฐฉ๋ฒ์ ํด๋น ์ํฐํด์ ๊ทธ๋๋ก ๋ฐ๋ผํ๋ค.
at ์ค์น
sudo apt install at์ด๋ ๊ฒ๊น์ง ์ธํ ์ ๋ง์น ํ, Code deploy ์๋น์ค์์ ์คํจํ๋ ๋ฐฐํฌ๋ฅผ ์ฌ์๋ ํ๋ค.