Search

가상 μ„œλ²„ ν˜ΈμŠ€νŒ…

μˆœμ„œ

1.
νšŒμ›κ°€μž… & 둜그인
2.
μ„œλΉ„μŠ€ μ‹ μ²­
a.
μ„œλ²„ν˜ΈμŠ€νŒ…
i.
κ°€μƒμ„œλ²„ν˜ΈμŠ€νŒ…
1.
운영체제 (λ¦¬λˆ…μŠ€/μœˆλ„μš°)
2.
μš”κΈˆμ œ
μš”κΈˆ λ‚΄μš©
3.
결제
4.
OS μ„€μΉ˜ 쀑
5.
μ„€μΉ˜ μ™„λ£Œ
3.
개발 ν™˜κ²½
a.
SSH 접속
i.
VSCODE μ‹€ν–‰
ii.
Remote Development ν™•μž₯ μ„€μΉ˜
iii.
SSH 접속
b.
μ„€μΉ˜
i.
Node μ„€μΉ˜
ii.
Nginx μ„€μΉ˜
iii.
JDK μ„€μΉ˜
iv.
MySQL μ„€μΉ˜
4.
λΉŒλ“œ (Build)
a.
Spring ν”„λ‘œμ νŠΈ λΉŒλ“œ
b.
React ν”„λ‘œμ νŠΈ λΉŒλ“œ
5.
배포 (Deploy)
a.
Spring ν”„λ‘œμ νŠΈ 배포
b.
React ν”„λ‘œμ νŠΈ 배포
6.
μ‹€ν–‰ (Execution)
a.
λ°±μ—”λ“œ μ‹€ν–‰
b.
ν”„λ‘ νŠΈ μ‹€ν–‰
7.
도메인 등둝
a.
도메인 κ΅¬λ§€ν•˜κΈ°
b.
μ—°κ²°ν•˜κΈ°
c.
Nginx μ„€μ •
d.
SSL
8.
μ‚¬μ΄νŠΈ 접속

νšŒμ›κ°€μž… & 둜그인

μ„œλΉ„μŠ€ μ‹ μ²­

κ°€μƒμ„œλ²„ν˜ΈμŠ€νŒ…

1.
운영체제 (λ¦¬λˆ…μŠ€/μœˆλ„μš°)
2.
μš”κΈˆμ œ
a.
μΌλ°˜ν˜• 5,000원
b.
λΉ„μ¦ˆλ‹ˆμŠ€ 11,000원
c.
퍼슀트클래슀 16,500원
d.
μžμ΄μ–ΈνŠΈ 33,000원
e.
μžμ΄μ–ΈνŠΈν”ŒλŸ¬μŠ€ 55,000원
3.
μ‹ κ·œ 아이디 등둝
4.
결제

운영체제 (λ¦¬λˆ…μŠ€/μœˆλ„μš°) & μš”κΈˆμ œ

μ‹ κ·œ 아이디 등둝

결제

OS μ„€μΉ˜ 쀑

μ„€μΉ˜ μ™„λ£Œ

개발 ν™˜κ²½

1.
SSH 접속
a.
VSCODE μ‹€ν–‰
b.
Remote Development ν™•μž₯ μ„€μΉ˜
c.
SSH 접속
2.
μ„€μΉ˜
a.
Node μ„€μΉ˜
b.
Nginx μ„€μΉ˜
c.
JDK μ„€μΉ˜
d.
MySQL μ„€μΉ˜

SSH 접속

1.
VSCODE μ‹€ν–‰
2.
Remote Development ν™•μž₯ μ„€μΉ˜
3.
SSH 접속

VSCODE μ‹€ν–‰

Remote Development ν™•μž₯ μ„€μΉ˜

SSH 접속

