aws ๋ฐฐํฌ๋ฅผ ํ๊ฒ๋๋ค ์ด์ ๊น์ง๋ ํ๋ก ํธ๋ง ๋ฐฐํฌํ๋๊ฑธ ํด๋ดค์๋๋ฐ, ํ๋ก ํธ์ ์๋ฒ๋ฅผ ํฉ์น ํ์คํ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํด๋ณด๋ ์ข์ ๊ฒฝํ์ ์ป๊ฒ ๋์๋ค. ์๋ฒ๋ express, db๋ mysql, ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง + ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง์ผ๋ก ๋ ํ๋ก์ ํธ๋ก, ๋ด๊ฐ ์ค์ง์ ์ผ๋ก ์๋ฒ๋ฅผ ๊ฐ๋์์ผ์ผ ํ๋ ๊ฒ์ mysql๊ณผ express๊ฐ ์์๋ค. mysql๊ฐ์ ๊ฒฝ์ฐ๋ mysql-server๋ฅผ ํตํด ์ฝ๊ฒ db๋ฅผ ๊ณ์ ๋๋ฆด ์ ์์๋ค. ํ์ง๋ง express์ ๊ฒฝ์ฐ ํ๋ฒ๋ ์ํด๋ดค๋ค๋๊ฒ ๋ฌธ์ ,,,๋ผ์ ๋์ค์๋ผ๋ ๊น๋จน์๊น๋ด ๋ฐฐํฌํ ๊ณผ์ ์ ์ ์ด๋์ผ๋ ค ํ๋ค. ๊ฑฐ๋์ ๋ฏธํ๊ณ ์คํํธ
์ธ์คํด์ค ์์ฑ ๊ณผ์ ์์
์ธ์คํด์ค ์์ฑ ๊ณผ์ ์์๋ ์์ฑ ํ์ ๋ฏธ๋ฆฌ ํ๋ ฅ์ ip(elastic ip)๋ฅผ ๋ง๋ค์ด ํ ๋นํด๋์. ๋์ค์ ๋ง๋ค์ง ์์ผ๋ฉด ๋ค์๊ธ ์ ์ํ๋ ๊ณผ์ ์ด ๊ท์ฐฎ๋ค.
ec2 ์ฝ์์ ๋ฉ๋ด์์ Elastic IP addressses -> Allocate Elastic IP address ๋ฅผ ํตํด ๊ณ ์ ์ ์ผ๋ก IP๋ฅผ ํ ๋นํด์ค๋ค. ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ ์ธ์คํด์ค ์ฌ์คํ๋ง๋ค ip๊ฐ ๋ฐ๋ ์ ์๊ธฐ๋๋ฌธ์ ๊ณ ์ ์ ์ธ ip๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ซ๋ค

