๐ ์ด ํฌ์คํ ์์๋
1. ์คํํ์ผ ๋ง๋๋ ๋ฐฉ๋ฒ
2. ssh, scp๋ฅผ ํ์ฉํ์ฌ ํ์ผ ์ ๋ฐ์ดํธ
์์ 2๊ฐ์ง ๋ด์ฉ์ ๋ฐฐ์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
< ๋ณธ๋ฌธ ์์ฝ >
1. ์คํํ์ผ ๋ง๋ค๊ธฐ
cd ~/.ssh
vi config
Host TEST
HostName 192.192.192.191
User ubuntu
IdentityFile ~/.ssh/{pemํค ์๋ ๊ฒฝ๋ก}
touch test.sh
chmod +x test.sh
2. SSH, SCP๋ฅผ ํ์ฉํ์ฌ ํ์ผ ์ ๋ฐ์ดํธ ํ๊ธฐ
# test.sh
# ํด๋น ํ๋ก์ ํธ ๊ฒฝ๋ก๋ก ์ ๊ทผํด์ && ๋น๋
cd {PATH} && npm run build || yarn build
# ์๊ฒฉ ์๋ฒ์ ์ ์ํ๊ธฐ
# 1. pemํค๋ฅผ ํ์ฉํ๊ธฐ
ssh TEST rm -rf ${REMOTE_PATH}/*
&& scp -r ${LOCAL_PATH}/build/*
ubuntu@TEST:${REMOTE_PATH}
# 2. sshpass๋ฅผ ์ฌ์ฉํ๊ธฐ
sshpass -p "password" ssh TEST rm -rf ${REMOTE_PATH}/*
&& sshpass -p "password" scp -r ${LOCAL_PATH}/build/*
ubuntu@TEST:${REMOTE_PATH}
< ์์ธํ >
Shell Script๋ก ์๊ฒฉ ์๋ฒ ์ ์ ๋ฐ ์ ๋ฐ์ดํธ ํ๊ธฐ
1. ์คํํ์ผ ๋ง๋๋ ๋ฐฉ๋ฒ
ํ์ผ ์์ฑ ๋ฐ ๊ถํ ๋ถ์ฌ
touch test.sh
chmod +x test.sh
๋ง๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํค๊ธฐ ์ํด์ ํ์ผ์ ์คํ ๊ถํ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค.
chmod +x test.sh
๋ฅผ ํตํด์ ๊ถํ์ ๋ถ์ฌํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ถํ์ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋๋ฐ ์์ธํ ๋ด์ฉ์ chomod์ ๋ด์ฉ์ ์ฐธ๊ณ ํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
์คํฌ๋ฆฝํธ ํ์ผ์ ์์ฑํ๊ณ ๊ถํ์ ๋ถ์ฌํ๋ฉด ./test.sh ๋๋ sh test.sh
๋ก ์คํฌ๋ฆฝํธ ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํ์ผ์ ์ฒซ ๋ผ์ธ์ #!/bin/bash
๋ก ์์ํฉ๋๋ค.
์ปค๋ ์ปจ๋ฒค์
์ผ๋ก์ ์ด๋ค ์ข
๋ฅ์ ์คํฌ๋ฆฝํธ์ธ์ง๋ฅผ ์๋ฆฌ๊ธฐ ์ํด์ ํ์ผ์ ์ฒซ ๋ผ์ธ์#!/bin/bash
๋ก ์์ํด์ผ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์๊ณ ์ถ์ผ์ ๋ถ์ Shebang์ ์ฐธ์กฐํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
2. SSH, SCP๋ฅผ ํ์ฉํ์ฌ ํ์ผ ์ ๋ฐ์ดํธ
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค ๋ณด๋ฉด ์๊ฒฉ ์๋ฒ์ ํ์ผ ์ ๋ฐ์ดํธํด์ค์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ์ ๋น๋ → ์๊ฒฉ ์๋ฒ ์ ์ → ํ์ผ ๋ฎ์ด ์์ฐ๊ธฐ ์์ ์ ๋ช ๋ น์ด ํ ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด์
๋ฐฐ์นํ์ผ์ ๋ง๋ค์ด์ ์ฒ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
1. ssh ์ ์ํ๊ธฐ
2. scp๋ก ํ์ผ ์ ๋ฐ์ดํธ ํ๊ธฐ
์์ ์์ ์ ์งํํ๊ธฐ ์ ์ ์์ ์ ํธ์์ฑ์ ์ํด์ ssh์์ config๋ฅผ ์์ ํ๊ณ ์งํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Mac OS๋ UNIX ๊ธฐ๋ฐ์ ์ด์์ฒด์ ๋ก OpenSSH(openssh-client, openssh-server)๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจํ๊ณ ์์ต๋๋ค. ๋ง์ฝ Mac OS๊ฐ ์๋๋ผ๋ฉด openssh๋ฅผ ์ค์นํ๊ณ ์งํํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
ls -al
๋ช
๋ น์ด๋ฅผ ์ณ๋ณด์๋ฉด
์ด๋ ๊ฒ .ssh
๋๋ ํฐ๋ฆฌ๊ฐ ์๋ ๊ฒ์ ํ์ธํ ์๊ฐ ์์ต๋๋ค.
.ssh
ํด๋์ ๋ค์ด๊ฐ์ config
ํ์ผ์ ์์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
cd ~/.ssh
vi config
#config
Host TEST
HostName 192.192.192.191
User Ubuntu
IdentityFile ~/.ssh/{pemํค ์๋ ๊ฒฝ๋ก}
์ด๋ ๊ฒ ์ธํ
์ ํด์ฃผ๊ณ ๋๋ฉด ssh TEST
ํตํด์ ํด๋น ํธ์คํธ์ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋๋ค.
๋ง์ฝ์ ํค ํ์ผ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ์๋ sshpass
๋ฅผ ์ฌ์ฉํ์ฌ์ ํธ๋ฆฌํ๊ฒ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
# ํด๋น ํ๋ก์ ํธ ๊ฒฝ๋ก๋ก ์ ๊ทผํด์ && ๋น๋
echo "Project Build Start"
cd {PATH} && npm run build || yarn build
# ์๊ฒฉ ์๋ฒ์ ์ ์ํ๊ธฐ
# 1. pemํค๋ฅผ ํ์ฉํ๊ธฐ
echo "Access Server using SSH"
ssh DAPL rm -rf ${REMOTE_PATH}/* \
&& echo "Update Start" \
&& scp -r ${LOCAL_PATH}/build/* admin@DAPL:${REMOTE_PATH} \
&& echo "Update End"
# 2. sshpass๋ฅผ ์ฌ์ฉํ๊ธฐ
sshpass -p "password" ssh DAPL rm -rf ${REMOTE_PATH}/* \
&& echo "Update Start" \
&& sshpass -p "password" scp -r ${LOCAL_PATH}/build/* admin@DAPL:${REMOTE_PATH} \
&& echo "Update End"
echo
๋ช
๋ น์ด๋ฅผ ํตํด์ ๊ฐ ๋จ๊ณ๊ฐ ์ ์งํ๋๊ณ ์๋์ง ํ์ธํ๋ ์ฝ๋๋ฅผ ๋ง๋ฌด๋ฆฌํ์๋ฉด ๋๊ฒ ์ต๋๋ค.