1.
원격 SSH
2.
접속 정보 μž…λ ₯
3.
μ•”ν˜Έ μž…λ ₯
4.
폴더 μ—΄κΈ°
5.
경둜 μ§€μ •
6.
원격 μ—°κ²° λ‹«κΈ°
β€’
원격 SSH
β€’
접속 정보 μž…λ ₯
Host
XXX
"별칭(alias)" 역할을 ν•˜λŠ” μ‹λ³„μž
HostName
XXX.cafe24.com
IP λ˜λŠ” λŒ€ν‘œ 도메인
User
root
μ„œλΉ„μŠ€ μ‹ μ²­ μ‹œ μ§€μ •ν•œ κ΄€λ¦¬μž (κΈ°λ³Έ : root)
β€’
μ•”ν˜Έ μž…λ ₯
μ„œλΉ„μŠ€ μ‹ μ²­ μ‹œ μ§€μ •ν•œ κ΄€λ¦¬μž λΉ„λ°€λ²ˆν˜Έ
β€’
폴더 μ—΄κΈ°
β€’
경둜 μ§€μ •
β€’
원격 μ—°κ²° λ‹«κΈ° (λ‚˜μ€‘μ— μ’…λ£Œ ν•„μš” μ‹œ μ°Έκ³ )

μ„€μΉ˜

1.
Node μ„€μΉ˜
2.
Nginx μ„€μΉ˜
3.
JDK μ„€μΉ˜
4.
MySQL μ„€μΉ˜
β€’
Ubuntu 22.04 (LTS)
β€’
μ΅œμ‹  Node.js
β€’
μ΅œμ‹  Nginx
β€’
JDK 17
β€’
MySQL 8
β€’
터미널 μ—΄κΈ°

1. Node.js (μ΅œμ‹  LTS ꢌμž₯)

# Node.js μ„€μΉ˜ sudo apt-get install -y nodejs # npm μ„€μΉ˜ sudo apt install npm # 버전 확인 node -v npm -v
Bash
볡사

Node.js μ„€μΉ˜

sudo apt-get install -y nodejs
Bash
볡사

npm μ„€μΉ˜

sudo apt install npm
Bash
볡사

버전 확인

node -v
Bash
볡사
npm -v
Bash
볡사

2. Nginx (μ΅œμ‹ )

# μ €μž₯μ†Œ μ—…λ°μ΄νŠΈ sudo apt update # Nginx μ„€μΉ˜ sudo apt install -y nginx # μ„œλΉ„μŠ€ μ‹€ν–‰ 및 λΆ€νŒ… μ‹œ μžλ™ μ‹œμž‘ sudo systemctl enable nginx sudo systemctl start nginx # μƒνƒœ 확인 systemctl status nginx
Bash
볡사

μ €μž₯μ†Œ μ—…λ°μ΄νŠΈ

sudo apt update
Bash
볡사

Nginx μ„€μΉ˜

sudo apt install -y nginx
Bash
볡사

μ„œλΉ„μŠ€ μ‹€ν–‰ 및 λΆ€νŒ… μ‹œ μžλ™ μ‹œμž‘

sudo systemctl enable nginx
Bash
볡사
sudo systemctl start nginx
Bash
볡사

μƒνƒœ 확인

systemctl status nginx
Bash
볡사

3. JDK 17 (OpenJDK)

# OpenJDK 17 μ„€μΉ˜ sudo apt install -y openjdk-17-jdk # 버전 확인 java -version
Bash
볡사

OpenJDK 17 μ„€μΉ˜

sudo apt install -y openjdk-17-jdk
Bash
볡사

버전 확인

java -version
Bash
볡사

4. MySQL 8

# μ €μž₯μ†Œ μ—…λ°μ΄νŠΈ sudo apt update # MySQL μ„€μΉ˜ sudo apt install -y mysql-server # λ³΄μ•ˆ μ„€μ • (root λΉ„λ°€λ²ˆν˜Έ, 원격접속 λ“±) sudo mysql_secure_installation # μ„œλΉ„μŠ€ μ‹€ν–‰ 및 λΆ€νŒ… μ‹œ μžλ™ μ‹œμž‘ sudo systemctl enable mysql sudo systemctl start mysql # μƒνƒœ 확인 systemctl status mysql
Bash
볡사

μ €μž₯μ†Œ μ—…λ°μ΄νŠΈ

sudo apt update
Bash
볡사

MySQL μ„€μΉ˜

sudo apt install -y mysql-server
Bash
볡사

λ³΄μ•ˆ μ„€μ • (root λΉ„λ°€λ²ˆν˜Έ, 원격접속 λ“±)