ํ๋ ฅ์ IP๊ฐ ๋ง๋ค์ด์ก์ผ๋ฉด Actions -> Associate Elastic IP Address ๋ฅผ ํตํด ์ธ์คํด์ค์ ํ ๋นํด์ค๋ค.
ssh ์ฐ๊ฒฐํ๊ธฐ
ssh ์ฐ๊ฒฐ์ ec2 ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๊ผญ ํ์ํ๋ค ๋งค๋ฒ aws ๋ค์ด๊ฐ์ ํ ๊ฒ๋ ์๋๊ณ ์ ์ด์ ์ค์ ์์ฒด๊ฐ ์ด๋ ต์ง ์๋ค ec2 ์์ฑํ ๋ ๋ง๋ ํคํ์ด๋ฅผ ๊ฐ์ง๊ณ
ssh -i ํคํ์ด.pem Username@PublicIP๋ฅผ ํตํด ์ฐ๊ฒฐํด์ค๋ค.
๊ทธ๋ผ ์ด๋ฐ ์์ผ๋ก ์ฐ๊ฒฐ์ด ๋๋ค
์ฒซ ์ฐ๊ฒฐ ์ locale ์ค์
์ ๊ฒฝ์ฐ ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ
Mysql-server
๋ ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ
์๊ฒฉ ์ ์ฅ์์์ clone
git clone ๋ ํฌ์งํ ๋ฆฌ ์ฃผ์๋๋ private repository๋ก๋ ํ๋ฒ ๋ง๋ค์ด ๋ดค๋๋ฐ, ์ด๋ฌํ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ cloneํ๊ธฐ ์ํด์๋ ๊ณ์ ์ ๋ณด ์ธ์ฆ์ด ํ์ํ๋ค.
๋๋ access token์ ๋ถ์ฌํด์ ํด๋น ํ ํฐ์ ๋น๋ฐ๋ฒํธ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ ํํ๋ค.
settings -> Developer settings -> Personal access tokens -> Fine-grain tokens์ ๋ค์ด๊ฐ ์๋กญ๊ฒ ํ ํฐ์ ๋ฐ๊ธํด์ฃผ๊ณ , ์ ๋นํ ๊ถํ์ ์ค์ ํด์ค ๋ค์ git cloneํ ๋ ์ ์ ๋ค์์ ์
๋ ฅ ํ ๋น๋ฐ๋ฒํธ ์
๋ ฅ๋์ ๋ฐ๊ธ๋ ํ ํฐ์ ์
๋ ฅํด์ฃผ๋ฉด cloneํ ์ ์๋ค.
mvm, nodejs ์ค์น
mvm(node.js ๋ฒ์ ๋งค๋์ )๋ฅผ ์ด์ฉํด์ node์ ๋ธ๋ ค์ค๋ npm์ ๋ค์ด๋ก๋ ํ ์ ์๋ค.
# installs nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# download and install Node.js (you may need to restart the terminal)
nvm install 20
# verifies the right Node.js version is in the environment
node -v # should print `v20.17.0`
# verifies the right npm version is in the environment
npm -v # should print `10.8.2`NGINX ์ค์น ๋ฐ ์คํ
$ sudo apt-get update
$ sudo apt-get install nginx
์๋๋ ์ ์ค์น๋์๋ ๋ฒ์ ผ ํ์ธํ๋๊ฒ
$ sudo nginx -v
๊ณต์ NGINX ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ฏธ๋ฆฌ ๋น๋๋ ์ฐ๋ถํฌ ํจํค์ง ์ค์น
$ sudo wget https://nginx.org/keys/nginx_signing.keynginx stop: ๋น ๋ฅธ ์ข ๋ฃnginx quit: ์ ์์ข ๋ฃnginx reload: ๊ตฌ์ฑํ์ผ ๋ค์ ๋ก๋nginx reopen: ๋ก๊ทธํ์ผ ๋ค์์ด๊ธฐnginx restart: ์ฌ์์
nginx๋ฅผ ์ค์นํ๊ณ ์ ๋๋ก ์๋์ ์ํค๊ธฐ ์ํด์๋ nginx์ ํ๊ฒฝ์ ์ค์ ํด์ค์ผ ํ๋ค.
sudo vi /etc/nginx/sites-available/defaultnginx.conf๋ฅผ ํตํด Include๋ ์๋ฒ ์ค์ ๊ดํธ ํ์ผ์ vi ์๋ํฐ๋ฅผ ํตํด ์์ ํด์ค๋ค.
server {
listen 80 default_server;
listen [::]:80 default_server;
...
server_name ์๋ฒ์ด๋ฆ
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
}
...
}server_name ์๋ฒ์ด๋ฆ;- ์ด ์๋ฒ ๋๋ฉ์ธ์ผ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
- ํด๋น ๋๋ฉ์ธ์ผ๋ก ์ ๊ทผํ ๋ Nginx๊ฐ ์ด ์ค์ ์ ์ฌ์ฉํ๋ค
location / { ... }location /์ ๋ชจ๋ ๋ฃจํธ ๊ฒฝ๋ก (/)๋ก ๋ค์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌ
proxy_pass http://127.0.0.1:3000;- ๋ค์ด์ค๋ ์์ฒญ์
127.0.0.1:3000์ผ๋ก ํ๋ก์(์ ๋ฌ)ํ๋ค - ๋๋ ์๋ฒ๋ฅผ ๋๋ฆด ๋ 3000 ํฌํธ๋ก ๋๋ ธ๊ธฐ ๋๋ฌธ์ 3000ํฌํธ๋ก ํ๋ก์๋ฅผ ์ ๋ฌํ๋๋ก ํ๋ค
- ๋ค์ด์ค๋ ์์ฒญ์
proxy_http_version 1.1;- Nginx๊ฐ ํ๋ก์ ์์ฒญ์ ๋ณด๋ผ ๋ HTTP 1.1 ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ์ง์ ๋ณ๋ ์ฌํญ์ ์ ์ฉ์ํค๊ธฐ ์ํด์๋ ์ฌ์์ ํด์ค๋ค.
sudo systemctl restart nginxpm2 ์ค์น
pm2๋ ํ๋ก์ธ์ค ๊ด๋ฆฌ์๋ก Node.js๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ์ ํ๋ก์ธ์ค๋ฅผ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ฉฐ ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ํ๋ก๊ทธ๋จ ์ข ๋ฃ์ ์๋ ์ฌ์์
- ์ฝ๋ ๋ณ๊ฒฝ ์ ํ๋ก์ธ์ค ์ฌ์์
- ๋ก๊ทธ ํ๋ฉด ์ง์ ๋จผ์ ์ ์ญ์ ์ผ๋ก Pm2 ์ฌ์ฉ์ ์ํด ์ค์นํด์ค๋ค.
$ npm install pm2 -g์ฌ๋งํ ๋ช ๋ น์ด๋ ์ด์ ๋๊ฐ ์๋ค
pm2 start[name] : ์์pm2 list: ๋ชฉ๋กpm2 stop id|name|namespace|all|json|stdin: ์ข ๋ฃpm2 delete id|name|namespace|all|json|stdin: ์ ๊ฑฐpm2 start [name] --watch: ์ฝ๋ ๋ณ๊ฒฝ์ ํ๋ก์ธ์ค๋ฅผ ์ฌ์์pm2 log: ๋ก๊ทธ ํ์ธ