Netlify, Firebase๋ก React ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ณธ ์ดํ, AWS๋ฅผ ํตํ React ํ๋ก์ ํธ ๋ฐฐํฌ๋ฐฉ๋ฒ๋ ์์๋ณด์๋ค๐๐ป
AWS๋ฅผ ํตํด React์ ๊ฐ์ SPA๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ 2๊ฐ์ง๊ฐ ์๋ค. AWS EC2๋ฅผ ํ์ฉํ ๋ฐฐํฌ์ AWS S3+cloudfront๋ฅผ ํ์ฉํ ๋ฐฐํฌ์ด๋ค. ์ด๋, ๊ฐ ๋ฐฐํฌ ๋ฐฉ๋ฒ์์ ๋ฐฐํฌํ ์ ์๋ ์๋ฒ๊ฐ ๋ค๋ฅด๋ค. EC2๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ ์น ์๋ฒ์ WAS ์๋ฒ๋ฅผ ๋ฐฐํฌํ ์ ์๊ณ , S3+cloudfront๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ ์ ์ ์ฝํ ์ธ ์ ๋ฐฐํฌํ ์ ์๋ค.
๐EC2๋ฅผ ํตํ ๋ฐฐํฌ
EC2๋ฅผ ํตํด ์น ์๋ฒ์ WAS ์๋ฒ๋ฅผ ๋ฐฐํฌํ ์ ์๊ธฐ ๋๋ฌธ์, react ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด์๋ express ์๋ฒ๋ฅผ ์ด์ฉํด์ผ ํ๋ค. express ์๋ฒ๋ ์น ์๋ฒ๋ก๋ ์ด์ฉํ ์ ์๊ณ , WAS ์๋ฒ๋ก๋ ์ด์ฉํ ์ ์๋ค.
EC2๋ฅผ ํตํ ๋ฐฐํฌ ๊ณผ์ ์ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- express ์๋ฒ ๊ตฌ์ถ
- react ํ๋ก์ ํธ ์์ฑ ๋ค ๋น๋
- express ์๋ฒ๋ฅผ ํตํด react ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณต
- AWS EC2์ express ์๋ฒ ๋ฐฐํฌ
1. express ์๋ฒ ๊ตฌ์ถ
์ํ๋ ํ๋ก์ ํธ์ ๋ฃจํธ ํด๋์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค. ์๋ ๋ช ๋ น์ด๋ Node.js ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ์ฌ์ฉ๋๋ ๋ช ๋ น์ด๋ก ์ด๊ธฐ ํ๋ก์ ํธ ์ค์ ํ์ผ์ธ package.json์ ์์ฑํ๋ค.
npm init -y
๊ทธ๋ฆฌ๊ณ express ์๋ฒ ๊ตฌํ์ ํ์ํ express package๋ฅผ ์ค์นํ๋ค. ๋ช ๋ น์ด๋ ์๋์ ๊ฐ๋ค.
npm install —save express
๊ทธ ๋ค์ ํ๋ก์ ํธ์ ๋ฃจํธ ํด๋์ app.js ํ์ผ์ ๋ง๋ค๊ณ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด express ์๋ฒ ๊ตฌ์ถ ์๋ฃ๋ค.
const express = require("express");
const path = require("path");
const app = express();
app.set("port", process.env.PORT || 5000);
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "/index.html"));
});
app.listen(app.get("port"), () => {
console.log(app.get("port"), "๋ฒ ํฌํธ์์ ๋๊ธฐ์ค..");
});
๋ง์ง๋ง์ผ๋ก ํ๋ก์ ํธ์ ๋ฃจํธ ํด๋์์ ์๋ฒ์ ์ ๊ณตํ index.html ํ์ผ์ ๋ง๋ค์ด์ค๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h1>EC2๋ก React ํ๋ก์ ํธ ๋ฐฐํฌํ๊ธฐ</h1>
</body>
</html>
express ์๋ฒ๋ node app.js ๋ช ๋ น์ด๋ก ์คํํด๋ณผ ์ ์๋ค.
2. react ํ๋ก์ ํธ ์์ฑ ๋ค ๋น๋
ํ๋ก์ ํธ์ ๋ฃจํธ ํด๋์ react ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค. CRA๋ก react ํ๋ก์ ํธ๋ฅผ ์์ฑํด๋ ๋์ง๋ง ๋ ๋ด github์์ react project๋ฅผ cloneํด์๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ํด๋๋ก ์ด๋ํด npm install ๋ช ๋ น์ด๋ฅผ ํตํด ํจํค์ง๋ค์ ์ค์นํ๊ณ , npm run build ๋ช ๋ น์ด๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผ build ํด์ฃผ์๋ค.
3. express ์๋ฒ๋ฅผ ํตํด react ์ ์ ์ฝํ ์ธ ๋ฅผ ์ ๊ณต
๋น๋ํ ํ์ผ๋ค์ ์๋ฒ๋ฅผ ํตํด ์ ๊ณตํ๊ธฐ ์ํด express ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ๋ค.
const express = require("express");
const path = require("path");
const app = express();
app.set("port", process.env.PORT || 5000);
app.use(express.static(path.join(__dirname, "/seoyoung/build")));
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "/seoyoung/build/index.html"));
});
app.listen(app.get("port"), () => {
console.log(app.get("port"), "๋ฒ ํฌํธ์์ ๋๊ธฐ์ค..");
});
๋ค์ node app.js ๋ช ๋ น์ด๋ฅผ ํตํด express ์๋ฒ๋ฅผ ์คํํ์ ๋ ๋์ react ํ๋ก์ ํธ๊ฐ ์ ์คํ๋๋ค๋ฉด AWS EC2๋ฅผ ํตํด ๋ฐฐํฌํ ์ค๋น ์๋ฃ์ด๋ค.
4. AWS EC2์ express ์๋ฒ ๋ฐฐํฌ
4-1. ssh ์ ์
AWS์ ๋ก๊ทธ์ธ์ ํ ๋ค EC2 ์๋น์ค์ ์ ์ํ๊ณ region์ ์์ธ๋ก ํด์ค๋ค. ์ ์ธ์คํด์ค๋ฅผ ์์ํ๊ธฐ ์ํด EC2ํญ์ ๋๋ฅด๊ณ ์ด๋ํ๋ค.
์ด๋ฆ ๋ฐ ํ๊ทธ: ์์ ์ด ์ค์ ํ๊ณ ์ถ์ ์ธ์คํด์ค ์ด๋ฆ์ ์ ๋ ฅํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ฐ OS ์ด๋ฏธ์ง: OS๋ Ubuntu๋ก ์ค์ ํ๋ค.
์ธ์คํด์ค ์ ํ: ํ๋ฆฌํฐ์ด ์ฌ์ฉ๊ฐ๋ฅ์ด๋ผ๋ฉด ํ๋ฆฌํฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํ์ ์ ํํ๋ค.
ํคํ์ด ์์ฑ: ํคํ์ด๋ฅผ ์์ฑํ๋ค. ์ด๋, ํคํ์ด๋ ์ธ์คํด์ค์ ์ ์ํ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค. ํคํ์ด ์ ํ์ RSA, ํคํ์ผ ํ์์ .pem์ผ๋ก ์ ํํ๋ค.
๋คํธ์ํฌ ์ค์ : ๋คํธ์ํฌ ์ค์ ๋ถ๋ถ์ ๋ฐ๋ก ๋ณ๊ฒฝํ์ง ์๊ณ ์งํํ์๋ค.
์ฑ๊ณต์ ์ผ๋ก ์ธ์คํด์ค๊ฐ ์์ฑ๋์๋ค.
๋ง๋ค์ด์ง ์ธ์คํด์ค ์ ์์ ์ํด ํด๋น ์ธ์คํด์ค>์ฐ๊ฒฐ>SSH ํด๋ผ์ด์ธํธ๋ก ๋ค์ด๊ฐ๋ค. ์๋ ๋ฐฉ๋ฒ๋ค์ ๋ฐ๋ผํ๋ฉด ssh๋ฅผ ํตํด ๋ด ์ปดํจํฐ์์ EC2 ์ธ์คํด์ค์ ์ ์๋๊ฒ ๋๋ค.
SSH๋ secure shell๋ก ๋คํธ์ํฌ๋ฅผ ํตํด ์์ ํ๊ฒ ์๊ฒฉ ์์คํ ์ ์ ์ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ๊ณผ ์ํํธ์จ์ด ์งํฉ์ ๋ํ๋ธ๋ค. ์ฆ, ssh๋ EC2 ์ธ์คํด์ค(๊ฐ์ ์๋ฒ)์ ์ ์ํ๊ธฐ ์ํ ๋๊ตฌ์ด๋ค. ์ด๋, ssh(secure shell)์ ์ฃผ๋ก unix ๊ณ์ด ์ด์์ฒด์ ์์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ ๋ฐ ๋ช ๋ น์ด์ด๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ macOS๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๋ฉด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ง๋ง ๋ด ์ปดํจํฐ๋ Windows ์ด์์ฒด์ ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ผ๋ จ์ ๊ณผ์ ์ ๋ฐ๋ผ์ผํ๋ค.
๋๋ Windows์์ OpenSSH๋ฅผ ์ด์ฉํด ์ ์ํ๋ ๋ฐฉ๋ฒ์ ์ ํํ์๊ณ , ์๋ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํ์๋ค.
https://wookim789.tistory.com/34
์๋์ฐ ํฐ๋ฏธ๋์ ์ด์ฉํด EC2 ์ ์ํ๊ธฐ (5)
์ ์ง๋ ๊ธ์์ EC2 ์ธ์คํด์ค๋ฅผ ๋์ ๋ณด์๋ค. ์ด์ ๋ด ๋ก์ปฌํ๊ฒฝ(๋ด pc)์์ aws์ ec2์ ์ ์ํด๋ณด๊ฒ ๋ค. ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง์ด๋ค. ์ด์ ์ ์ค๋ช ํ SSH ๋ฐฉ์์ผ๋ก ์ ๊ทผํ ๊ฒ์ธ๋ฐ, mac์ด๋ผ๋ฉด ํฐ๋ฏธ๋์์ ssh ๋ช
wookim789.tistory.com
์ฐ์ , PowerShell์ ์ด์ฉํด Windows์ OpenSSH๋ฅผ ์ค์นํด์ฃผ์๋ค.
Connect to your Linux instance from Windows with OpenSSH - Amazon Elastic Compute Cloud
Connect to your Linux instance from Windows with OpenSSH - Amazon Elastic Compute Cloud
Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.
docs.aws.amazon.com
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
์ค์น ์ดํ์๋ ๋ด ์ฌ์ฉ์ ํด๋์ .ssh ํด๋์ ๋ด .pem ํ์ผ์ ์์น์ํจ๋ค. ์ดํ ํ์ฅ์๊ฐ ์๋ config ํ์ผ์ ๋ง๋ค๊ณ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
Host aws_stonesy_ec2
HostName (์ ์ํ ์๋ฒ์ ์ฃผ์)
User ubuntu
IdentityFile ~/.ssh/(๋ด pem ํ์ผ ์ด๋ฆ).pem
์ ์ํ ์๋ฒ์ ์ฃผ์๋ 4. ํผ๋ธ๋ฆญ DNS์(๋ฅผ) ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ฐ๊ฒฐ ๋ถ๋ถ์ ๋ณต์ฌํด์ ๋ถ์ฌ๋ฃ์ผ๋ฉด ๋๋ค.
์ดํ ํ์ผ ๊ถํ์ ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํ๋ค. 3. ํ์ํ ๊ฒฝ์ฐ ์ด ๋ช ๋ น์ ์คํํ์ฌ ํค๋ฅผ ๊ณต๊ฐ์ ์ผ๋ก ๋ณผ ์ ์๋๋ก ํฉ๋๋ค.์ ํด๋นํ๋ ๋จ๊ณ์ด๋ค.
๋ด pemํ์ผ์ ์์ฑ>๋ณด์>๊ณ ๊ธ์ผ๋ก ๋ค์ด๊ฐ๋ค.
1)์์ ์ฌ์ฉ ์ํจ
ํ๋จ์ ์์ ์ฌ์ฉ ์ํจ ๋ฒํผ์ ๋๋ฅธ๋ค.
๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์ ์ด ๋จ๋๋ฐ “์ด ๊ฐ์ฒด์์ ์์๋ ์ฌ์ฉ ๊ถํ์ ๋ชจ๋ ์ ๊ฑฐํฉ๋๋ค.”๋ฅผ ์ ํํ๋ค.
ํ์ธ์ ๋๋ฅด๊ณ ๋์จ๋ค. ๊ฒฝ๊ณ ์ฐฝ์ด ํ๋ฒ ๋จ๋๋ฐ ๊ทธ๋ฅ ํ์ธ๋ฒํผ์ ๋๋ฅด๋ฉด ๋๋ค.
2) ์ฌ์ฉ์ ์ถ๊ฐ
ํธ์ง ๋ฒํผ์ ๋๋ฅด๊ณ ๊ทธ๋ฃน ๋๋ ์ฌ์ฉ์์ด๋ฆ ์ถ๊ฐ๋ฅผ ๋๋ฅธ๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ ํ ์ฝ๊ธฐ, ์ฝ๊ธฐ ๋ฐ ์คํ์ ํ์ฉ, ์ฐ๊ธฐ ๊ถํ์ ๊ฑฐ๋ถํ ํ ์ ์ฅํ๋ค.
์ดํ ํฐ๋ฏธ๋์์ ssh aws_stonesy_ec2๋ฅผ ์ ๋ ฅํ๋ฉด ์ธ์คํด์ค์ ์ ์ํ ์ ์๋ค.
์ ์์ ์ฑ๊ณตํ๋ค๋ฉด ubuntu@ip~~์ ํ์์ผ๋ก ๋์ฌ ๊ฒ์ด๋ค.
4-2. ์ฐ๋ถํฌ ๊ฐ์ ์ปดํจํฐ์ node.js, npm, git, ํ๋ก์ ํธ ๊ฐ์ ธ์ค๊ธฐ
์ค์นํ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ๋ค.
- npm
- node.js
- git
- git clone ํ๋ก์ ํธ
๊ฐ์ฅ ๋จผ์ ๋ค์ ๋ช ๋ น์ด๋ก update๋ฅผ ์งํํ๋ค.
sudo apt update
๊ทธ๋ฆฌ๊ณ ์ฐจ๋ก๋ก ์์ ๋ชฉ๋ก๋ค์ ์ค์นํ๋ค.
sudo apt install npm
sudo apt install nodejs
sudo apt install git
git clone <ํ๋ก์ ํธ ์ฃผ์>
์ดํ ํ๋ก์ ํธ์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๋ค.
cd seoyoung(์ด๊ฑด ๋ด ํ๋ก์ ํธ ์ด๋ฆ์ด seoyoung์ด๋๊น)
npm install
npm run build
๊ทธ๋ฆฌ๊ณ ๋ณด์ํญ์์ ์ธ๋ฐ์ด๋ ๊ท์น์ ์ถ๊ฐํด์ค๋ค.
๋ณด์ํญ>๋ณด์ ๊ทธ๋ฃน>์ธ๋ฐ์ด๋ ๊ท์น>์ธ๋ฐ์ด๋ ๊ท์น ํธ์ง>๊ท์น์ถ๊ฐ๋ฅผ ๋๋ฅธ ํ ๋ค์๊ณผ ๊ฐ์ด ์ธ๋ฐ์ด๋ ๊ท์น์ ์ถ๊ฐํด์ค๋ค.
์ด๋ ๋น๋ํ๋ ๋์ค ๋ฌดํ๋ก๋ฉ์ด ๊ฑธ๋ฆฌ๋ ํ์์ด ๋ฐ์ํ๋๋ฐ, ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ผ๊ณ ํ๋ค. ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ค. ๋ณดํต์ ์ด๋ฌ๋ฉด ํด๊ฒฐ๋๋ ๊ฒ ๊ฐ์๋ฐ ๋๋ ํด๊ฒฐ์ด ์๋๋ค. ๊ทธ๋์ ๊ทธ๋ฅ ๋ก์ปฌ์์ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ํ, ๋น๋ ํด๋๋ฅผ github์ ์ฌ๋ฆฌ๊ณ ๋ค์ git pullํด์ ํด๊ฒฐํ๋ค.
https://progdev.tistory.com/26
*์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ฑ
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=2048
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
*์ค์๋ฉ๋ชจ๋ฆฌ ํด์
sudo swapoff -v /mnt/swapfile
sudo rm /mnt/swapfile
⇒ ์ด ๋ฐฉ๋ฒ์ผ๋ก๋ ํด๊ฒฐ๋์ง ์์์๋ค.
๊ทธ๋ฆฌ๊ณ React ํ๋ก๊ทธ๋จ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋ ์ ์๋๋ก pm2๋ฅผ ์ด์ฉํ๋ค. pm2(Process Manager)๋ pm2๋ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌํ๊ณ ์คํํ๋ ํ๋ก์ธ์ค ๋งค๋์ ์ด๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ ์๋ฒ๋ฅผ ์คํํ ์ ์๋๋ก ํ๊ธฐ ์ํด์ pm2๋ฅผ ์ฌ์ฉํ์๋ค. ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ธ์คํด์ค ์ปดํจํฐ์์ ์๋ฒ๋ฅผ ์ข ๋ฃํ์ ๋, ๋ฐฐํฌ ํ๊ฒฝ๋ ์ค๋จ๋ ๊ฒ์ด๋ค.
๋จผ์ pm2๋ฅผ ์ค์นํ๊ณ
sudo npm -g install pm2
pm2 ๋ช ๋ น์ด๋ฅผ ํตํด ์๋ฒ ํ์ผ์ ์คํ์ํจ๋ค.
pm2 start app.js
์ด ๊ณผ์ ์ ํตํด ํฐ๋ฏธ๋์ ์ข ๋ฃํด๋ ํ์ด์ง์ ์ ์ ์๋๊ฒ ๋๋ค.
์ฐธ๊ณ ๋ก ์๋ ๋ช ๋ น์ด๋ก ํ์ฌ ์คํ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์กฐํํ ์ ์๋ค.
pm2 list
pm2๋ฅผ ์ข ๋ฃํ๋ ๋ช ๋ น์ด๋ ์๋์ ๊ฐ๋ค.(stop ๋ค์ ์คํ ์ค์ธ ํ๋ก์ธ์ค ์์ด๋๋ฅผ ๋ค์ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.)
pm2 stop 0
โ์ถ๊ฐ1: ํฌํธ ๋ฆฌ๋ค์ด๋ ํธ
๊ทผ๋ฐ ์์ง ๋ฌธ์ ๊ฐ ์๋ค. ๋ด๊ฐ ๋ฐฐํฌํ ์น์ฌ์ดํธ์ ์ ์ํ๋ ค๋ฉด ํญ์ ๋ค์ :ํฌํธ๋ฒํธ๋ฅผ ๋ถ์ฌ์ผํ๋ค. ๊ทธ๋ฅ ์ ์ํด๋ ๋์ ์น์ฌ์ดํธ๋ก ์ฐ๊ฒฐ๋๋๋ก ํ๋ ค๋ฉด ๋ฆฌ๋ค์ด๋ ํธ ์ค์ ์ ํด์ผํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์น ํ์ด์ง์ ์ ์ํ ๋๋ ๊ธฐ๋ณธ ํฌํธ๊ฐ ๋ค์ ๋ถ์ด์๋ค. ํ์ง๋ง ๊ธฐ๋ณธ ํฌํธ๋ ๋ณด์ด์ง ์๋๋ก ์ค์ ๋์ด ์์ด ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ๋์น์ฑ์ง ๋ชปํ์ ๊ฒ์ด๋ค.
- http์ ๊ฒฝ์ฐ: 80
- https์ ๊ฒฝ์ฐ: 443
ํฌํธ ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์ํ ๋ช ๋ น์ด๋ ์๋์ ๊ฐ๋ค.
// ๋งจ ๋ค์ ์ซ์๋ง ์์ ์ ์คํํ๋ ค๋ ํฌํธ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ๋ฉด ๋๋ค.
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 5000
๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ฌ๊ธฐ์ ์ธ๋ฐ์ด๋ ๊ท์น ์ค์ ๊น์ง ํด์ค์ผ ํฌํธ๋ฆฌ๋ค์ด๋ ํธ๊ฐ ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ก๋ค. ๋ณด์ํญ>๋ณด์๊ทธ๋ฃน>์ธ๋ฐ์ด๋ ๊ท์น>์ธ๋ฐ์ด๋ ๊ท์น ํธ์ง์ ๋๋ฌ์ ๊ท์น์ ์ถ๊ฐํด์ฃผ์๋ค.
์ด์ ๋ค์ ํฌํธ๋ฒํธ๋ฅผ ๋ถ์ด์ง ์์๋ ์ ์์ ์ผ๋ก ์ ์์ด ๋๋ค!
โ์ถ๊ฐ2: ๋๋ฉ์ธ ์ฐ๊ฒฐ
์ฌ๊ธฐ์ ๋๋ด๊ธฐ ์์ฌ์์ ๋๋ฉ์ธ ์ด๋ฆ์ ์ฌ์ ๋ด๊ฐ ๋ฐฐํฌํ ์น ์ฌ์ดํธ์ ์ค์ ํด์ฃผ์๋ค. ๋๋ฉ์ธ์ ํธ์คํ ์ผ์ด์์ด๋ ๊ฐ๋น์์์ ๊ตฌ๋งคํ๋ฉด ๋๋ค. ๋๋ ํธ์คํ ์ผ์ด์์ด ์กฐ~๊ธ ๋ ์ ๋ ดํด์ ํธ์คํ ์ผ์ด์์ ์ด์ฉํ์๋ค.
๋๋ฉ์ธ์ ๊ตฌ๋งคํ๋ค๋ฉด aws์์ Route 53์์ ๋๋ฉ์ธ ์ค์ ์ ํด์ผํ๋ค. Route 53>ํธ์คํ ์์ญ>ํธ์คํ ์์ญ ์์ฑ์ ๋๋ฅด๊ณ ๋ด๊ฐ ๊ตฌ๋งคํ ๋๋ฉ์ธ์ ๋ฑ๋กํ๋ค.
ํธ์คํ ์์ญ ์ด๋ฆ์ ๋๋ฅด๊ณ ๋ค์ด๊ฐ๋ณด๋ฉด 2๊ฐ์ ๋ ์ฝ๋๊ฐ ๋ฐํ ๋ฐ NS ์ ํ์ ๋ ์ฝ๋์ ๊ฐ/ํธ๋ํฝ ๋ผ์ฐํ ๋์์ ๋ด๊ฐ ๊ตฌ๋งคํ ๋๋ฉ์ธ์ ๋ค์์๋ฒ(ํธ์คํธ)๋ก ๋ณ๊ฒฝํ๊ณ ์ ์ฅํ๋ค. 4๊ฐ์ ๊ฐ์ด ์์ํ ๋ฐ 4๊ฐ ๋ค ์ ๋ ฅํ๋ฉด ๋๋ค! ์ด ๊ณผ์ ์ ํธ๋ํฝ ๋ผ์ฐํ ์ ๊ถํ์ ํธ์คํ ์ผ์ด์๋ก ๋๊ฒจ์ฃผ๋ ๊ณผ์ ์ ์ค์ ํ๋ ๊ฒ์ด๋ผ๊ณ ํ๋ค.
์ด์ ํธ์คํ ์ผ์ด์-๋์ ์๋น์ค-๋์ ๋๋ฉ์ธ>๋ค์์๋ฒ/DNS ํญ>DNS ๋ ์ฝ๋ ๊ด๋ฆฌ์์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ค๋ค. ์ ๊ฐ ๋ถ๋ถ์๋ ํผ๋ธ๋ฆญ IP ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค. ์ ํ A๋ IPv4์ ์ฃผ์์ ๋๋ฉ์ธ ์ฐ๊ฒฐ์ ์๋ฏธํ๋ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฆ์ด www์ธ ๊ฒ๊ณผ @์ธ ๊ฒ 2๊ฐ๋ฅผ ์ค์ ํด์ค์ผ๋ก์จ www.๋๋ฉ์ธ.com์ผ๋ก ์ ๊ทผํ๋ , ๋๋ฉ์ธ.com์ผ๋ก ์ ๊ทผํ๋ ๋์ ์น ์ฌ์ดํธ๋ก ์ ์์ง์ ๊ฐ๋ฅํ๋๋ก ํ๋ค.
10๋ถ์ ๋ ๊ธฐ๋ค๋ฆฌ๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ค๊ณ ํ๋ค!
๐์ฐธ๊ณ /์ถ์ฒ
ํ๋ก ํธ ๋ฐฐํฌ ๋ฐฉ๋ฒ 1ํธ[AWS EC2๋ฅผ ํ์ฉํ ๋ฐฐํฌ] with React ,Express ํ๊ฒฝ
'๐ป์น(Web) > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React]Vite, Redux (0) | 2024.06.27 |
---|---|
[React]์ปดํฌ๋ํธ์ ์ฌ์ฌ์ฉ์ฑ/์ผ๊ด์ฑ (0) | 2024.06.25 |
[React]Firebase๋ก React ๋ฐฐํฌํ๊ธฐ, Mixed-Content ์๋ฌ (1) | 2023.09.03 |
[React]Netlify๋ก React ๋ฐฐํฌํ๊ธฐ: ์๋ก๊ณ ์นจ, API ์ฐ๊ฒฐ ์๋ฌ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2023.09.01 |
[React]์น ํ์ค์ ์ค์ํ๋ฉฐ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ (0) | 2023.08.28 |