sudo mysql_secure_installation
Bash
볡사
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component?
MySQL μ„œλ²„ λ³΄μ•ˆ μ„€μ • μ€‘μž…λ‹ˆλ‹€.
λΉ„λ°€λ²ˆν˜Έ 없이 MySQL에 접속 μ€‘μž…λ‹ˆλ‹€.
VALIDATE PASSWORD COMPONENTλŠ” λΉ„λ°€λ²ˆν˜Έλ₯Ό κ²€μ‚¬ν•˜κ³  λ³΄μ•ˆμ„ κ°•ν™”ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이 μ»΄ν¬λ„ŒνŠΈλŠ” λΉ„λ°€λ²ˆν˜Έ 강도λ₯Ό ν™•μΈν•˜λ©°, μΆ©λΆ„νžˆ μ•ˆμ „ν•œ λΉ„λ°€λ²ˆν˜Έλ§Œ μ„€μ •ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆλ‹€.
VALIDATE PASSWORD COMPONENTλ₯Ό μ„€μ •ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?
y
There are three levels of password validation policy:
LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
λΉ„λ°€λ²ˆν˜Έ 검증 μ •μ±…μ—λŠ” μ„Έ κ°€μ§€ μˆ˜μ€€μ΄ μžˆμŠ΅λ‹ˆλ‹€:
β€’
LOW : 길이 β‰₯ 8
β€’
MEDIUM : 길이 β‰₯ 8, 숫자 포함, λŒ€/μ†Œλ¬Έμž ν˜Όν•©, 특수 문자 포함
β€’
STRONG : 길이 β‰₯ 8, 숫자 포함, λŒ€/μ†Œλ¬Έμž ν˜Όν•©, 특수 문자 포함, 사전 파일 검사
μ„ νƒν•΄μ£Όμ„Έμš”:
0
Skipping password set for root as authentication with auth_socket is used by default. If you would like to use password authentication instead, this can be done with the "ALTER_USER" command. See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
기본적으둜 auth_socket 인증이 μ‚¬μš©λ˜λ―€λ‘œ root λΉ„λ°€λ²ˆν˜Έ 섀정은 κ±΄λ„ˆλœλ‹ˆλ‹€.
λΉ„λ°€λ²ˆν˜Έ 인증을 μ‚¬μš©ν•˜λ €λ©΄ "ALTER_USER" λͺ…λ Ήμ–΄λ‘œ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μžμ„Έν•œ λ‚΄μš©μ€ 곡식 λ¬Έμ„œ λ₯Ό μ°Έκ³ ν•˜μ„Έμš”.
기본적으둜 MySQL μ„€μΉ˜ μ‹œ 읡λͺ… μ‚¬μš©μž(anonymous user) κ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
이 계정을 μ‚¬μš©ν•˜λ©΄ 계정을 λ”°λ‘œ λ§Œλ“€μ§€ μ•Šμ•„λ„ λˆ„κ΅¬λ‚˜ MySQL에 λ‘œκ·ΈμΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이 섀정은 λ‹¨μˆœνžˆ ν…ŒμŠ€νŠΈ λͺ©μ κ³Ό μ„€μΉ˜ 편의λ₯Ό μœ„ν•΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.
운영 ν™˜κ²½μœΌλ‘œ μ΄μ „ν•˜κΈ° 전에 λ°˜λ“œμ‹œ 읡λͺ… μ‚¬μš©μžλ₯Ό μ œκ±°ν•΄μ•Ό ν•©λ‹ˆλ‹€.
n

auth_socket ν”ŒλŸ¬κ·ΈμΈ μ΄λž€?

