AWS์์ ์คํํ๊ธฐ ์ ๋ก์ปฌ์์ ํ ์ด๋ธ ๋ง๋ค๊ธฐ ํ ์คํธํ๊ธฐ
โ๏ธ ๋ก์ปฌ db ์์ฑ
psql -U postgres
psql (17.4)
postgres=# CREATE USER dashboard WITH PASSWORD 'password';
CREATE ROLE
postgres=# CREATE DATABASE dashboard OWNER dashboard;
CREATE DATABASE
postgres=# \l
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก
์ด๋ฆ | ์์ ์ฃผ | ์ธ์ฝ๋ฉ | ๋ก์ผ์ผ ์ ๊ณต์ | Collate | Ctype | ๋ก์ผ์ผ | ICU ๋ฃฐ | ์ก์ธ์ค ๊ถํ
-----------+-----------+--------+---------------+---------+-------+--------+--------+-----------------------
dashboard | dashboard | UTF8 | libc | ko-KR | ko-KR | | |
postgres=# \q
PS C:\Users\juyou> psql -U dashboard
psql (17.4)
๋์๋ง์ ๋ณด๋ ค๋ฉด "help"๋ฅผ ์
๋ ฅํ์ญ์์ค.
dashboard=> CREATE TABLE sales (
dashboard(> id SERIAL PRIMARY KEY,
dashboard(> sale_date DATE NOT NULL,
dashboard(> customer_id INT NOT NULL,
dashboard(> amount NUMERIC(10,2) NOT NULL
dashboard(> );
CREATE TABLE
dashboard=> CREATE VIEW daily_sales AS
dashboard-> SELECT sale_date,
dashboard-> SUM(amount) AS total_amount,
dashboard-> COUNT(*) AS order_count
dashboard-> FROM sales
dashboard-> GROUP BY sale_date
dashboard-> ORDER BY sale_date;
CREATE VIEW
dashboard=> CREATE VIEW customer_spending AS
dashboard-> SELECT customer_id,
dashboard-> SUM(amount) AS total_spent
dashboard-> FROM sales
dashboard-> GROUP BY customer_id;
CREATE VIEW
dashboard-> \dt
๋ฆด๋ ์ด์
๋ชฉ๋ก
์คํค๋ง | ์ด๋ฆ | ํํ | ์์ ์ฃผ
--------+-------+--------+-----------
public | sales | ํ
์ด๋ธ | dashboard
(1๊ฐ ํ)
โ๏ธ์คํ๋ง์์ ๋ฐ์ดํฐ ์์กํ๋์ง ํ์ธ
dashboard/src/main/resources/application.ymlspring:
application:
name: ${APP_NAME}
datasource:
url: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
run > edit configuration > environment valuesAPP_NAME=dashboard;DB_HOST=localhost;DB_NAME=dashboard;DB_PASSWORD=password;DB_PORT=5432;DB_USERNAME=dashboard
๊ทธ๋ฅ ๋๋น์ฉ ์๋ฒ ์๋ก ํ ๋ค..
์ ์ ํ๋๋๋ก aws ์ธ์คํด์ค ์๋ก ๋ง๋ค์ด์
์ธ๋ฐ์ด๋ ๊ท์น์ postgres๊ฐ ์ ๊ทผ๊ฐ๋ฅํ๋๋ก port:5432 source:ipv4 ์ค์ ํ๊ณ
putty๋ก ๋ค์ด๊ฐ์ postgres ์ค์น..
์ค์น ๋ช
๋ น์ด๋ ์ฌ๊ธฐ์
pg_hba.conf ํธ์ง๋ถํฐ ํด๋ฒ๋ฆฌ๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ๋ชจ๋ฅด๋๊น ๊ผญ ์ํผ์ ์ ๋น๋ฒ ์ค์ ๋ถํฐ ํด์ฃผ๊ณ conf ํ์ผ ํธ์งํ๊ธฐ^^
์๊น ๋ก์ปฌ postgres์์ ํ๋ฏ์ด ๋๊ฐ์ด ํ๋ฉด๋๋ค.
sudo systemctl status postgresql
psql -U postgres -W
CREATE USER dashboard WITH PASSWORD 'password';
CREATE DATABASE dashboard OWNER dashboard;
\q
psql -U dashboard -W
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
sale_date DATE NOT NULL,
customer_id INT NOT NULL,
amount NUMERIC(10,2) NOT NULL
);
CREATE VIEW daily_sales AS
SELECT sale_date,
SUM(amount) AS total_amount,
COUNT(*) AS order_count
FROM sales
GROUP BY sale_date
ORDER BY sale_date;
CREATE VIEW customer_spending AS
SELECT customer_id,
SUM(amount) AS total_spent
FROM sales
GROUP BY customer_id;
git์ผ๋ก ํ๋ก์ ํธ๋ฅผ aws์ ์ฌ๋ฆด ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ๋ฅผ ๊นํ๋ธ์ ํธ์ํด ๋์ด์ผ ํ๋ค.
โ๏ธ aws์์ ์๋์ผ๋ก ์๋ฐ ํด์ฒด์ธ์ ๋ชป์ฐพ๋๋์ ๋ฏธ๋ฆฌ ์ค์ ํ์ผ์ ๋ช ์ํ์ฌ ํธ์ํด ๋์ด์ผ ํ๋ค.
settings.gradle ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์์ :
pluginManagement {
repositories {
gradlePluginPortal()
mavenCentral()
}
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
}
rootProject.name = 'dashboard'
โ๏ธ ์ฐธ๊ณ ๋ก ์๋ฐ๋ฒ์ ๋ ๋ช ์ํด ์ฃผ์ด์ผ ํ๋ค..
system.properties ์์ฑ ํ ํ ์ค ์ถ๊ฐjava.runtime.version=17
AWS > ec2 ์ง์ > ์ธ์คํด์ค ์์ฑํ๊ธฐ
์์ฑ๋๋ฅด๊ธฐ
putty ์ด์ด์ ํค ์ค์ ํ๊ณ
์ธ์
์ฐ๊ฒฐํ๋ค. ๋ฌผ๋ก ์คํ๋ง์ฉ aws public ipv4 ip ์
๋ ฅ
์์ธํ ์ค๋ช
์ ์๋ตํ๋ค
ec2-user@<public-ipv4-address>
aws ec2 ์ธ์คํด์ค๋ก ์๋ก์ด ์๋ฒ ์ปดํจํฐ ๊ณต๊ฐ์ ๋ง๋ค์์ผ๋ ์๋ฒ์ปด์์ ์คํ๋ง ์คํ์ ์ํ ํ๊ฒฝ์ ๋ง๋ค์ด ์ฃผ์ด์ผ ํ๋ค.
git, jdk, ํ๊ฒฝ๋ณ์ ๋ฑ๋ก์ด ํ์ํ๋ค.
โ๏ธ ๊น ์ค์น, ๋ฒ์ ํ์ธ
sudo dnf install git -y
git --version
โ๏ธ jdk ์ค์น, ๋ฒ์ ํ์ธ
sudo dnf install java-17-amazon-corretto -y
java --version
โ aws๋๊น ๊ทธ๋ฅ ์๋ง์กด jdk ์ค์น..
โ๏ธ ๊น ํด๋ก ํด์ ํ๋ก์ ํธ ๊ฐ์ ธ์ค๊ธฐ
git clone your_github_address
์คํ๋ง ํ์ผ๋ค์ด ์ ๋์ด์ค๋ฉด ์ด์ ํ๊ฒฝ๋ณ์ ์ค์ ๋ง ํด์ฃผ๋ฉด ํ๋ก๊ทธ๋จ ์คํ์ด ๊ฐ๋ฅํ๋ค.
๋จผ์ ํด๋ก ํด์จ ๊น ํด๋๋ก ์ด๋ํ์ฌ ์งํํ๋ฉด ๋๋ค.
ls -al
cd your_git_repository_name
ls -al
cd project_root_folder_name
โ๏ธ ๋ฆฌ๋ ์ค ์ฌ์ฉ์ ํ๊ฒฝ๋ณ์ ์ค์
sudo nano ~/.bashrc
์ค์ ํ์ผ์ด ์ด๋ฆฌ๋ฉด ์ฌ๊ธฐ์์ ํ๊ฒฝ๋ณ์ ์ค์ ์ ํ ์ ์๋ค.
โ๏ธ JDK ํ๊ฒฝ๋ณ์ ์ค์
.bashrc ํ์ผ ๋งจ ์๋์ ๋์ค ์ถ๊ฐexport JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto export PATH=$JAVA_HOME/bin:$PATHโ๏ธ ์ฌ์ฉ์ ํ๊ฒฝ๋ณ์ ์ค์
๊ฐ์ ๋ฐฉ์์ผ๋ก .bashrc ํ์ผ ๋งจ ์๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ ๋ณด๋ ์ ๋ ฅํด์ค๋ค.
โผ๏ธaws db ์ธ์คํด์ค host ip ์ ๋ ฅexport APP_NAME=dashboard export DB_HOST=18.208.216.209 export DB_PORT=5432 export DB_NAME=dashboard export DB_USERNAME=dashboard export DB_PASSWORD=passwordโ๏ธ ์ ์ฅํ๊ณ ์ ์ฉํ๊ธฐ
ctrlX> save?Y> save_file_name ๊ทธ๋๋กEnter
source ~/.bashrc
์ธํ ๋ฆฌ์ ์ด์์ ๋ธ๊น์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ๋ค์ ํ๋ํ๋ ์ ๋ ฅํด ์ฃผ์ด์ผ ํ๋ค..
chmod +x gradlew
rm -rf ~/.gradle
./gradlew clean build
Gradle ํ๋ก์ ํธ์์ ./gradlew build๋ฅผ ์คํํ๋ฉด,
์ปดํ์ผ๋ ๊ฒฐ๊ณผ๋ฌผ(jar)์ด build/libs/ ํด๋์ ์์ฑ๋๋ค.
[project_root_folder]$ ls build/libs/
dashboard-0.0.1-SNAPSHOT-plain.jar dashboard-0.0.1-SNAPSHOT.jar
| ํ์ผ๋ช | ์ฐจ์ด์ |
|---|---|
| dashboard-0.0.1-SNAPSHOT.jar | โ ์คํ ๊ฐ๋ฅํ fat JAR (๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌํจ) |
| dashboard-0.0.1-SNAPSHOT-plain.jar | โ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ์์ ์ปดํ์ผ ํด๋์ค๋ง ํฌํจ๋ JAR |
์คํ ๊ฐ๋ฅํ jar ํ์ผ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ต์
(nohup)์ผ๋ก ์คํ์ํค๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด ์๋ฒ ์ปดํจํฐ๋ฅผ ๊บผ๋ ๋ฐฐํฌ๊ฐ ์ง์๋๋ค.
nohup java -jar build/libs/dashboard-0.0.1-SNAPSHOT.jar > log.txt 2>&1 &
์คํ ๋ก๊ทธ๋ฅผ log.txt์์ ํ์ธํ ์ ์๋ค.
| ๋ถ๋ถ | ์ค๋ช |
|---|---|
nohup | ํฐ๋ฏธ๋์ ๋ซ์๋ ํ๋ก์ธ์ค๊ฐ ๊ณ์ ์คํ๋๊ฒ ํจ |
java -jar build/libs/dashboard-0.0.1-SNAPSHOT.jar | JAR ํ์ผ ์คํ (Spring Boot ์๋ฒ ๋ฑ) |
> | ํ์ค ์ถ๋ ฅ(stdout)์ log.txt๋ก ๋ฆฌ๋ค์ด๋ ์
|
2>&1 | ํ์ค ์๋ฌ(stderr)์ ํ์ค ์ถ๋ ฅ(stdout)์ผ๋ก ํฉ์นจ โ ์ฆ, ๋ชจ๋ ๋ก๊ทธ๋ฅผ log.txt์ ์ ์ฅ |
& | ๋ช ๋ น์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํจ (ํฐ๋ฏธ๋์ ์ฐจ์งํ์ง ์์) |
โ๏ธ ๋ก๊ทธ ํ์ธ
tail -f log.txt
์ต์ ์์ผ๋ก ๋ก๊ทธ ํ์ธ ๊ฐ๋ฅํ tail ์ต์