โ๏ธEC2 ๊ธฐ๋ณธ ์ธํ
1. ์ฐ์ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค.
์ฐ๊ฒฐ ๋๋ฅด๊ธฐ
$ bash
$ cd ~
2. ์ธ์คํด์ค์ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ
$ sudo apt update
ํจํค์ง ๋งค๋์ ๊ฐ ๊ด๋ฆฌํ๋ ํจํค์ง์ ์ ๋ณด๋ฅผ ์ต์ ์ํ๋ก ์ ๋ฐ์ดํธํ๊ธฐ ์ํ ๋ช ๋ น์ด
3. nvm, npm์ ์ค์นํ์ฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ๊ธฐ
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
touch ~/.zshrc
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
๐ ์ค์น์๋๋ฉด ์๋ ์ฌ์ดํธ์ฐธ๊ณ ํ๊ธฐ ๐
4. ์ค์น ๋ค ๋์๋์ง ํ์ธ ํ๋ ค๋ฉด nvm ๋ฒ์ ๋ฌผ์ด๋ณด๊ธฐ
nvm --version
5. node.js ์ค์นํ๊ธฐ
$ nvm install node
$ sudo apt install npm
npm ๋ช ๋ น์ด๊ฐ ์ ์์ ์ผ๋ก ์ ๋ ฅ๋์ง ์๋ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ช ๋ น์ด.
๐ ์ ๊ณผ์ ๊น์ง ๋ง์ณค๋ค๋ฉด AWS์์ ๊ฐ๋ฐํ ์ ์๋ ํ๊ฒฝ ์ธํ ์ ์ด๋์ ๋ ๋ง์ณค๋ค. ๐
โ๏ธ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ์ ์ EC2 ์ธ์คํด์ค ์ธํ ํ๊ธฐ
1. ์์ฑ๋์ด ์๋ EC2 ์ธ์คํด์ค์ ํ๊ทธ ๋ถ์ฌํ๊ธฐ.
ํ๊ทธ๋ฅผ ์ถ๊ฐํ๋ ์ด์ ๋ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ๋จ๊ณ์์ ์ธ์คํด์ค๋ฅผ ์ ์๋ณํ๊ธฐ ์ํจ์ด๋ค.
EC2 - ์ธ์คํด์ค - ์ธ์คํด์ค ์ ํ ํ [์์ ] - [์ธ์คํด์ค ์ค์ ] - [ํ๊ทธ ๊ด๋ฆฌ] - [ํ๊ทธ ์ถ๊ฐ ๋ฒํผ] => ํค์ ๊ฐ ์์ ๋กญ๊ฒ ์ด๋ฆ ์ค์ ๊ฐ๋ฅ
2. ์์ฑ๋์ด ์๋ EC2 ์ธ์คํด์ค์ ์ญํ ๋ถ์ฌํ๊ธฐ. (IAM ์๋น์ค ์ด์ฉ)
์ญํ (role)์ AWS์ ๊ฐ์ฒด (์๋น์ค, ์ฌ์ฉ์ ๋ฑ)๊ฐ ๋ค๋ฅธ ์๋น์ค์ ์ ๊ทผํ๊ฒ ํ ์ ์๋๋ก ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
EC2 - ์ธ์คํด์ค - ์ธ์คํด์ค ์ ํ ํ [์์ ] - [๋ณด์] - [IAM ์ญํ ์์ ] - [์ IAM ์ญํ ์์ฑ] - [์ญํ ๋ง๋ค๊ธฐ] - [AWS ์๋น์ค, EC2 ์ ํํ๊ธฐ] - [๋ค์: ๊ถํ ๋ฒํผ] - [ AmazonS3FullAccess, AmazonSSMFullAccess, AWSCodeDeployRole ์ ํํ๊ธฐ ] - [๋ค์: ํ๊ทธ ๋ฒํผ] - [๋ค์ : ๊ฒํ ] - [ ์ญํ ์ ์์์ ์ด๋ฆ ์ ๋ ฅ] -[ ์ญํ ๋ง๋ค๊ธฐ ๋ฒํผ ]
3. ์ถ๊ฐ์ ์ผ๋ก ์ค์ ํ๊ธฐ
[์์ฑํ ์ญํ (role) ํด๋ฆญ] - [์ ๋ขฐ๊ด๊ณ ํด๋ฆญ] => (์ ๋ขฐ๊ด๊ณ๋ ํด๋น ์ญํ ์ ์ทจํ ์ ์๋ ์๋น์ค๋ ์ฌ์ฉ์๋ฅผ ๋ช ์ํ๋ ๋ถ๋ถ)
[์ ๋ขฐ๊ด๊ณ ํธ์ง์ service ๊ฐ ์์ ํ๊ธฐ] ๐
"Service":["ec2.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com"]
4. EC2 ์ธ์คํด์ค์ ์์ฑํ ์ญํ ์ ์ฉํด์ฃผ๊ธฐ
์ธ์คํด์ค ์ ํ ํ [์์ ] - [๋ณด์] - [IAM ์ญํ ์์ ] - [๋ง๋ค์ด๋์ ์ญํ ํด๋ฆญ] - [์ ์ฅ]
=> ์ด์ EC2๋ S3, CodeDeploy, SSM ์๋น์ค์ ์ ๊ทผ ๊ฐ๋ฅ!
5. EC2 ์ธ์คํด์ค๊ฐ ์ ์ ํ ๋ณด์ ๊ทธ๋ฃน ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๊ธฐ
[ํด๋น ์ธ์คํด์ค ํด๋ฆญ] - [๋ณด์ ํญ] - [๋ณด์ ๊ทธ๋ฃน ํด๋ฆญ] - [์ธ๋ฐ์ด๋ ๊ท์น์ 80, 443 ํฌํธ ์๋์ง ํ์ธ]
=> 80๋ฒ ํฌํธ๋ ์๋ฒ ๋ฐฐํฌ๋ฅผ ์ํด ํ์ํ๊ณ , 443ํฌํธ๋ CodeDeploy-Agent์ ์ ์์ ์ธ ์๋์ ์ํด ํ์ํ๋ค.
๐ค์ธ๋ฐ์ด๋ ๊ท์น์ 80, 443 ํฌํธ์๋ ๊ฒฝ์ฐ
[์ธ๋ฐ์ด๋ ๊ท์น ํธ์ง ๋ฒํผ ํด๋ฆญ] - HTTP, HTTPS ์ ํ์ '์์น ๋ฌด๊ด' ๋๋ '์ฌ์ฉ์์ง์ ' ์ผ๋ก ์ค์ ํ๊ณ [๊ท์น ์ ์ฅ ํด๋ฆญ]
โ๏ธ ์๋ฒ ์ฝ๋์ ๋ฐฐํฌ ๊ณผ์ ์ ์๋์ผ๋ก ์งํํ๋ ํ์ดํ๋ผ์ธ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ
1. ๋ฐฐํฌํ ํด๋๋ฅผ vscode๋ก ํจ๋ค. (๋ก์ปฌํ๊ฒฝ์์!)
๋ ํฌ์งํ ๋ฆฌ ์ต์์์ appspec.yml ํ์ผ์ ์ถ๊ฐํ๋ค.
( โฅ appspec.yml ์ ๋ฐฐํฌ ์๋ํ๋ฅผ ๋์์ฃผ๋ CodeDeploy-Agent๊ฐ ์ธ์ํ๋ ํ์ผ์ด๋ค. )
appspec.yml
version: 0.0
os: linux
files:
- source: /
# ์๋ destination์ ํด๋น ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ ์์น๋ก ์ค์ ํ๋ค. (์ฝ๋์์ pwd ๋ช
๋ น์ด ํ์ฉํ๊ธฐ)
destination: ~/ํ์ผ๋ช
๊น์ง
hooks:
ApplicationStop:
- location: scripts/stop.sh
runas: root
AfterInstall:
- location: scripts/initialize.sh
runas: root
ApplicationStart:
- location: scripts/start.sh
runas: root
2. ์ต์์์ scripts ๋๋ ํ ๋ฆฌ(ํด๋)๋ฅผ ์์ฑํ ํ, ๊ทธ ์์ initialize.sh, start.sh, stop.sh ํ์ผ 3๊ฐ๋ฅผ ์์ฑํ๋ค.
( โฅ ๊ฐ ํ์ผ์ appspec.yml ํ์ผ์ด ๊ตฌ์ฑํ๊ณ ์๋ ๋ฐฐํฌ ์๋ช ์ฃผ๊ธฐ์ ๋ฐ๋ผ ์คํ๋๋ค. )
scripts/initialize.sh
#!/bin/bash
# ์๋ ์์น๋ ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ ์์น๋ก ์ค์ ํ๋ค. (pwd ํ์ฉ)
cd ~/ํด๋๋ช
/server ํ์ผ๊น์ง
npm install
npm install pm2@latest -g
sudo apt-get update
sudo apt-get install authbind
sudo touch /etc/authbind/byport/80
sudo chown ubuntu /etc/authbind/byport/80
sudo chmod 755 /etc/authbind/byport/80
scripts/start.sh
#!/bin/bash
# ์๋ ์์น๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ ์์น๋ก ์ค์ .
cd ~/ํด๋๋ช
/server ํ์ผ๊น์ง
authbind --deep pm2 start app.js
scripts/stop.sh
#!/bin/bash
# ์๋ ์์น๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ ์์น๋ก ์ค์ .
cd ~/ํด๋๋ช
/server ํ์ผ๊น์ง
pm2 stop app.js 2> /dev/null || true
pm2 delete app.js 2> /dev/null || true
3. ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ ์ ์ฅํ๊ณ git add / commit / push ํ๊ธฐ
4. AWS CodeDeploy ์ธํ ํ๊ธฐ1
[AWS CodeDeploy ๋์๋ณด๋] - [์ ํ๋ฆฌ์ผ์ด์ ] - [์ ํ๋ฆฌ์ผ์ด์ ์์ฑ] - [์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ์ ์์๋ก ์ค์ , ์ปดํจํ ํ๋ซํผ์ 'EC2/์จํ๋ ๋ฏธ์ค' ๋ก ์์ฑ] - [์ ํ๋ฆฌ์ผ์ด์ ์์ฑ ๋ฒํผ]
5. AWS CodeDeploy ์ธํ ํ๊ธฐ2
[์์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ๊ทธ๋ฃน ํญ] - [๋ฐฐํฌ ๊ทธ๋ฃน ์์ฑ ๋ฒํผ ํด๋ฆญ] - [๋ฐฐํฌ ๊ทธ๋ฃน ์ด๋ฆ์ ์์๋ก ์ค์ , ์๋น์ค ์ญํ ์์ญ์ ์์ ๋ง๋ค์ด ๋์ ์ญํ role ์ ํ] - [ํ๊ฒฝ๊ตฌ์ฑ์์ 'Amazon EC2 ์ธ์คํด์ค'๋ฅผ ์ ํ, ํ๊ทธ ๊ทธ๋ฃน์๋ EC2 ์ธ์คํด์ค์ ์ค์ ํด๋ ํ๊ทธ ํค์ ๊ฐ ์ ํ] - [๋ก๋ ๋ฐธ๋ฐ์ฑ ํ์ฑํ ์ฒดํฌ ํด์ ํ๊ธฐ] - [๋ฐฐํฌ ๊ทธ๋ฃน ์์ฑ ๋ฒํผ ํด๋ฆญ]
6. ์๋ฒ ๋ฐฐํฌ ์๋ํ ํ์ดํ๋ผ์ธ ๊ตฌ์ถํ๊ธฐ
๐ช[CodePipeline] - [ํ์ดํ๋ผ์ธ ์์ฑ ๋ฒํผํด๋ฆญ] - [ํ์ดํ๋ผ์ธ ์ด๋ฆ ์์๋ก ์ ๋ ฅ] - [๋ค์ ๋ฒํผ ํด๋ฆญ]
๐ช- [์์ค ์คํ ์ด์ง์์ ๋ฐฐํฌํ ๋ ํ์งํ ๋ฆฌ๊ฐ github์ ์ ์ฅ๋์ด ์๋์ง ํ์ธ ํ, ์์ค ๊ณต๊ธ์๋ฅผ Github(๋ฒ์ 2) ์ ํ] - [๋ค์ ๋ฒํผ ํด๋ฆญ] - [Github์ ์ฐ๊ฒฐ ๋ฒํผ] - [์ฐ๊ฒฐ ์ด๋ฆ ์ ํ] - [Github์ ์ฐ๊ฒฐ ๋ฒํผ ํด๋ฆญ] - [์ ์ฑ ์ค์น ๋ฒํผ ํด๋ฆญ] - [๋ณธ์ธ ๊นํ ๊ณ์ ์ ํ] - [๊นํ์ ๋ก๊ทธ์ธ ํ 'Only select repositories'๋ฅผ ์ ํ, ์์ค ์ฝ๋๋ก ์ด์ฉํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ ํํ๊ณ [ Save ] ๋ฒํผ ํด๋ฆญ] - [์ฐ๊ฒฐ ๋ฒํผ ํด๋ฆญ] - [๋ ํฌ์งํ ๋ฆฌ ์ด๋ฆ์ ๋ฐฉ๊ธ ์ฐ๊ฒฐํ ๋ ํฌ์งํ ๋ฆฌ ๋ช ๊ณผ ๊ฐ๊ฒ ์ง์ , ๋ธ๋์น๋ master๋ main, ์ถ๋ ฅ ์ํฐํฉํธ ํ์์ 'CodePipeline ๊ธฐ๋ณธ๊ฐ'] - [๋ค์ ๋ฒํผ ํด๋ฆญ]
๐ช- [๋น๋ ์คํ ์ด์ง] => ์ฝ๋ ์ปดํ์ผ ๋น๋ ๊ณผ์ ๋ฐ ํ ์คํธ ์ฝ๋๊ฐ ์๋ค๋ฉด ์ด๋ถ๋ถ์ ์ค์ ํด์ผํ๋ค. ์์ผ๋ฉด ๊ฑด๋๋ฐ๊ธฐ - [๋ค์ ๋ฒํผ ํด๋ฆญ]
๐ช- [๋ฐฐํฌ ์คํ ์ด์ง] -[ ๋ฐฐํฌ ๊ณต๊ธ์๋ 'AWS CodeDeploy' ์ ํ, ๋ฆฌ์ ์ ์์ธ, ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ์ ์์ฑํด ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ ์ ํ, ๋ฐฐํฌ ๊ทธ๋ฃน์ ์์ฑํด๋ ๋ฐฐํฌ ๊ทธ๋ฃน ์ ํ]
๐ช- ๋ฐฐํฌ ๊ธฐ๋ค๋ฆฌ๊ธฐ
์ฒ์์๋ 1๋ถ๋ ์๋์ ์๋ ์ฌ์ง์ฒ๋ผ ์ฑ๊ณต ๋ฉ์ธ์ง๊ฐ ๋ ์ ์ข์ํ๋ค.
๊ทธ๋ฐ๋ฐ install ์์ ๋ฐฐํฌ ์คํจ๊ฐ ๋์๋ค.
โ๏ธ ๋ฐฐํฌ ์คํจํ๋ ๊ฒฝ์ฐ ํด๊ฒฐ๋ฐฉ๋ฒ
๋ก๊ทธ๋ฅผ ์ฐพ์๋ณด์!
CodeDeploy-Agent๋ ํ์ดํ๋ผ์ธ ์คํ ๋๋ง๋ค ๋ก๊ทธ๋ฅผ ํด๋น EC2 instance์ ์ ์ฅํ๋ค.
๐ ์๋ ๋ช ๋ น์ด๋ก ๋ก๊ทธ ํ์ผ์ด ์ ์ฅ๋ ๊ฒฝ๋ก๋ก ์ด๋ํ๊ธฐ ๐
'cd /opt/codedeploy-agent/deployment-root/deployment-logs'
ls ๋ก ์ด๋ค ํ์ผ ์กด์ฌํ๋์ง ํ์ธํ๊ธฐ
ls
ํด๋น ํ์ผ nano๋ก ํ์ผ ์ด๊ธฐ
nano ํ์ผ๋ช
โ๏ธ ๋ฐฐํฌ ํด๊ฒฐ
appspec.yml, initialize.sh, start.sh, stop.sh ํ์ผ ์์ ์์น๋ฅผ ์ ์ค์ ํ์.
pwd ๋ช ๋ น์ด๋ก ์์น๋ฅผ ํ์ธํ ์ ์๋ค.
๋๋ /opt - ์ถ๊ฐ์ ์ธ (optional) ํ๋ก๊ทธ๋จ๋ค์ ์ค์น ๊ฒฝ๋ก
โ๏ธ AWS EC2 ํฐ๋ฏธ๋ ์ธ์ ์ด ์ข ๋ฃ๋๋ค๋ฉด??
$ bash
$ cd ~
$ sudo apt update
์ถ๊ฐ ๊ณต๋ถํด๋ณด๊ธฐ
linux์ standard stream
linux์ tail, head, grep๊ณผ ๊ฐ์ ํฐ๋ฏธ๋ ๋ช ๋ น์ด
)
https://help.ubuntu.com/kubuntu/desktopguide/ko/directories-file-systems.html
https://velog.io/@wngud4950/AWS-EC2-CodeDeploy-Appspec.yml%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
๐ ์๋ชป๋ ๊ฐ๋ ์ ๋ฌ์ด ์๋ค๋ฉด ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค. ์ ์ ์ฑ์ฅ์ ํฐ ๋์์ด ๋ฉ๋๋ค๐ค
'๐ฌComputer Science > ๋คํธ์ํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] IP (์ธํฐ๋ท ํ๋กํ ์ฝ)์ด๋? HTTP ์น ๊ธฐ๋ณธ ์ง์ (0) | 2023.01.02 |
---|---|
axios instance๋ก ์จ๋ณด๊ธฐ (0) | 2022.09.14 |
GraphQL ๊ตฌ์กฐ (0) | 2022.08.02 |
GraphQL์ด๋, ํน์ง, ์ฅ๋จ์ , REST API์ ๋น๊ต (0) | 2022.08.02 |
์น ์บ์๋, ์บ์์ ์ฅ์ , ์บ์๊ฐ ์ฌ์ฉ๋๋ ๊ณณ (0) | 2022.08.01 |