MySQL 8μ—μ„œ 기본으둜 μ μš©λ˜λŠ” 인증 방식 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.
β€’
이름 κ·ΈλŒ€λ‘œ λ¦¬λˆ…μŠ€/μœ λ‹‰μŠ€ μ†ŒμΌ“ 인증을 μ‚¬μš©ν•©λ‹ˆλ‹€.
β€’
즉, MySQL λ‚΄λΆ€ 계정 λΉ„λ°€λ²ˆν˜Έλ₯Ό λ”°λ‘œ μ“°λŠ” 게 μ•„λ‹ˆλΌ,
운영체제(OS)의 둜그인 μ‚¬μš©μž 계정을 ν™•μΈν•΄μ„œ μΈμ¦ν•©λ‹ˆλ‹€.
Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network.
Disallow root login remotely?
보톡 root 계정은 'localhost'μ—μ„œλ§Œ 접속 κ°€λŠ₯ν•˜λ„λ‘ μ„€μ •ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
μ΄λ ‡κ²Œ ν•΄μ•Ό λ„€νŠΈμ›Œν¬λ₯Ό 톡해 λˆ„κ΅°κ°€κ°€ root λΉ„λ°€λ²ˆν˜Έλ₯Ό μΆ”μΈ‘ν•˜λŠ” 것을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
root κ³„μ •μ˜ 원격 접속을 κΈˆμ§€ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?
n
By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
Remove test database and access to it?
기본적으둜 MySQLμ—λŠ” **'test'**λΌλŠ” λ°μ΄ν„°λ² μ΄μŠ€κ°€ ν¬ν•¨λ˜μ–΄ 있으며, λˆ„κ΅¬λ‚˜ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이 μ—­μ‹œ ν…ŒμŠ€νŠΈ μš©λ„λ‘œλ§Œ μ œκ³΅λ˜λ―€λ‘œ, 운영 ν™˜κ²½μœΌλ‘œ μ΄μ „ν•˜κΈ° 전에 μ‚­μ œν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
test λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ ‘κ·Ό κΆŒν•œμ„ μ‚­μ œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?
n
Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
Reload privilege tables now?
κΆŒν•œ ν…Œμ΄λΈ”μ„ λ‹€μ‹œ λ‘œλ“œν•˜λ©΄ μ§€κΈˆκΉŒμ§€ μ μš©ν•œ λͺ¨λ“  λ³€κ²½ 사항이 μ¦‰μ‹œ λ°˜μ˜λ©λ‹ˆλ‹€.
μ§€κΈˆ κΆŒν•œ ν…Œμ΄λΈ”μ„ λ‹€μ‹œ λ‘œλ“œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?
y
Success. All done!
μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€.
λͺ¨λ“  μž‘μ—…μ΄ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€!

μ„œλΉ„μŠ€ μ‹€ν–‰ 및 λΆ€νŒ… μ‹œ μžλ™ μ‹œμž‘

sudo systemctl enable mysql
Bash
볡사
sudo systemctl start mysql
Bash
볡사

μƒνƒœ 확인

systemctl status mysql
Bash
볡사

κΈ°λ³Έ 계정 생성

username
user
password
12345678
β€’
root 계정 접속
mysql -u root -p
Bash
볡사
β€’
auth_socket λ°©μ‹μœΌλ‘œ μ—”ν„°λ§Œ λˆ„λ₯΄κ³  패슀
[μ—”ν„°]
Bash
볡사
β€’
계정 쑰회
SELECT user, host FROM mysql.user;
Bash
볡사
β€’
계정 생성
CREATE USER 'user'@'%' IDENTIFIED BY '12345678';
Bash
볡사
β€’
κΆŒν•œ λΆ€μ—¬
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
Bash
볡사
β€’
κΆŒν•œ 적용
FLUSH PRIVILEGES;
Bash
볡사
β€’
MySQL 접속 μ’…λ£Œ
Ctrl + Z
β€’
계정 접속
mysql -u user -p
Bash
볡사

κΈ°λ³Έ λ°μ΄ν„°λ² μ΄μŠ€ 생성

β€’
λ°μ΄ν„°λ² μ΄μŠ€(μŠ€ν‚€λ§ˆ) 생성 : krules
CREATE DATABASE krules CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
SQL
볡사
β€’
λ°μ΄ν„°λ² μ΄μŠ€ 확인
SHOW DATABASES;
SQL
볡사

μ΅œμ’… 버전 확인 λͺ…λ Ήμ–΄:

Node.js 버전 확인

node -v
Bash
볡사

NPM 버전 확인

npm -v
Bash
볡사

Nginx 버전 확인

nginx -v
Bash
볡사

Java 버전 확인

java -version
Bash
볡사

MySQL 버전 확인

mysql --version
Bash
볡사

λΉŒλ“œ (Build)

1.
Spring ν”„λ‘œμ νŠΈ λΉŒλ“œ
2.
React ν”„λ‘œμ νŠΈ λΉŒλ“œ

Spring ν”„λ‘œμ νŠΈ λΉŒλ“œ

1.
Gradle for Java ν™•μž₯ μ„€μΉ˜
2.
Build - bootWar

Gradle for Java ν™•μž₯ μ„€μΉ˜

Build - bootWar

