โ ์ธํ ๋ฆฌ์ ์ด๋ os๋ ๋ฒจ์์ ๋ฐ๋ก ํ๊ฒฝ๋ณ์๋ฅผ ์ถ๊ฐํ์ง ์์๋ ๋๊ฒ๋ ๊ธฐ๋ฅ์ ์ง์ํด์ค๋ค.
[application.yml]
// ํ๊ฒฝ ๋ณ์ ์ ์ฉ โ
#spring:
# application:
# name: memo_app
# datasource:
# url: jdbc:postgresql://:5432/memo_app
# username: memo_app
# password: password
// ํ๊ฒฝ ๋ณ์ ์ ์ฉ โญ
spring:
application:
name: ${APP_NAME}
datasource:
url: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=disable
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
โ ์ด๊ฑธ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ application.yml ํ์ผ์ ์์ ๊ฐ์ด ๋ณ๊ฒฝํ ํ ์๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ์ ์ธํ ๋ฆฌ์ ์ด์์ ๋ช๊ฐ์ง ํ๊ฒฝ๋ณ์๋ฅผ ์ถ๊ฐํด ์ฃผ๋ฉด ๋๋ค.
โ๏ธ ์ข์๋จ ๋ฉ๋ด ๋ฒํผ > run ํญ > edit configurations

โ๏ธ Environment variables์์ ๋งจ ๋ง์ง๋ง edit ๋ฒํผ ํด๋ฆญ
localhost ์
๋ ฅํด๋๋ฉด ๋๋ค. 
โ๏ธ application.yml ํ์ผ์ ๋ง๊ฒ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํด ์ค๋ค.
โ
ํ๊ฒฝ ๋ณ์ ์ธํ
์ด ์๋ฃ๋์๋ค๋ฉด ์๋์ ๊ฐ์ด ์ฝ๋์์ Environment ํด๋์ค์ getProperty ๋ฉ์๋๋ก ํ๊ฒฝ๋ณ์๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
@Autowired
private Environment env;
System.out.println("APP_NAME: " + env.getProperty("APP_NAME"));
๋ง๊ฐ์ ์ด์ฉํ ์คํ๋ง ์ผ์๋ฆฌ ์๊ฒฉ์๊ฑด ํ์ธํ๊ธฐ

โ๏ธ AWS์ PostgreSQL ํ๊ฒฝ์ ๊ตฌ์ถํ๊ธฐ ์ํด์๋ ๋จผ์ aws ํ์๊ฐ์ ์ ํ๋ค.
โ๏ธ ํ์๊ฐ์
์๋ฃ ํ ๊ฒ์์ฐฝ์ ec2๋ฅผ ๊ฒ์ํด์ ๋ค์ด๊ฐ๋ค.

โ๏ธ ์ฃผํฉ์ ์ธ์คํด์ค ์์ ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ฒ ์ปดํจํฐ๋ฅผ ํ๋ ์์ฑํ ์ ์๋ค.

โ๏ธ ๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ์ธ์คํด์ค ์ค์ ์ฐฝ์ด ๋ฌ๋ค.

โ๏ธ ํค ํ์ด ์ค์ ์ผ๋ก ๋ณด์ ์ค์ ์ ํด์ฃผ์ด์ผ ํ๋ค.



โน๏ธ ๋ง์ฝ .ppk๊ฐ ์๋๋ผ .pem์ ๋ค์ด๋ฐ์๋ค๋ฉด?
์ด ๋ค์์ ์ค์นํ putty์ key generator์์ ๋ณํํด์ฃผ๋ฉด ๋๋ค.
์ด์ instance ์์ฑ ๋ฒํผ์ ๋๋ฌ ์ธ์คํด์ค ์์ฑ์ ์๋ฃํด ์ค๋ค.
์์ฑ๋ ์๋ฒ ์ปดํจํฐ์์ postgresql์ ์ฌ์ฉํ๋ ค๋ฉด ์ธ๋ฐ์ด๋ ๊ท์น ์ค์ ์ด ํ์ํ๋ค.
โ๏ธ ์ ์ธ์คํด์ค ์์ฑ์ด ์๋ฃ๋๋ฉด instance id ๋งํฌ๋ฅผ ๋๋ฌ ์ธ์คํด์ค ์ ๋ณด ํ๋ฉด์ผ๋ก ๋ค์ด๊ฐ๋ค.


