์ด์ ๋ Docker๋ฅผ ํตํด์ ์๋ฒ๋ฅผ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์์ง๋ง,
Docker๊ฐ ๋ฌด์์ ๊ฑด๋๋ฆด ์๋๋ ์๋ฌ์ ๋, ์๋ฒ๋ฅผ ์ง์ ๋ฐฐํฌํ๋ ํ๋ค์๋ ๊ณผ์ ์ ๊ธฐ๋กํ๋ ค๊ณ ํ๋ค.
๊ทธ๋๋ ๋๋ฆ ์ผ๋ จ์ ๊ณผ์ ๋ค์ ์คํตํ์ง ์๊ณ ์ง์ ์ผ์ผ์ด ๊ฒช์ด๋ณด์์ ์ฌ๋ฌ๋ชจ๋ก ๋์์ด ๋ง์ด ๋๋ ๊ฒ ๊ฐ๋ค.๐ฅน
1. AWS EC2 ํ๊ฒฝ ๊ตฌ์ถ
1.1 ์ธ์คํด์ค ๋ง๋ค๊ธฐ
aws์์ ์ธ์คํด์ค ํญ๋ชฉ์์ ์ธ์คํด์ค ์์์ ๋๋ฅด์.
๋ค๋ฅธ ํญ๋ชฉ์ ๋ค ๊ฑด๋ ๋ฐ๊ณ , ์ธ์คํด์ค ์ ํ์ ํ๋ฆฌ ํฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ t2.micro๋ก ์ค์
'์ ํค ํ์ด ์์ฑ'์ ๋๋ฌ์ ์๋ก์ด ํค ํ์ด๋ฅผ ์์ฑํด์ฃผ์๋ค.
์ํ๋ ์ด๋ฆ์ ์ค์ ํ๊ณ ๋ค์ด๋ก๋ ๋ฐ์์ง๋ ํค์ด๋ฆ.pem ์ ์ ๋๋ก ์ ์ถํ์ง ๋ง๊ณ , ์ญ์ ๋ ํ์ง ๋ง๊ณ ์ ๊ฐ๊ณ ์์.
PuTTY์ ์์ฉ์ด๋ผ๋ฉด ppk๋ก ๋ง๋ค์.
๋๋จธ์ง๋ ๊ทธ๋๋ก ๊ธฐ๋ณธ ์ค์ ์ ๋ฐ๋ผ๊ฐ๋ค.
์๋๋ SSH๋ฅผ ๋ด ์์ดํผ๋ง ํ์ฉํด์ ์ ๋๋ก ๋ ๋ณด์์ ๊ตฌ์ถํ๋ ๊ฒ์ด ์ข๋ค.
์น ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด HTTPS, HTTP ํธ๋ํฝ๋ ํ์ฉํด์ฃผ์.
ํ๋ฆฌํฐ์ด๋ 30GB๊น์ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์๋ชป ์ค์ ํ๋ฉด ์๊ธํญํ ๋ง์ผ๋ 8GB๋ง ํ๊ฒ ๋ค..
์ ์์ ์ผ๋ก ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
1.2 ํ๋ ฅ์ IP ํ ๋น
์ผ ์ชฝ์ ํ๋ ฅ์ IPํญ์ ๋ค์ด๊ฐ๋ค.
ํ๋ ฅ์ IP ์ฃผ์ ํ ๋น์ ๋๋ฌ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ฅ ํ ๋น์ ๋๋ฌ์ฃผ๋ฉด ๋๋ค.
์ฑ๊ณต์ ์ผ๋ก ํ๋ ฅ์ IP๋ฅผ ํ ๋น ๋ฐ์๋ค. ์ด์ ์ด IP๋ฅผ ๋ฐฉ๊ธ ์์ฑํ๋ ์ธ์คํด์ค์ ์ฐ๊ฒฐํด์ผ ํ๋ค.
ํ ๋น๋ IP์ฃผ์๋ฅผ ํด๋ฆญํด์ ์ธ๋ถ ์ค์ ์ ๋ค์ด๊ฐ๋ค.
์ค๋ฅธ์ชฝ ์๋จ์ ์๋ ํ๋ ฅ์ IP ์ฃผ์ ์ฐ๊ฒฐ์ ๋๋ฌ์ค๋ค.
์ธ์คํด์ค์์ ๋ฐฉ๊ธ ๋ง๋ค์๋ ์ธ์คํด์ค๋ฅผ ์ ํํ๊ณ ์ฐ๊ฒฐ์ ๋๋ฌ์ค๋ค.
์ฑ๊ณต์ ์ผ๋ก ํผ๋ธ๋ฆญ IP๊ฐ ์ฐ๊ฒฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
2. SSH ์ ์ ํ๊ฒฝ ๊ตฌ์ถ
2.1 configํ์ผ ์ค์
ํฐ๋ฏธ๋์ ์ผ์ .ssh ํด๋๋ก ์ด๋ํ๋ค.
$ vim config
๋ช ๋ น์ด๋ฅผ ํตํด configํ์ผ์ ๋ง๋ค์ด ์ค๋ค.
~/ssh/config
Host test
HostName IP์ฃผ์
User ec2-user
IdentityFile ํค ๊ฒฝ๋ก
๋ฅผ ์์ฑํด์ ssh์ ์์ ์๋ํํด์ค๋ค.
$ ssh ์๋ฒ์ด๋ฆ
์ ํตํด ssh์ ์์ ํด์ค๋ค.
Are you sure you want to continue connecting (yes/no/[fingerprint])? ๊ฐ ๋์ค๋ฉด
yes๋ฅผ ์
๋ ฅํ๋ฉด ๋๋ค.
๊ทธ๋ผ ์ด๋ ๊ฒ ๋์ค๋๋ฐ, ํค์ ๊ถํ์ด ์์ด์ ๊ทธ๋ ๋ค.
2.2 ํค ๊ถํ ์ค์
ํฐ๋ฏธ๋์์ ํค๊ฐ ์๋ ๊ฒฝ๋ก๋ก ๊ฐ์ค๋ค.
$ chmod 600 ํค์ ๊ฒฝ๋ก
ํด๋นํ๋ ํค์ 600๊ถํ์ ์ฃผ๋ฉด ๋๋ค.
๋ค์ ssh ์ ์์ ์๋ํด๋ณด์๋ค.
์ฑ๊ณต์ ์ผ๋ก ์๋ฒ์ ์ ์์ ์๋ฃํ๋ค.
3. Spring ํ๋ก์ ํธ ๊ตฌ์ถ
๊ฐ์ด๋ก ์คํ๋ง ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด์.
https://start.spring.io/
ํ ์คํธ์ฉ์ผ๋ก ๊ฐ์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค.
๋ฏธ๋ฆฌ 80ํฌํธ๋ก ์ค์ ํด ์ฃผ์๋ค.
ํ์ด์ง ์ ์ ์๋ ํ์ธ
ํด๋น ํ๋ก์ ํธ๋ฅผ ๊นํ๋ธ์ ๋ฐฐํฌํ๋ค.
์ด์ ์๋ฒ์๋ค ๋ฐฐํฌํด๋ณด์.
4. ์๋ฒ ํ๋ก์ ํธ ๋ฐฐํฌ
4. 1 Java ๋ค์ด๋ก๋
$ sudo yum install java
yum์ ํตํด java๋ฅผ ์ฝ๊ฒ ๋ค์ด๋ก๋ ํ ์ ์๋ค.
ํ์ง๋ง, ์ํ๋ java๋ฒ์ ์ ๊ฐ์ ธ์์ ์๋ฒ์ ์ค์นํ๋ ๊ณผ์ ์ ๋ด์ผ๋ ค๊ณ ํ๋ค.
https://jdk.java.net/
์ฌ๊ธฐ์ ํด๋นํ๋ Java ๋ฒ์ ์ ๋ค์ด๋ฐ์.
$ cd /usr/lib
$ wget jdk๋งํฌ
์์ถ ํ๊ธฐ
$ tar -zxvf ์์ถํ์ผ
์ ์ค์น๋์๋ ํ์ธ
$ /usr/lib/jdk-์๋ฐ๋ฒ์ /bin/java -version
java 19๊ฐ ์ ์ค์น๋์๋ค.
4.2 ํ๊ฒฝ๋ณ์ ๋ฑ๋ก
$ vi /etc/profile
profile ์์ ์ ๋ค์ด๊ฐ์, Shift + G ๋ฅผ ๋๋ฌ ๋งจ ์๋ซ ์ค์ ๋ค์ด๊ฐ์, ๋ค์์ ์์ฑํ๋ค.
export JAVA_HOME=/usr/lib/jdk-์๋ฐ ๋ฒ์
์ ์ฅํ๊ณ ๋์์ ๋ค์์ ์คํํด์ค๋ค.
$ source /etc/profile
ํ๊ฒฝ๋ณ์ ๋ฑ๋ก์ด ์๋ฃ๋๋ค.
$ echo $JAVA_HOME
์ ์ ๋ ฅํด ํ๊ฒฝ๋ณ์ ๋ฑ๋ก์ด ์ ๋์๋์ง ํ์ธํด์ค๋ค.
4.3 ๋ณ์นญ ๋ฑ๋ก
๋ค์์ Alias (๋ณ์นญ)๋ฑ๋ก์ ํด์ค๋ค.
$ vi /etc/bashrc
๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฅ ์๋ซ ์ค์ ๋ ์ค์ ์ถ๊ฐํด์ค๋ค.
alias java="/usr/lib/jdk-19.0.2/bin/java"
alias javac="/usr/lib/jdk-19.0.2/bin/javac"
$ source /etc/bashrc
์์ ํ ํ์ผ์ ์ ์ฅํด์ค๋ค.
java ๋ช
๋ น์ด๊ฐ ์ ์๋ํ๋ค.
5. gradle ๋ค์ด๋ก๋
๋ค์์ gradle์ ์ค์นํด๋ณด์.
gradle ๋ค์ด๋ก๋
https://services.gradle.org/distributions-snapshots/
์ฌ๊ธฐ์ ์ํ๋ gradle ๋ฒ์ ์ wget์ ํตํด์ ๋ค์ด๋ก๋ ํ๋ค.
wget https://services.gradle.org/distributions/gradle-5.0-bin.zip -P /tmp
์์ถ ํ๊ธฐ
$ sudo unzip -d /opt/gradle /tmp/gradle-5.0-bin.zip
์ถ์ถ ํ์ธ
$ ls /opt/gradle/gradle-5.0
ํ๊ฒฝ๋ณ์ ์ค์
$ sudo nano /etc/profile.d/gradle.sh
๋ค์ ๋ถ์ฌ๋ฃ๊ธฐ
# /etc/profile.d/gradle.sh
export GRADLE_HOME=/opt/gradle/gradle-5.0
export PATH=${GRADLE_HOME}/bin:${PATH}
์คํฌ๋ฆฝํธ ์คํ ๊ถํ ์ค์
$ sudo chmod +x /etc/profile.d/gradle.sh
ํ๊ฒฝ๋ณ์ ๋ก๋
$ source /etc/profile.d/gradle.sh
์ค์น ํ์ธ
$ gradle -v
Gradle ์ค์น ์๋ฃ!
6. git ์ค์น
์ด์ git์ ์ค์นํด์ ๋ด ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ธ์๋ณด์.
$ sudo yum install git
๊ฐ๋จํ๊ฒ yum์ผ๋ก ๋ค์ด๋ก๋ ํ์.
git ์ค์น ์๋ฃ.
์ด์ ๋ด ํ๋ก์ ํธ๋ฅผ git clone์ ํตํด์ ๊ฐ์ ธ์ค์.
7. ํ๋ก์ ํธ ๋น๋
๋จผ์ clone์ ํตํด ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ธ์๋ค.
ํ๋ก์ ํธ ํด๋์์ gradle ๋น๋๋ฅผ ์์ผ์คฌ๋ค.
- -x test ์ต์ : test๋ฅผ ์ ์ธํ๊ณ ๋น๋
8. ์๋ฒ ๋ฐฐํฌ
๋น๋ ํ์
์ด์ /build/libs ํด๋์ ์๋ ์ค๋
์ท์ ์คํ์์ผ์ค๋ค.
$ sudo nohup java -jar -Dspring.profiles.active=prod build/libs/demo-0.0.1-SNAPSHOT.jar &
nohup -> ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ์ค ๋ก๊ทธ ์ถ์ถ
& -> ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ
ํผ๋ธ๋ฆญ IP๋ฅผ ํตํด ์ ์์ ํ์ธ๋๋ค.
9. ๋๋ฉ์ธ ์ฐ๊ฒฐ
๊ฐ๋น์ https://www.gabia.com/ ์์ ๋๋ฉ์ธ์ ๊ตฌ์ ํ๋ค.
๋๋ฉ์ธ ๊ด๋ฆฌ ํ์ด์ง๋ก ๋ค์ด๊ฐ์, DNS ์ค์ ์ ํด์ค๋ค.
ํด๋น ๋๋ฉ์ธ์ ๋ ์ฝ๋ ์์ ์ ๋๋ฌ์ค๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ ์ฝ๋๋ฅผ ์ค์ ํด์ค๋ค.
@ : ์์ www๋ฅผ ๋ถ์ด์ง ์์๋ ์ ์ํ ์ ์๊ฒ ํด์ค๋ค. (dongpage.shop์ผ๋ก ์ ์ํ ๋)
www : ์์ www๋ฅผ ๋ถ์ผ ๋ ์ ์ํ๊ฒ ํด์ค๋ค.
์ด๋ ๊ฒ ์ค์ ํด์ฃผ๋ฉด, ๋๋ฉ์ธ ์ค์ ์ด ์๋ฃ๋๋ค.
์์ง https์ค์ ์ด ๋์ง ์์์ง๋ง, ๋๋ฉ์ธ์ ํตํด ์ ์ํ ์ ์๋ค.
10. SSL ์ค์
์ด์ ๋ด ํ์ด์ง์ SSL์ธ์ฆ์๋ฅผ ์ค์นํ์ฌ, ์์ ํ๊ฒ ๋ณดํธํ ์ฐจ๋ก์ด๋ค.
SSL์ธ์ฆ์๋ฅผ ์ค์นํ๋ฉด, ์๋ฒ ๊ฐ์ ํต์ ์ ์ํธํ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ํต์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก์ฑ๋๋ผ๋, ์ด๋ค ๊ฐ์ ์ฃผ๊ณ ๋ฐ์๋์ง ์ ์ ์๋ค. ๊ทธ๋ ๋ค๊ณ ์๋ฒ๊ฐ ์์ ํ ๊ฒ์ ์๋์ ์ฃผ์ํ์.
10.1 ์ธ์ฆ์ ๋ฐ๊ธ
ZeroSSL์ด๋ผ๋ ์ฌ์ดํธ์์ SSL์ธ์ฆ์๋ฅผ ๋ฐ์ ๊ฒ์ด๋ค.
New Certificate๋ฅผ ๋๋ฌ์ค๋ค.
๋ด ๋๋ฉ์ธ์ ์
๋ ฅํ๊ณ , Next Step์ ๋๋ฌ์ค๋ค.
๋ฌด๋ฃ SSL์ธ 90์ผ์ ํ ์ธ์ฆ์๋ฅผ ๋๋ฌ์ค๋ค.
Auto Generate๋ฅผ ์ ํํ๊ณ ๋์ด๊ฐ๋ค.
Free Plan์ด ์ ํ๋์ด ์๋ ๊ฒ์ ํ์ธํ๊ณ ๋์ด๊ฐ๋ค.
์ด์ ์ด ๋๋ฉ์ธ์ด ๋ด ๋๋ฉ์ธ์ธ์ง๋ฅผ ํ์ธํ ์๊ฐ์ด๋ค.
DNS ์ค์ ์ ํตํด์ ์ธ์ฆ์ ํ๊ฒ ๋ค.
๊ฐ๋น์์์ CNAME๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋๋ฐ,
Name ํญ๋ชฉ์, ๋ด ๋๋ฉ์ธ ์์ ์๋ ๋ด์ฉ์ ํธ์คํธ ์ด๋ฆ์
Point To ๋ ๊ฐ๋น์ ๋๋ฉ์ธ ์ ๊ฐ/์์น์ ๋ฃ๋๋ค.
*๋งจ ๋ค์ . ์ ์ถ๊ฐ๋ก ๋ถ์ฌ์ผํ๋ค.
์ค์ ์ ์ ์ฉํ๊ณ Veryfiy Domain์ ๋๋ฅด๋ฉด ์ธ์ฆ์ด ์๋ฃ๋๋ค.
10.2 keystore
์ด์ Server Type์ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ๊ฒ์ด๋ฏ๋ก, ๋ด์ฅ ์น์๋ฒ์ธ Tomcat์ ์ ํํ๊ณ Download Certificate๋ฅผ ๋ฐ์์ค๋ค.
์์ถ์ ํ๋ฉด ์ธ ๊ฐ์ง ํ์ผ์ ๋ฐ์ ์ ์๋ค.
์ด์ ์๋ฒ์ SSL ์ค์ ์ ์ ์ฉ์ํค๊ธฐ ์ ์,
์์์ ๋ฐ์ ์ธ ํ์ผ์ ์ด์ฉํ์ฌ keystore PKCS ๋ง๋ค์ด ์ฃผ์ด์ผ ํ๋ค.
๋จผ์ openssl์ ๋ค์ด๋ฐ์์ผ ํ๋ค.
$ brew install openssl
๋งฅ์ brew๊ฐ ์ค์น๋์ด ์๋ค๋ฉด ์ ๋ช ๋ น์ด๋ก openssl์ ์ฝ๊ฒ ์ค์นํ ์ ์๋ค.
$ openssl pkcs12 -export \
-name demo.test.me \
-in ./certificate.crt \
-CAfile ./ca_bundle.crt \
-inkey ./private.key \
-out ./test.p12
์ ๋ช ๋ น์ด๋ก keystore์ ๋ง๋ค์ด์ค๋ค.
๊ฐ ์ธ๊ฐ์ง ํ์ผ์ Input์ผ๋ก ๋ฃ์ผ๋ฉด, ๊ฒฐ๊ณผ๋ฌผ๋ก p12 ํคํ์ผ์ด ์๊ธด๋ค.
*๊ถํ์ด ๋งํ๋ฉด ์์ sudo๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
์ํ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๋ค. (2๋ฒ) <- ๋น๋ฐ๋ฒํธ๋ฅผ ๊ธฐ์ตํ๊ณ ์์ด์ผ ํ๋ค!!
10.3 ์๋ฒ ์ ์ฉ(yml)
์ด์ ์๋ฒ ํ๋ก์ ํธ ์ค์ ํ์ผ(application)์์ ์ค์ ํด์ฃผ์.
server:
port: 443
ssl:
enabled: true
enabled-protocols:
- TLSv1.1
- TLSv1.2
key-store: "/etc/pki/tls/certs/test/test.p12"
key-store-password: "password"
key-store-type: "PKCS12"
์ด์ 443(https)๋ก ์ด๊ณ , ์๋์ฒ๋ผ ์ค์ ํด์ค๋ค.
๊ฐ ์ํฉ์ ๋ง๊ฒ ๊ฒฝ๋ก์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
์ด์ ์๋ฒ๋ฅผ ๋ค์ ๋น๋ํ๊ณ , ์คํํ๋ฉด
443ํฌํธ๋ก ์ฑ๊ณต์ ์ผ๋ก ์ด๋ฆฌ๊ณ
์ธ์ฆ์ ์ค์ ์ด ์๋ฃ๋๋ค.
'BackEnd > Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Apache JMeter๋ก NGNIX์ ๋ก๋๋ฐธ๋ฐ์ฑ ์ฑ๋ฅ ํ ์คํธ (0) | 2023.09.02 |
---|---|
[NGNIX] ์๋ฒ SSL ์ค์ (0) | 2023.09.02 |
[SLASH23] ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ (0) | 2023.09.02 |
[SLASH 23] PinPoint๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ์ฐ์ถ์ ํ๊ธฐ (0) | 2023.09.02 |
CORS (0) | 2023.09.02 |