./gradlew bootWar
Bash
볡사
λ˜λŠ” Gradle이 μ „μ—­μ μœΌλ‘œ μ„€μΉ˜λ˜μ–΄ μžˆλ‹€λ©΄:
gradle bootWar
Bash
볡사
ꢌμž₯ : Gradle for Java ν™•μž₯ GUI κΈ°λŠ₯ μ΄μš©ν•˜μ—¬ λΉŒλ“œ

React ν”„λ‘œμ νŠΈ λΉŒλ“œ

npm run build
Bash
볡사

배포 (Deploy)

1.
React ν”„λ‘œμ νŠΈ 배포
2.
Spring ν”„λ‘œμ νŠΈ 배포
πŸ“¦ /k-rules ┣ πŸ“ front ┃ ┣ πŸ“ build (dist) ┃ ┃ ┣ πŸ“ assets ┃ ┃ β”— πŸ“„ index.html ┃ β”— πŸ“ deploy ┃ ┣ πŸ“ assets ┃ β”— πŸ“„ index.html β”— πŸ“ back ┣ πŸ“ build ┃ β”— πŸ“„ APP.war β”— πŸ“ deploy β”— πŸ“„ APP.war
Plain Text
볡사

Spring ν”„λ‘œμ νŠΈ 배포

1.
디렉토리 ꡬ쑰 생성
2.
μˆ˜λ™ 배포 (파일 볡사)

디렉토리 ꡬ쑰 생성

μˆ˜λ™ 배포 (파일 볡사)

React ν”„λ‘œμ νŠΈ 배포

1.
디렉토리 ꡬ쑰 생성
2.
μˆ˜λ™ 배포 (파일 볡사)
β€’
κΆŒν•œ λ³€κ²½
sudo chmod -R 755 k-rules/front/deploy
Bash
볡사

μ‹€ν–‰ (Execution)

1.
λ°±μ—”λ“œ μ‹€ν–‰
2.
ν”„λ‘ νŠΈ μ‹€ν–‰

λ°±μ—”λ“œ μ‹€ν–‰

1.
슀크립트 μž‘μ„±
a.
μ„œλ²„ μ‹€ν–‰ 슀크립트 μž‘μ„±
i.
start.sh
b.
μ„œλ²„ μ’…λ£Œ 슀크립트 μž‘μ„±
i.
stop.sh
2.
μ„œλ²„ μ‹€ν–‰
3.
μ„œλ²„ μ’…λ£Œ

슀크립트 μž‘μ„±

μ„œλ²„ μ‹€ν–‰ 슀크립트 μž‘μ„±

β€’
start.sh
#!/bin/bash # ν˜„μž¬ μŠ€ν¬λ¦½νŠΈκ°€ μœ„μΉ˜ν•œ 경둜둜 이동 cd "$(dirname "$0")" # 둜그 디렉토리 생성 LOG_DIR="../log" mkdir -p "$LOG_DIR" LOG_FILE="$LOG_DIR/appwar_$(date +%Y%m%d_%H%M%S).log" # JAVA_HOME이 μ„€μ •λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©΄ java λͺ…λ Ήμ–΄ μ‚¬μš© JAVA_CMD=${JAVA_HOME:-}/bin/java if [ ! -x "$JAVA_CMD" ]; then JAVA_CMD=java fi # APP.war νŒŒμΌμ„ λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰ν•˜κ³  둜그 μ €μž₯ $JAVA_CMD -jar APP.war > "$LOG_FILE" 2>&1 &
Shell
볡사
β€’
κΆŒν•œ λΆ€μ—¬
chmod +x start.sh
Bash
볡사

μ„œλ²„ μ’…λ£Œ 슀크립트 μž‘μ„±

β€’
stop.sh
#!/bin/bash # APP.war ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œ 슀크립트 # μ‹€ν–‰ 쀑인 java -jar APP.war ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œ PIDS=$(ps -ef | grep '[j]ava.*APP.war' | awk '{print $2}') if [ -z "$PIDS" ]; then echo "μ‹€ν–‰ 쀑인 APP.war ν”„λ‘œμ„ΈμŠ€κ°€ μ—†μŠ΅λ‹ˆλ‹€." exit 0 fi for PID in $PIDS; do echo "APP.war ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œ: $PID" kill $PID sleep 1 if ps -p $PID > /dev/null; then echo "κ°•μ œ μ’…λ£Œ: $PID" kill -9 $PID fi echo "μ’…λ£Œ μ™„λ£Œ: $PID" sleep 1 done echo "λͺ¨λ“  APP.war ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€."
Shell
볡사
β€’
κΆŒν•œ λΆ€μ—¬
chmod +x stop.sh
Bash
볡사