PuTTY๋ Windows์์ SSH(Secure Shell)๋ฅผ ํตํด ์๊ฒฉ ๋ฆฌ๋ ์ค ์๋ฒ์ ์ ์ํ ์ ์๊ฒ ํด์ฃผ๋ ํฐ๋ฏธ๋ ํ๋ก๊ทธ๋จ์ด๋ค.
๋น์ทํ ํ๋ก๊ทธ๋จ๋ค์ค์ mobaXterm์ด๋ Filezila ๊ฐ์ ๊ฒ๋ค์ด ์๋ค.
โ๏ธ ๊ตฌ๊ธ์ putty ๊ฒ์ ํ os์ ๋ง๊ฒ ๋ค์ด๋ฐ์ ์ค์นํ๋ค.

โ๏ธ ์ค์น๊ฐ ์๋ฃ๋๋ฉด putty๋ฅผ ์คํํ๋ค.

โ๏ธ ์๊น ๋ง๋ aws ์๋ฒ์ ์ ์ํ๊ธฐ ์ํด์๋ ๋จผ์ ์๊ฒฉ์ฆ๋ช ํค๋ฅผ ์ค์ ํด ์ฃผ์ด์ผ ํ๋ค.
Connection > SSH > Auth > Credentials ๋ก ๋ค์ด๊ฐ Private key file for authentication ๋ฅผ ์ฐพ๋๋ค.
โ๏ธ ๊ทธ๋ฆฌ๊ณ ๋งจ ์์ Session ํญ์์ Host name, instance name์ ์ง์ ํ๊ณ open ํ๋ฉด ๋๋ค.
ec2-user@<public-ipv4-address>
Saved sessions์ aws instance ์ด๋ฆ์ ์
๋ ฅํ๊ณ ์ ์ฅํ๋ค.โ๏ธ ์ด์ open ๋ฒํผ์ ๋๋ฅด๋ฉด ์ปค๋งจ๋์ฐฝ์ด ์ด๋ฆฐ๋ค.

