์ต๊ทผ์ Co-Code๋ผ๋ ์ฝ๋ฉ ๊ต์ก ํ๋ซํผ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉด์ ๋ฐฑ์๋๋ฅผ ๋งก๊ฒ ๋์์ต๋๋ค!!
๊ฐ์ฅ ๋จผ์ ํ๊ฒ๋๊ฑด ์๋ฒ ๋ฐฐํฌํ๊ธฐ...
๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค
๊ฐ์ฅ ๋จผ์ EC2๋ถํฐ ์์ฑํด๋ณด์๋ค!
(์ ๋ธ๋ก๊ทธ AWS์ ์ธ์คํด์ค ์์ฑ ์ค์ต์ด ์์ผ๋ ์ฐธ๊ณ ํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค)
=> Ubuntu๋ฅผ ์ฌ์ฉํ์!! (+ ํ๋ฆฌํฐ์ด)
ํคํ์ด๋ ๋ง๋ค์ด์ ์ ๋ณด๊ดํด์ฃผ๊ณ !!
ssh -i "pem ํ์ผ ์ด๋ฆ" ubuntu@ec2-"ํผ๋ธ๋ฆญ ip ์ฃผ์".ap-northeast-2.compute.amazonaws.com
์ด์ ์์
์ค์ธ ํ๊ฒฝ์์ (์ ๋ vscode๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ vscode ํฐ๋ฏธ๋์ ์ด์ฉํ์) pem ํ์ผ ์์น๋ก ์ด๋ ํ
์์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ EC2 ์๋ฒ๋ก ์ ์ํ๋ค
๊ทธ๋ฐ๋ฐ
Permissions for 'key.pem' are too open
์๋ฌ๊ฐ ๋ฐ์....๐ซ
(๊ด๋ จ ๋ด์ฉ์ ์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ฌ๋ ค๋จ์ต๋๋ค!!)
์ด๋ ๊ฒ ํด๊ฒฐ์ ํ๊ณ ๋ ํ EC2 ์๋ฒ์ ์ ์ ์๋ฃ
sudo apt update
sudo apt install nodejs
sudo apt install npm
์์ ๊ฐ์ ๋ช ๋ น์ด๋ก EC2 ์๋ฒ์ npm๊ณผ node.js ๋ฅผ ์ค์นํฉ๋๋ค
(git์ ์ด๋ฏธ ๊น๋ ค์์)
node.js์ npm ์ค์น๊ฐ ์๋ฃ ๋์์ผ๋ฉด ์ํ๋ ๋๋ ํ ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ ์ถ์ Node.js ์๋ฒ๊ฐ ์๋ git์์ clone์ ํด์ค๋ค
git clone์ด ๋ค ๋์์ผ๋ฉด ์๋ฒ ํด๋๋ก ์ด๋ํด์ npm install ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ํ์ํ ์์กด์ฑ๋ค์ ์ค์นํด์ค๋ค
(์ ๋ node๊ฐ ์ต์ ๋ฒ์ ์ผ๋ก ๊น๋ฆฌ์ง ์์ ๋ค๋ฅธ ๋ช ๋ น์ด๋ก ์ ๊ทธ๋ ์ด๋ ์์ผฐ๋๋ฐ ์ถํ์ ๋ฐ๋ก ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค!)
DB๋ ์ค์ ํด์ค์ผ ํ๋๋ฐ ์ ๋ MongoDB๋ฅผ ์ฌ์ฉํ์์ต๋๋ค
// ๋ชฝ๊ณ ๋๋น ์ค์น
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
// list ํ์ผ ์์ฑ
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
// ํจํค์ง ๊ด๋ฆฌ์ ์
๋ฐ์ดํธ
sudo apt update
sudo apt upgrade
// ๋ฐ๋ชฌ ์ค์น
sudo apt-get install -y mongodb-org
์์ ์ฝ๋๋ก MongoDB๋ฅผ ๋ค์ด๋ก๋ ํ๊ณ
sudo systemctl start mongod
๋๋
sudo service mongod start
์์ ์ฝ๋๋ก DB๋ฅผ ์คํํ๋ฉด ๋๋๋ฐ ์ด์์ด ์์ผ๋ฉด DB๊ฐ ์ ์คํ๋ ๊ฒ!
mongosh
use admin
db.createUser({user: "์์ด๋", pwd: "๋น๋ฐ๋ฒํธ", roles:["root"]});
exit
sudo service mongod restart // ์ฌ์์
์ด์ ์์ ๋ช ๋ น์ด๋ก EC2 MongoDB ์ ์์ ์ํ ๊ณ์ ์ ์์ฑํ๋ค
=> ํ์ฌ MongoDB๋ฅผ ์ค์นํ ๊ณณ์ ๋ก์ปฌ ์ปดํจํฐ๊ฐ ์๋๋ผ AWS EC2 ์ธ์คํด์ค์ ์ค์นํ ๊ฒ์ด๋ฏ๋ก EC2 ์ธ์คํด์ค์ ์๋ MongoDB์ ์ ์ํ๊ธฐ ์ํด์๋ ์ ์ ํ์ฉ IP๋ฅผ ๋ณ๊ฒฝํด์ค์ผํ๋ค
$ sudo vi /etc/mongod.conf
์ ๋ช ๋ น์ด๋ก MongoDB ์ค์ ํ์ผ์ ์ด๊ณ
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
# engine:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1 // ์ฌ๊ธฐ๋ฅผ 0.0.0.0์ผ๋ก ๋ณ๊ฒฝ!
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security: // ์ด ๋ฌธ์ฅ ์ถ๊ฐ!!
authorization: enabled // ์ด ๋ฌธ์ฅ ์ถ๊ฐ!!
...
i๋ฅผ ๋๋ฌ์ ์ ๋ ฅ ๋ชจ๋๋ก ๋ณํ ํ ์์ ํ๊ณ esc๋ฅผ ๋๋ฌ ๋ช ๋ น ๋ชจ๋๋ก ๋ค์ ๋์์ :wq๋ก ์ ์ฅ ํ ์ข ๋ฃํ๋ค.
sudo service mongod restart
MongoDB๋ฅผ ์ฌ์คํ ํด์ค๋ค!
์์ ์๋ index.js ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด git์๋ ์ฌ๋ฆฌ์ง ์๋ .env ํ์ผ๋ก
์๋ฒ ํฌํธ์ DB ์ ์ ์ฃผ์๋ฑ์ ์ ์ฅํด๋จ๊ธฐ ๋๋ฌธ์
(dotenv ์ฌ์ฉํ์)
vi๋ฅผ ์ฌ์ฉํ์ฌ .env ํ์ผ์ ๋ณต์ฌํด์ ์ง์ ๋ง๋ค์ด์คฌ์ต๋๋ค!
์์ ๊ณผ์ ์ ๋ชจ๋ ์ํํ ํ, node index.js ๋ช ๋ น์ด๋ก ์๋ฒ๋ฅผ ์คํ์์ผ EC2 ํผ๋ธ๋ฆญ IP ์ฃผ์ :ํฌํธ๋ฒํธ ๋ก ์ ์ํ๋ฉด ๋๋๋ฐ
์๋ง ์ด๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ ๊ฒ์ด๋ค
=> EC2 ์ธ๋ฐ์ด๋ ๊ท์น์ ์์ ํด์ ์ธ์คํด์ค์์ ์ด๋ค ํฌํธ๋ฅผ ๊ฐ๋ฐฉํ ์ง ์ ์ํด์ค์ผ ์ ๊ทผ์ด ๊ฐ๋ฅํจ!
์ด๋ฐ์์ผ๋ก ์์ฑํ EC2 ์ธ์คํด์ค์ ๋ณด์ ๊ทธ๋ฃน์์ ์ธ๋ฐ์ด๋ ๊ท์น์ ์ค์ ํด์ค์ผํ๋๋ฐ
node.js ๊ธฐ๋ณธ ํฌํธ๋ฒํธ์ธ 3000์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ EC2์์ 3000๋ฒ ํฌํธ๋ฅผ 0.0.0.0/0 (๋๊ตฌ๋ ์ ๊ทผ ๊ฐ๋ฅ) ํ๊ฒ ์ค์ ํ์!
MongoDB๋ ๊ธฐ๋ณธ ํฌํธ๋ฒํธ์ธ 27017๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ 0.0.0.0/0 ์ผ๋ก ํฌํธ๋ฅผ ํ์ฉํด๋จ์!
๊ทธ๋ผ ์ด์ ๋!!!
์ด ์๋๋ผ ์ฌ์ฉ์ค์ธ ํฐ๋ฏธ๋์์ ์ธ์คํด์ค๋ฅผ ๋์์ ๋ค๋ฅธ ์์ ์ ํ๋ ค๋ฉด ์ด์ฉ ์ ์์ด ์๋ฒ๋ฅผ ๊บผ์ผํ๋๋ฐ
(๊ณ์ ํฐ๋ฏธ๋์ ์คํํ๊ณ ์์ ์ ๋ ์์ผ๋..)
=> pm2๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ค!
pm2๋ ๊ณต์ ๋ฌธ์์ ์ํ๋ฉด n ode.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ณ ๊ธ ํ๋ก๋์ ํ๋ก์ธ์ค ๋งค๋์ ๋ผ๊ณ ์ค๋ช ๋์ด ์๋๋ฐ
์ฌ๋ฌ ๊ธฐ๋ฅ์ค ํ๋๊ฐ ํ๋ก๊ทธ๋จ์ด ๊บผ์ง๋ฉด ์๋์ผ๋ก ๋ค์ ์ผ์ฃผ๋๊ฒ!
pm2๋ก ์๋ฒ๋ฅผ startํ ๊ฒฝ์ฐ pm2๋ก ์ง์ ๋์ง ์์ผ๋ฉด ์์์ ์ฌ์์์ ํด์ฃผ๋..
(๊ฒฐ๋ก ์ ๊ณ์ ์ผ์ ธ์๊ฒ ํด์ฃผ๋๊ฑฐ์)
npm install -g pm2 ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ pm2๋ฅผ ๋ค์ด๋ก๋ ํ๊ณ
pm2 start index.js ๋ช ๋ น์ด๋ฅผ ์ ์ด์ฃผ๋ฉด pm2๋ก ์๋ฒ๋ฅผ ์์ํ ์ ์์
์ด์ ์คํ ํ status๊ฐ online์ด๋ฉด ubuntu ํฐ๋ฏธ๋์ ๋ซ์๋ ์๋ฒ๊ฐ ๊ณ์ ์คํ๋จ!
(pm2 list ๋ช ๋ น์ด๋ก ์์ ๊ฐ์ด pm2 ์ํ๋ฅผ ํ์ธํ ์ ์์)
=> pm2 ๋ช ๋ น์ด ๊ฒ์ํด์ ํ ๋ฒ ๊ณต๋ถํด๋ณด๋๊ฑธ ์ถ์ฒ!
(๋ ํฌํจ..๐ญ)
๋ฐฐํฌ ํ ๊ด๋ฆฌ
์ด๋ ๊ฒ ๋ฐฐํฌ๋ฅผ ๋ง๋ฌด๋ฆฌ ํ์ผ๋ฉด ๊ณ์ํด์ ์ฝ๋๋ฅผ ์์ ํ๋ฉด์ ์๋ฒ์ ์ ์ฉํด์ผ ํ๋๋ฐ...
ssh -i "pem ํ์ผ ์ด๋ฆ" ubuntu@ec2-"ํผ๋ธ๋ฆญ ip ์ฃผ์".ap-northeast-2.compute.amazonaws.com
์ธ์คํด์ค ์ ์์ ์ด์ ์ ๋ค๋ค๋ ๋ช ๋ น์ด์ ๋์ผํ๊ฒ ์งํํ๊ณ
$ git pull
git pull์ ํตํด cloneํ๋ github์ ์ฝ๋ ๋ด์ฉ์ผ๋ก ์๋ฒ๋ฅผ ์ต์ ํํด์ค๋ค
$ sudo service mongod restart
mongodb ์ฌ์คํ
$ pm2 start 0(์คํ์ค์ธ pm2์ id)
pm2๋ก ์๋ฒ๋ฅผ ์ฌ์์
์์ ์ฌ์ดํด๋ก ๊ณ์ํด์ ๋ก์ง์ ์์ ํ๋ฉด์ ์ ์ฉํ๋ฉด ๋๋ค!
DB์์ ์ ๊ฒฝ์ฐ MongoDBCompass์ DB ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ์ฌ ์ ์ํ ํ ํจ๊ป ํ์ธํ๋ฉด์ ์งํํ๊ณ ์๋ค!
'๐ซ Backend > Node' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node.js] Nodemailer๋ฅผ ์ฌ์ฉํ์ฌ ํ์๊ฐ์ ์ ์ด๋ฉ์ผ ์ธ์ฆ ๊ตฌํํ๊ธฐ (0) | 2024.05.07 |
---|---|
CORS๋ ๋ฌด์์ผ๊น? (1) | 2024.02.04 |
JWT ํ ํฐ (1) | 2024.01.31 |
TypeORM ์ด๋? (1) | 2024.01.28 |