μ„œλ²„ μ‹€ν–‰

./start.sh
Bash
볡사
β€’
μ‹€ν–‰ 확인

μ„œλ²„ μ’…λ£Œ

./stop.sh
Bash
볡사

ν”„λ‘ νŠΈ μ‹€ν–‰

1.
Nginx μ„œλ²„ 블둝 μ„€μ •
2.
Nginx ν™œμ„±ν™”
3.
SSL 적용

Nginx μ„œλ²„ 블둝 μ„€μ •

k-rules.conf 이름 λŒ€μ‹  μ›ν•˜λŠ” μ΄λ¦„μœΌλ‘œ μ‚¬μš©
sudo nano /etc/nginx/sites-available/k-rules.conf
Bash
볡사
VS CODE μ—μ„œ 원격 μ ‘μ†ν–ˆλ‹€λ©΄ 파일 생성 ν›„ μ½”λ“œ μž‘μ„± κ°€λŠ₯
β€’
k-rules.conf
server { listen 80; server_name alohaserver.cafe24.com; root /k-rules/front/deploy; index index.html; # favicon 처리 location = /favicon.ico { log_not_found off; access_log off; } location / { try_files $uri $uri/ /index.html; } # Spring API λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ (λ°±μ—”λ“œκ°€ 8080 포트라면) location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
JSON
볡사
β€’
μ €μž₯
Ctrl + S
β€’
μ’…λ£Œ
Ctrl + X

Nginx ν™œμ„±ν™”

β€’
기쑴 파일 있으면 제거
sudo rm /etc/nginx/sites-enabled/k-rules.conf
Bash
볡사
β€’
심볼릭 링크 생성
sudo ln -s /etc/nginx/sites-available/k-rules.conf /etc/nginx/sites-enabled/
Bash
볡사
β€’
μ„€μ • ν…ŒμŠ€νŠΈ
sudo nginx -t
Bash
볡사
β€’
κΆŒν•œ λ³€κ²½
sudo chmod -R 755 k-rules/front/deploy
Bash
볡사
β€’
μ„œλΉ„μŠ€ μž¬μ‹œμž‘
sudo systemctl restart nginx
Bash
볡사
β€’
둜그 확인
β—¦
μ‹€ν–‰λ‘œκ·Έ
sudo tail -f /var/log/nginx/access.log
Bash
볡사
β—¦
μ—λŸ¬λ‘œκ·Έ
sudo tail -f /var/log/nginx/error.log
Bash
볡사

SSL 적용

1.
Certbot μ„€μΉ˜ (무료 SSL, Let's Encrypt)
2.
SSL μΈμ¦μ„œ λ°œκΈ‰
3.
μžλ™ κ°±μ‹  확인
β€’
Certbot μ„€μΉ˜ (무료 SSL, Let's Encrypt)
sudo apt install certbot python3-certbot-nginx -y
Bash
볡사
β€’
SSL μΈμ¦μ„œ λ°œκΈ‰
νŒŒλž€μƒ‰ 글씨 λ‚˜μ˜ λ„λ©”μΈμœΌλ‘œ μ§€μ •
sudo certbot --nginx -d alohaserver.cafe24.com
Bash
볡사
β€’
μžλ™ κ°±μ‹  확인
sudo systemctl status certbot.timer
Bash
볡사

도메인 등둝

1.
도메인 κ΅¬λ§€ν•˜κΈ°
2.
μ—°κ²°ν•˜κΈ°
3.
Nginx μ„€μ •
4.
SSL

도메인 κ΅¬λ§€ν•˜κΈ°

카페24 μ„œλΉ„μŠ€ μ‚¬μš© μ‹œ, 카페24 μ—μ„œ 도메인을 κ΅¬λ§€ν•˜λ©΄ μžλ™μœΌλ‘œ μ—°κ²°ν•΄μ£ΌλŠ” μ„œλΉ„μŠ€κ°€ μžˆμ–΄μ„œ 카페24μ—μ„œ κ΅¬λ§€ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.

μ—°κ²°ν•˜κΈ°

1.
카페24 ν˜ΈμŠ€νŒ… μ„Όν„°
2.
λ‚˜μ˜ μ„œλΉ„μŠ€ 관리
3.
도메인 μ—°κ²° 관리
a.
도메인 μΆ”κ°€ μ—°κ²° 및 관리
b.
카페24μ—μ„œ κ΅¬μž…ν•œ 도메인 μ—°κ²°ν•˜κΈ°
β€’
도메인 μΆ”κ°€ μ—°κ²° 및 관리
β€’
카페24μ—μ„œ κ΅¬μž…ν•œ 도메인 μ—°κ²°ν•˜κΈ°

Nginx μ„€μ •

β€’
/etc/nginx/sites-available/k-rules.conf
sudo nano /etc/nginx/sites-available/k-rules.conf
Bash
볡사
κ΅­λ£°.com μΆ”κ°€
server { listen 80; server_name alohaserver.cafe24.com κ΅­λ£°.com; root /k-rules/front/deploy; index index.html; # favicon 처리 location = /favicon.ico { log_not_found off; access_log off; } location / { try_files $uri $uri/ /index.html; } # Spring API λ¦¬λ²„μŠ€ ν”„λ‘μ‹œ (λ°±μ—”λ“œκ°€ 8080 포트라면) location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
Bash
볡사
β€’
μ €μž₯
Ctrl + S
β€’
μ’…λ£Œ
Ctrl + X
β€’
ν…ŒμŠ€νŠΈ
sudo nginx -t
Bash
볡사
β€’
기쑴 파일 있으면 제거
sudo rm /etc/nginx/sites-enabled/k-rules.conf
Bash
볡사
β€’
심볼릭 링크 생성
sudo ln -s /etc/nginx/sites-available/k-rules.conf /etc/nginx/sites-enabled/
Bash
볡사
β€’
κΈ°λ³Έ μ‚¬μ΄νŠΈ 제거
sudo rm /etc/nginx/sites-enabled/default
Bash
볡사
β€’
μ„œλΉ„μŠ€ μž¬μ‹œμž‘
sudo systemctl restart nginx
Bash
볡사

SSL

β€’
SSL μΈμ¦μ„œ λ°œκΈ‰ (λ©€ν‹° 도메인)
β€’
ν…ŒμŠ€νŠΈ
β€’
SSL μΈμ¦μ„œ λ°œκΈ‰ (λ©€ν‹° 도메인)
ν•œκΈ€λ„λ©”μΈ 주의
β€’
μ—¬κΈ°μ„œλŠ” λ°˜λ“œμ‹œ Punycode 버전(xn--3e0b91t.com)을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
β€’
κ΅­λ£°.com κ·ΈλŒ€λ‘œ μ“°λ©΄ μΈμ¦μ„œ λ°œκΈ‰ μ‹€νŒ¨ν•©λ‹ˆλ‹€.
sudo certbot --nginx -d alohaserver.cafe24.com -d κ΅­λ£°.com
Bash
볡사
sudo certbot --nginx -d alohaserver.cafe24.com -d xn--3e0b91t.com
Bash
볡사
β€’
ν…ŒμŠ€νŠΈ
sudo certbot renew --dry-run
Bash
볡사

μ‚¬μ΄νŠΈ 접속

뢀둝

μ„œλΉ„μŠ€ 개발 ν”„λ‘¬ν”„νŠΈ

Back : Spring Boot API SERVER - MySQL, JPA, Swagger, Gradle Front : React - tailwind, vite κ΅­λ£°.com - 둜그인(JWT), νšŒμ›κ°€μž… - κΆŒν•œ : μ‚¬μš©μž, κ΄€λ¦¬μž - μ‚¬μš©μž νŽ˜μ΄μ§€ - νˆ¬ν‘œμ§ˆλ¬Έ - νˆ¬ν‘œ ν›„, νˆ¬ν‘œ % 톡계 확인 - νˆ¬ν‘œλ‚΄μ—­ - κ΄€λ¦¬μž νŽ˜μ΄μ§€ - νˆ¬ν‘œμ§ˆλ¬Έ CRUD ν”„λ‘œμ νŠΈ 생성 λΆ€ν„° λ‹¨κ³„μ μœΌλ‘œ μ§„ν–‰
Plain Text
볡사