ํด๊ฒฐํ์ง๋ ์ข ๋์ง๋ง ๊ทธ๋๋ ์์ด๋ฒ๋ฆฌ์ง ์๊ฒ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค.
AWS์์ ํ๋ก์ธ์ค๋ฅผ 1~2๊ฐ๋ฅผ ๊ด๋ฆฌํ ๋๋ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์์๋๋ฐ 4~5๊ฐ๋ฅผ ๊ด๋ฆฌํ๋ ค๊ณ ํ๋๊น ๋ฌธ์ ๊ฐ ๋ง์ด ์๊ฒผ๋ค. ์ฒ์์ nohup์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ๊ด๋ฆฌํ์๋๋ฐ ํ๋ก์ธ์ค๊ฐ ๋ง์ด ์๊ธฐ๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ๋ค ๋ณด๋๊น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ก์๋จน์ด AWS ์๋ฒ๊ฐ ์์ฃผ ๊บผ์ง๋ ์ผ์ด ์๊ฒผ๋ค. ์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณด๋ค๊ฐ ๊ฒฐ๊ตญ์ pm2์ crontab, shell script๋ก ํด๊ฒฐํ๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ง์ง๋ง์ ๋์์์ด ๋ฐ๋ก ์๊ณ ์ถ์ผ๋ฉด ์ ์ผ ์๋๋ก ๋ด๋ ค๊ฐ๋ฉด ๋๋ค. ๋ด๊ฐ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ธ๋ ฅํ ๋ฐฉ๋ฒ๋ค์ ์ฐจ๋ก๋๋ก ๊ธฐ์ ํด๋ณด๋ ค๊ณ ํ๋ค. ์ฒ์์ nohup์ผ๋ก ์์ฒด๋ก ํด๊ฒฐํด๋ณด๋ ค๊ณ ํ๋ค. ํ์ง๋ง nohup๋ง์ผ๋ก๋ ํ๊ณ๊ฐ ์์๋ค. ๊ทธ๋์ ๋ค์์ผ๋ก ์๋ํ ๋ฐฉ๋ฒ์ nohup์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ํ์ผ๋ค์ ์คํ์ํค๊ณ , crontab์ผ๋ก ์ค์ผ์ค๋งํด๋ณด๊ธฐ๋ก ํ๋ค.
---home
-- main
-- api_server
-- db_update
-- test
-- api_server
-- db_update
ํด๋๋ ์ด๋ฐ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ํ ํด๋์ ์ ๋ถ ์์ผ๋ฉด ์ฝ๊ฒ ํด๊ฒฐ๋ ๊ฒ ๊ฐ์์ผ๋ ์ ๋์ง ์์๋ค. ๋จผ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ค์๋ค. ๋จผ์ ๋์๊ฐ๊ณ ์๋ ํ๋ก์ธ์ค์ pid๊ฐ 4๊ฐ๋ฅผ ๋ชจ๋ ์ฐพ์์ kill ๋ช ๋ น์ด๋ก ํ๋ก์ธ์ค๋ฅผ ์ฃฝ์ธ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ์คํ์ํค๋ ๋ฐฉ๋ฒ์ ์๊ฐํด์ ๋ช ๋ น์ด๋ฅผ ์์ฑํ์๋ค.
#! /bin/bash
# main.py์ ํด๋นํ๋ ํ๋ก์ธ์ค๋ค์ PID๋ฅผ ์ฐพ์์ ๋ณ์์ ์ ์ฅ
pid1=$(pgrep -f "python3 main.py" | awk 'NR==1{print $1}')
pid2=$(pgrep -f "python3 main.py" | awk 'NR==2{print $1}')
pid3=$(pgrep -f "python3 main.py" | awk 'NR==3{print $1}')
pid4=$(pgrep -f "python3 main.py" | awk 'NR==4{print $1}')
# process kill
echo kill -9 $pid1
echo kill -9 $pid2
echo kill -9 $pid3
echo kill -9 $pid4
# ๋ค์ ์คํ
nohup python3 /home/test/db_update/main.py
# ..
# ..
# ..
# ์คํํ๋์ง ๋ ์ง ํ์ธ
echo $(date) > test.txt
์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ค๊ณ crontab์ ์ด์ฉํ์ฌ ์ค์ผ์ค๋ง์ ํด์ฃผ๊ธฐ๋ก ํ๋ค. crontab์ ํน์ ์๊ฐ์ ํน์ ํ์ผ์ ์คํ์ํจ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
$ crontab -e
๋ฆฌ๋ ์ค์์ ํ์ผ ๋ง๋๋ ๋ฐฉ๋ฒ์ด๋ ๋๊ฐ์ด ์์ฑํ๊ณ :wq๋ฅผ ํ๋ฉด ์ ์ฅ๋๋ค.
*ใใใใใใ*ใใใใใใ*ใใใใใใ*ใใใใใใ*
๋ถ(0-59)ใใ์๊ฐ(0-23)ใใ์ผ(1-31)ใใ์(1-12)ใใใ์์ผ(0-7)
5๊ฐ์ ์๋ฆฌ๋ฅผ ์ซ์๋ฅผ ์ง์ ํด์ฃผ๋ฉด ํด๋นํ๋ ์๊ฐ์ด ๋๋ค. ๋๋ ๋งค์ผ ์ค์ 3์์ ์ฌ์์์ด ๋๋ ๊ฑธ ์ํ๊ธฐ ๋๋ฌธ์
0 3 * * * /home/restart.sh
๋ผ๊ณ ์ ์ฅํ๊ณ :wq๋ก ๋น ์ ธ๋์ crontab์ ์ค์ ํด์ฃผ์๋ค. restart.sh๋ ์์ ์ ์ ์คํฌ๋ฆฝํธ์ ์ด๋ฆ์ด๋ค.
์ ์ ์์ง ํ์ธํ๋ ค๋ฉด crontab -l ๋ก ํ์ธํ๋ฉด ์ ์ ์๋ค.
crontab์ ์ ์คํํ๊ณ ์คํฌ๋ฆฝํธ๋ ์ ์คํ๋์ด ๋ ์ง๊ฐ ์ ๋๋ก ์ฐํ์๋๋ฐ ํ์ผ์ด ์ ๋๋ก ์คํ๋์ง ์์๋ค. ํ๋ก์ธ์ค ์์ด๋๋ ์ ๋ฐ์์ค๋๋ฐ kill ๋ช ๋ น์ด๊ฐ ์คํ๋์ง ์์๋ค.
echo kill -9 $pid1
echo kill -9 $pid2
echo kill -9 $pid3
echo kill -9 $pid4
result = $(kill -9 $(pid1))
result = $(kill -9 $(pid2))
result = $(kill -9 $(pid3))
result = $(kill -9 $(pid4))
์์ echo kill์ ์๋์ ๊ฐ์ด ๋ฐ๊พธ๋๊น ํ๋ก์ธ์ค๊ฐ ์ ์์ ์ผ๋ก ์ ์ฃฝ์๋ค. ์์ธ์ง๋ ๋์ค์ ์๊ฐ์ด ๋๋ฉด ๊ณต๋ถํด๋ณด๋ ค๊ณ ํ๋ค. ์์ shํ์ผ์ ์ฐพ์๊ฒ ์๋๋ผ ์ด๊ฒ์ ๊ฒ ํด๋ณด๋ค๊ฐ ๋ฐ๊ฒฌํ๊ฒ์ด๋ผ ๋ ์ฌ์ด๋ฐฉ๋ฒ์ด ์์ ์ ๋ ์๋ค.
๊บผ์ง๊ธด ํ๋๋ฐ ํ์ผ ์คํ์ด ๋์ง ์์๋ค. ์์ธ์ ๋ ์ฐพ์๋ณด๋ ํด๋ ์์น์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค.
---home
-- restart.sh
-- main
-- api_server
-- db_update
-- test
-- api_server
-- db_update
์ด๋ ๊ฒ ํ๋๊น ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋๊ณณ๊ณผ ํ์ผ์ด ์คํ๋๋ ๊ณณ์ ํด๋ ์์น๊ฐ ๋ค๋ฅธ๋ฐ, ํ์ผ์ ์คํํ๋ ํ์ผ ๋ด๋ถ์์ ๋ค๋ฅธ ํ์ผ๋ค์ ๋ถ๋ฅผ๋ ํ์ฌํด๋ ๊ธฐ์ค์ผ๋ก ์์ฑ์ ํด๋์ด ํ์ผ์ ์ ๋๋ก ์ฐพ์ง ๋ชปํ๋ค. ๊ทธ๋ ๋ค๊ณ ์ผ์ผํ ์ ๋ถ ์ ๋๊ฒฝ๋ก๋ก ๋ฐ๊พธ๊ธฐ์๋ ์๊ฐ์ด ์ค๋๊ฑธ๋ ค ๋ค๋ฅธ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋์๋ค.
<ํด๊ฒฐ>
node์์ ์ฌ์ฉํ๋ pm2๋ฅผ ์ฌ์ฉํ๋ค. pm2๋ฅผ ์ฌ์ฉํด์ python3์ ์ฝ๊ฒ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ก๋ค.
sudo apt install npm
npm install -g pm2
npm์ ์ค์นํ๊ณ npm์ผ๋ก pm2๋ฅผ ์ค์นํ๋ค.
๊ทธ๋ฆฌ๊ณ nohup์ผ๋ก ์คํ์ํจ ํ๋ก์ธ์ค๋ค์ ๋ชจ๋ ์ข ๋ฃ์์ผ์ฃผ๊ณ pm2๋ก ํ์ด์ฌ ํ์ผ๋ค์ ์คํ์์ผ์ฃผ์๋ค.
์คํ์ํค๋๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค.
pm2 start /home/main/main.py --name main_api --interpreter python3
pm2๋ก start๋ฅผ ํด์ฃผ๋๋ฐ ์ด๋ ํด๋์ ๋ค์ด์๋ ํ์ผ์ ์คํ์ํฌ์ง ์๋ ค์ฃผ๋ฉด ๋๊ณ , ๋๋ ๋ชจ๋ ํ์ผ์ด main.py๋ผ ์ด๋ฆ์ ๊ตฌ๋ถ์ง๊ธฐ ์ํด --name์ผ๋ก ์ด๋ฆ์ ์ง์ด์ฃผ์๋ค. ๊ทธ๋ฆฌ๊ณ python3ํ์ผ์ ์คํ์ํค๊ธฐ ์ํด --interpreter์ ๋ฃ์ด ์ฃผ์๋ค.
๊ทธ๋ค์ ์๊น ๋ง๋ restart.shํ์ผ์ ๋ณ๊ฒฝํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ์๊ฐ์ ๋ฐ๋ก crontab์์ ๋ณ๊ฒฝ์์ผ์ฃผ์ง ์์๋ค.
๋๋์ด ์ ๋๋ก ์๋ํ์๋ค. ์ ๋๋ก ์๋๋๋์ง ํ์ธํ๋ ค๋ฉด pm2 dash ๋ช ๋ น์ด๋ฅผ ์ณ๋ณด๋ฉด ๋๋ค.
์ ๋๋ก api ํต์ ์ ํ๊ณ ์๋ค. nohup์ผ๋ก ๊ด๋ฆฌํ๊ณ ์๋ค๊ฐ, node์ pm2๊น์ง ์ค๋ ๊ธธ์ด ๋๋ฌด ํ๋ํ๋ค๊ณ ์๊ฐํ๋ค. ์งง๊ฒ ์ผ์ง๋ง ๊ต์ฅํ ๋ง์ด ๊ณ ๋ฏผํ๊ณ ์ฐพ์๋ณด์์ ์์ด๋ฒ๋ฆฌ์ง ์๊ฒ ๊ธฐ๋กํด๋์ด์ผ๊ฒ ๋ค.
'๐ฟ๐๐ฉ๐๐๐๐จ๐ > ๐ผ๐๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
pm2 flag๋ก 5๋ถ๋ง๋ค ์ฌ์คํ์ํค๊ธฐ (0) | 2024.03.06 |
---|---|
AWS ํฌํธ(๋ฐฉํ๋ฒฝ) ์ฐ๊ฒฐ ์ค์ ํด๊ฒฐ [ufw ๋ฌธ์ ] (2) | 2023.10.17 |
๋ผ์ด๋ธ๋ฌ๋ฆฌ import ์์์ ๋ฐ๋ฅธ ์๋ฌ (0) | 2023.07.10 |
AWS EC2 ๋์คํฌ ์ฉ๋ ๋๋ฆฌ๊ธฐ (0) | 2023.07.07 |
AWS pymysql [ 2006, "MySQL server has gone away (ConnectionResetError(104, 'Connection reset by peer'))] ์๋ฌ ํด๊ฒฐ (0) | 2023.06.27 |
๋๊ธ