โ๏ธ ์ด์ Amazon Linux ์ปค๋งจ๋๊ฐ ์ด๋ฆฐ ๊ฒ์ด๊ณ ์ฌ๊ธฐ์์ PostgreSQL์ ์ค์นํด ์ฃผ์ด์ผ ํ๋ค.
๐ Amazon Linux 2 AMI ๋ฒ์
sudo amazon-linux-extras enable postgresql14
sudo yum clean metadata
sudo yum install -y postgresql postgresql-server
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
๐ Amazon Linux 2023 AMI ๋ฒ์
Amazon Linux 2023์๋ amazon-linux-extras๊ฐ ์ ๊ฑฐ๋์ด ์์ผ๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก PostgreSQL 15์ด ์ด๋ฏธ ๊ธฐ๋ณธ ๋ฆฌํฌ์งํฐ๋ฆฌ์ ํฌํจ๋์ด ์์ด ํจ์ฌ ๊ฐํธํ๊ฒ ์ค์นํ ์ ์๋ค.
# 1. ์์คํ
ํจํค์ง ์ต์ ํ
# 2. PostgreSQL 15 ์ค์น (ํด๋ผ์ด์ธํธ + ์๋ฒ)
# 3. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ
# 4. ์๋น์ค ํ์ฑํ ๋ฐ ์์
# 5. ์ค์น ํ์ธ
sudo dnf update -y
sudo dnf install -y postgresql15 postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable --now postgresql-15
sudo systemctl status postgresql-15
sudo -u postgres psql
โ๏ธ postgres ์ค์น๊ฐ ์๋ฃ๋๋ฉด ์ฌ๊ธฐ์๋ถํฐ๋ ์ ์ ํ๋๋๋ก ์ ์ ์ค์ , ๋๋น ์์ฑ, ํ ์ด๋ธ ์์ฑ์ ํ๋ฉด ๋๋ค.
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD '<SUPERUSER_PASSWORD>';
\q *์ข
๋ฃ
psql -U postgres -W
Password:
psql (14.18)
Type "help" for help.
Password:
sudo nano /var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all md5
host replication all 0.0.0.0/0 md5
host replication all ::1/128 md5
Tip: 0.0.0.0/32๋ ๋จ์ผ ์ฃผ์๋ง, ์ธ๋ถ ์ ์ฒด ์ ๊ทผ ์ 0.0.0.0/0 ์ฌ์ฉ.
sudo -u postgres psql -c "SHOW config_file";
# ๊ฒฝ๋ก ํ์ธ ํ ํธ์ง
sudo nano /var/lib/pgsql/data/postgresql.conf
# listen_addresses = 'localhost' โ listen_addresses = '*'
ctrl w ๋ก localhost๋ฅผ ๊ฒ์ํด ๋ชจ๋ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝ
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
Tip: Amazon Linux ๋ฒ์ ๋ง๋ค ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ๊ฐ ๋ฌ๋ผ์ง ์ ์์ผ๋, SHOW config_file;๋ก ์ ํํ ๊ฒฝ๋ก ํ์ธ.
# ๋ณ๊ฒฝ ์ ์ฉ ์ ์ฌ์์ ๊ถ์ฅ
sudo systemctl restart postgresql
# ๋๋ ์ค์ ๋ง ์ฌ๋ก๋ ๊ฐ๋ฅ
sudo systemctl reload postgresql
โ ํ๊ฒฝ๋ณ์ ํธ์ง
โ๏ธ ์ข์๋จ ๋ฉ๋ด ๋ฒํผ > run ํญ > edit configurations

โ๏ธ Environment variables์์ ๋งจ ๋ง์ง๋ง edit ๋ฒํผ ํด๋ฆญ

1 sudo amazon-linux-extras enable postgresql14
2 sudo yum clean metadata
3 sudo yum install -y postgresql postgresql-server
4 history
5 sudo na
6 sudo n
7 sudo yum install nano -y
8 sudo na
9 sudo nano
10 sudo systemctl start postgresql
11 sudo systemctl enable postgresql
12 sudo postgresql-setup initdb
13 history
14 cat /etc/os-release
15 sudo systemctl start postgresql
16 sudo systemctl enable postgresql
17 history
18 sudo nano /var/lib/pgsql/data/pg_hba.conf
19 ls
20 -ls
21 pwd
22 ls
23 ls -l
24 ls -alh
25 sudo find /var/lib/pgsql -name pg_hba.conf
26 sudo nano /var/lib/pgsql/data/pg_hba.conf
27 sudo -u postgres psql
28 history
29 sudo -u postgres psql
30 sudo systemctl restart postgresql
31 sudo nano /var/lib/pgsql/data/pg_hba.conf
32 sudo systemctl restart postgresql
33 sudo nano /var/lib/pgsql/data/pg_hba.conf
34 psql -U postgres -W
35 psql -U memo_app -W
36 \q
37 sudo -u postgres psql -c "SHOW config_file;"
38 sudo -u postgres psql -c "SHOW config_file";
39 sudo nano /var/lib/pgsql/data/postgresql.conf
40 sudo systemctl restart postgresql
41 sudo nano /var/lib/pgsql/data/pg_hba.conf
42 sudo systemctl restart postgresql
43 sudo nano /var/lib/pgsql/data/pg_hba.conf
44 sudo systemctl restart postgresql
45 \dt
46 psql -U memo_app -W
47 sudo systemctl restart postgresql
48 sudo nano /var/lib/pgsql/data/pg_hba.conf
49 sudo nano /var/lib/pgsql/data/postgresql.conf
50 sudo nano /var/lib/pgsql/data/pg_hba.conf
51 sudo nano /var/lib/pgsql/data/postgresql.conf
52 sudo systemctl restart postgresql
53 \q
54 q
55 history
java.runtime.version=17
