๋ธ๋ก๊ทธ ์ฎ๊ฒผ์ต๋๋ค! ๐ก integer.blog
ํ์ฌ ๊ณ ๊ฐ์ผํฐ์ฉ ์นด์นด์คํก ์ฑ๋ด์ ๋ง๋ค์ด AWS EC2 ์๋ฒ์ ๋ฐฐํฌํ๊ธฐ ์ํด
๋ฐ์ฌ์ฑ๋ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉฐ ์ค์ตํ ๋ด์ฉ
๋ชฉ์ฐจ
1. AWS EC2 ์ธ์คํด์ค ์์ฑ
2. ์์ฑํ ์ธ์คํด์ค(์๋ฒ)์ ์ ์
3. Java ์ค์น
4. Symbolic Link ์ถ๊ฐ
5. ํ๊ฒฝ๋ณ์์ PATH ์ค์
6. Git ์ค์น ๋ฐ ํ๋ก์ ํธ Clone
7. ๋น๋ ๋ฐ ๋ฐฐํฌ
8. ์์ ๋ ์์ค์ฝ๋ ๋ฐ์
9. ์์คํฌ๋ฆฝํธ๋ก ๋ฐฐํฌ ์๋ํ
1. AWS EC2 ์ธ์คํด์ค ์์ฑ
AWS ๊ณต์ ํํ์ด์ง์ ์ค๋ช ์ด ์ ์ผ ๊น๋ํ๋ค.
2. ์์ฑํ ์ธ์คํด์ค(์๋ฒ)์ ์ ์
- ํผ๋ธ๋ฆญ DNS๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ฐ๊ฒฐ
$ ssh -i "chatbot-kakao.pem" ubuntu@ec2~~~.ap-northeast-2.compute.amazonaws.com
- Private Key ํ์ผ์ด ๊ณต๊ฐ์ ์ผ๋ก ํ์๋์ด ์์ ๊ฒฝ์ฐ
$ chmod 400 chatbot-kakao.pem
๋ช ๋ น ์ ๋ ฅ $ sudo locale-gen ko_KR.UTF-8
ํน์$ sudo apt-get install language-pack-ko
๋ช ๋ น์ผ๋ก ์ธ์ฝ๋ฉ
3. Java ์ค์น
- apt-get์ผ๋ก ์ค์น
$ apt-get install openjdk-8-jre-headless
- wget์ผ๋ก ์ค์นํ ๊ฒฝ์ฐ
$ wget
๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ํน์ ์ฃผ์์ ์๋ ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋- ๊ตฌ๊ธ์ jdk download๋ก ๊ฒ์ํ์ฌ ์ค๋ผํด์ ๋ค์ด๊ฐ ํ, linux x64 ๋ค์ด๋ก๋ ํ์ผ์ ๋ง์ฐ์ค ์ฐํด๋ฆญ์ผ๋ก
๋งํฌ์ฃผ์๋ณต์ฌ
$ wget ๋ณต์ฌํ ๋งํฌ์ฃผ์
๋ช ๋ น ์ ๋ ฅ- ํ์ง๋ง, ์ค๋ผํด ๋ค์ด๋ก๋ ํ์ด์ง์์ ์ฝ๊ด๋์ํ ๊ฒ์ ์ ์ฉํ ์ ์์์ผ๋ฏ๋ก ๋ค์ด๋ก๋๊ฐ ์ ๋๋ก ๋์ง ์๋๋ค.
$ rm jdk~~~~~
๋ช ๋ น์ผ๋ก jdk ํ์ผ ์ญ์ ๋ฐls -al
๋ช ๋ น์ผ๋ก ์ญ์ ํ์ธ$ wget --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
- ์ค์น์๋ฃ ํ
$ ls -al
๋ก ์ค์น ํ์ธ $ tar -xvf jdk ~~~ tar.gz
๋ช ๋ น์ผ๋ก ์์ถ ํด์ /jdk/bin
๊ฒฝ๋ก๋ก ์ด๋ํ์ฌ./java -version
์ผ๋ก ์๋ฐ ๋ฒ์ ํ์ธ- ์๋ฌด ์์น์์๋ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์ ๊ทผ์ด ์๋๋ฏ๋ก
์ฌ๋ณผ๋ง ๋งํฌ ์ค์
๊ณผํ๊ฒฝ ๋ณ์ ์ค์
์ ํด์ผ ํ๋ค.
4. Symbolic Link ์ถ๊ฐ
$ ln -s jdk~~/ java(๋ณ์นญ)
$ cd java
๋ช ๋ น์ผ๋ก ๊ฒฝ๋ก์ ์ ๊ทผ ๊ฐ๋ฅ
5. ํ๊ฒฝ๋ณ์์ PATH ์ค์
$ cd ~
$ vi .bash_profile
PATH=$PATH:~/java/bin
์์ฑํ๊ณ esc - :wq$ source .bash_profile
๋ช ๋ น์ผ๋ก ํ๊ฒฝ๋ณ์ ํ์ผ ๋ฆฌ๋ก๋- java -version
6. Git ์ค์น ๋ฐ ํ๋ก์ ํธ Clone
$ git --version
์ผ๋ก git ์ค์น ํ์ธ- ์ค์น ์๋์ด์์ ๊ฒฝ์ฐ,
$ sudo apt-get update
ํ์$ sudo apt-get install git
๋ช ๋ น์ผ๋ก git ์ค์น $ git clone ์ ์ฅ์ ์ฃผ์
๋ช ๋ น์ผ๋ก clone
7. ๋น๋ ๋ฐ ๋ฐฐํฌ
$ ./mvnw clean package
= ๊ธฐ์กด์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ ๋ ค๋ฒ๋ฆฌ๊ณ (clean) ๋ฐฐํฌํ ์ ์๋ ์ฝ๋๋ก ๋ค์ ๋น๋ํ๋(package) ๋ช ๋ น ์ ๋ ฅ- ๋ง์ฝ ๊ฐ ๋ฐฐํฌ ๋ฒ์ ์ ๋จ๊ธฐ๊ณ ์ถ๋ค๋ฉด clean ์์ด
$ ./mvnw package
- ๋ง์ฝ ๊ฐ ๋ฐฐํฌ ๋ฒ์ ์ ๋จ๊ธฐ๊ณ ์ถ๋ค๋ฉด clean ์์ด
- ๋น๋์ ๊ฒฐ๊ณผ๋ฌผ์ target ๋๋ ํ ๋ฆฌ์ ์์นํ๋ฏ๋ก
$ cd target
์ผ๋ก ์ด๋ํ์ฌ$ nohup java -jar ChatBotTest-0.0.1-SNAPSHOT.jar &
๋ช ๋ น์ผ๋ก ์๋ฒ์ ๋์ฐ๊ธฐ- ์๋ฒ์ ๋์ฐ๋ ๋ฐ์ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด
$ java -Djava.security.egd=file:/dev/./urandom -jar ChatBotTest-0.0.1-SNAPSHOT.jar
- ํฐ๋ฏธ๋์ ๋ถ๋ฆฌํ์ง ์์ผ๋ฉด ์๋ฒ์ ์ฌ๋ฆฌ๊ณ ๋์
Ctrl+c
๋ก ๋ช ๋ น์ด๋ฅผ ์์ฑํ๊ฒ๋๋ฉด ์๋ฒ๊ฐ ๊ฐ์ด ์ข ๋ฃ๋๋ฏ๋ก ํฐ๋ฏธ๋์ ๋ถ๋ฆฌํด์ ์๋ฒ์ ์ฌ๋ ค์ผํ๋ค. ์ด๋ฅผ ์ํด java -jar ๋ช ๋ น์ ๋ง์ง๋ง์&
๋ฅผ ๋ฃ์ด์ ํฐ๋ฏธ๋์ ๋ถ๋ฆฌํด์ผํ๋ค. nohup
๋ช ๋ น์ ํ๋ ์ด์ ์ฝ์ด๋ณด๊ธฐ.
- ์๋ฒ์ ๋์ฐ๋ ๋ฐ์ ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๋ฉด
$ nohup java -jar ChatBotTest-0.0.1-SNAPSHOT.jar &
๋ช ๋ น์ผ๋ก ์คํ ํCtrl+c
๋ก ํฐ๋ฏธ๋์์ ๋น ์ ธ๋์์$ curl http://localhost:8080
๋ช ๋ น์ผ๋ก ํ๋ฉด์ด ๋จ๋์ง ํ์ธ- ๋ฐฐํฌํ ์ฝ๋ ํ์ธ
- 8080ํฌํธ๋ ๋ณดํต ๋ฐฉํ๋ฒฝ์ ๋งํ์๊ธฐ ๋๋ฌธ์ EC2์ ๋ณด์๊ทธ๋ฃน์์ ์ฌ์ฉ์TCP 8080 ์์น๋ฌด๊ด์ ์ ํํ๊ณ ์ถ๊ฐํ๋ค.
- ์ธ์คํด์ค์ ํผ๋ธ๋ฆญip:8080 ํน์ ํผ๋ธ๋ฆญDNS:8080 ์ ์ฃผ์๋ก ์ ์ํ๋ฉด ์ ์์ด ๋๋ค.
8. ์์ ๋ ์์ค์ฝ๋ ๋ฐ์
- ์์ ๋ ์ฝ๋ push & pull
Ctrl+d
๋ก ssh์์ ๋ฒ์ด๋์ ๋ก์ปฌ์์ ์๋ก ์์ ํ ๋ด์ฉ์ github์ ํธ์- ๋ค์ ssh๋ก ์ฐ๋ถํฌ์ ์ ์ํ์ฌ ํ๋ก์ ํธ๊ฐ ์๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ
$ git pull
- ํ๋ก์ธ์ค ์ข
๋ฃ ๋ฐ ์๋ฒ ์ฌ์์
- ์๋ก์ด ์ถ๊ฐ๋ ๋ด์ฉ์ ์ ์ฉํ๊ธฐ ์ํด ์๋ฒ๋ฅผ ์ฌ์์ํด์ผ ํ๋ค. ์ฆ,
- ํ์ฌ ๋ ์๋ ์๋ฒ๋ฅผ ๋ฉ์ถฐ์ผ ํ๋ฏ๋ก ํ์ฌ ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ์
$ ps -ef | grep java
๋ช ๋ น์ผ๋ก ํ์ธํ๊ฑฐ๋, $ jps
๋ช ๋ น์ผ๋ก ์คํ๋๊ณ ์๋ ์๋ฐ ํ๋ก๊ทธ๋จ๊ณผ PID๋ง ํ์ธํ์ฌ- ๋ฐฐํฌํ๋ jarํ์ผ์ ํ๋ก์ธ์ค์์ด๋(PID, ์ฒซ๋ฒ์งธ ์ซ์)๋ฅผ
$ kill -9 ํ๋ก์ธ์ค์์ด๋
๋ก ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ฑฐ๋ $ pkill -f 'ํ๋ก๊ทธ๋จ๋ช '
์ผ๋ก ํ๋ก์ธ์ค ์ข ๋ฃ ๊ฐ๋ฅ$ jps
๋ก ํ๋ก์ธ์ค ์ข ๋ฃ ํ์ธ
- ๋น๋ ๋ฐ ๋ฐฐํฌ
$ ./mvnw clean package
๋ช ๋ น์ผ๋ก ์์ ๋ ์์ค์ฝ๋๋ฅผ ๋น๋ํ๊ณ ,- target ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ
$ nohup java -jar ChatBotTest-0.0.1-SNAPSHOT.jar &
๋ช ๋ น์ผ๋ก ๋ฐฐํฌ
9. ์ ์คํฌ๋ฆฝํธ๋ก ๋ฐฐํฌ ์๋ํํ๊ธฐ
http://jojoldu.tistory.com/263?category=635883 ์ฐธ๊ณ ํ์ฌ Gradle์ด ์๋ Maven ๋ฒ์ ์ผ๋ก ์์ฑํจ
EC2 ์ธ์คํด์ค์
/home/ubuntu
๋๋ ํ ๋ฆฌ์ `deploy.sh’ ํ์ผ ์์ฑ$ nano deploy.sh
deploy.sh
ํ์ผ์ ๋ฐฐํฌ ์๋ํ๋ฅผ ์ํ ์์คํฌ๋ฆฝํธ ์์ฑ#!/bin/bash REPOSITORY=/home/ubuntu/Chat-Bot-Kakao echo "> ํ๋ก์ ํธ ์ ์ฅ์๋ก ์ด๋!" cd $REPOSITORY echo "> Git Pull !!!" git pull echo "> ์คํ์ค์ธ ํ๋ก์ธ์ค ํ์ธ!" CURRENT_PID=$(pgrep -f ChatBotTest) echo "> ์คํ์ค์ธ ํ๋ก์ธ์ค ์์ด๋ : $CURRENT_PID" if [ -z $CURRENT_PID ]; then echo "> ํ์ฌ ์คํ์ค์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์ผ๋ฏ๋ก ์ข ๋ฃํ์ง ์์ต๋๋ค!" else echo "> ํ์ฌ ์คํ์ค์ธ ์ดํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ! Kill -9 $CURRENT_PID" kill -9 $CURRENT_PID sleep 5 fi echo "> ํ๋ก์ ํธ Build ์์! (์ด์ ๋ฐฐํฌ ๋ฒ์ ์ญ์ ์ํจ)" ./mvnw package echo "> ์ ๋ฐฐํฌ ๋ฒ์ ์ ์ด๋ฆ์ ??" JAR_NAME=$(ls $REPOSITORY/target |grep 'ChatBotTest' |grep -v 'original' | tail -n 1) echo "> JAR Name: $JAR_NAME" echo "> ์ ์ดํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ !!!" nohup java -jar $REPOSITORY/target/$JAR_NAME &
./deploy.sh ์คํ ๊ถํ ์ค์
$ chmod 755 ./deploy.sh