PostgreSQL 14 설치
1. PostgreSQL 14 설치를 위한 리포지토리 설정
Amazon Linux 2023에 PostgreSQL 14 리포지토리를 수동으로 추가.
# PostgreSQL 리포지토리 설정 파일을 생성합니다.
sudo tee /etc/yum.repos.d/pgdg.repo <<EOF
[pgdg14]
name=PostgreSQL 14 for Amazon Linux 2023
baseurl=https://download.postgresql.org/pub/repos/yum/14/redhat/rhel-9-x86_64
enabled=1
gpgcheck=0
EOF
Shell
복사
2. PostgreSQL 14 패키지 설치
리포지토리를 추가한 후, PostgreSQL 14와 관련된 패키지를 설치.
# PostgreSQL 14와 관련된 서버 및 클라이언트 패키지를 설치합니다.
sudo dnf install -y postgresql14 postgresql14-server
Shell
복사
3. PostgreSQL 데이터베이스 초기화
PostgreSQL 데이터베이스를 초기화.
# PostgreSQL 데이터베이스를 초기화합니다.
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Shell
복사
4. PostgreSQL 서비스 시작 및 자동 시작 설정
PostgreSQL 서비스를 시작하고 부팅 시 자동으로 시작되도록 설정.
# PostgreSQL 서비스를 시작합니다.
sudo systemctl enable --now postgresql-14
# PostgreSQL 서비스 상태를 확인합니다.
sudo systemctl status postgresql-14
Shell
복사
5. PostgreSQL 설치 확인
PostgreSQL이 정상적으로 설치되었는지 확인하려면 다음 명령어를 사용.
psql --version
Shell
복사
6. PostgreSQL에 접속하기
먼저, psql 클라이언트를 사용하여 PostgreSQL에 postgres 사용자로 접속. 기
본적으로 설치된 PostgreSQL 인스턴스는 postgres라는 관리자를 포함하고 있다.
# PostgreSQL에 접속합니다.
sudo -u postgres psql
Shell
복사
7. 데이터베이스와 사용자 생성하기
PostgreSQL에 접속한 후, 다음 SQL 명령어를 실행하여 데이터베이스와 사용자를 생성하고, 권한을 부여.
-- 데이터베이스 생성
CREATE DATABASE vincamo;
-- 사용자 생성 및 비밀번호 설정
CREATE USER vincamouser WITH ENCRYPTED PASSWORD 'vincamo0126';
-- 생성한 사용자에게 데이터베이스에 대한 모든 권한 부여
GRANT ALL PRIVILEGES ON DATABASE vincamo TO vincamouser;
SQL
복사
이 명령어들은 각각 데이터베이스와 사용자를 만들고, 해당 사용자에게 데이터베이스에 대한 모든 권한을 부여.
8. PostgreSQL 쉘에서 나가기
명령어가 성공적으로 실행되면 \q를 입력하여 PostgreSQL 셸에서 나올 수 있다
\q
SQL
복사
9. 확인
모든 작업이 완료된 후, 다음 명령어로 데이터베이스와 사용자가 제대로 생성되었는지 확인할 수 있다.
# 다시 PostgreSQL에 접속합니다.
sudo -u postgres psql
-- 생성된 데이터베이스 목록 확인
\l
-- 생성된 사용자의 권한 확인
\du
Shell
복사
10. PostgreSQL 버전 확인
PostgreSQL의 버전을 확인
psql --version
Shell
복사
11. PostgreSQL 상태 확인
PostgreSQL 서비스의 상태를 확인
sudo systemctl status postgresql-14
Shell
복사
이 명령어는 PostgreSQL 14의 현재 상태를 보여준다(활성화 여부, 실행 중인지 여부 등).
12. PostgreSQL 서비스 실행
PostgreSQL 서비스를 시작
sudo systemctl start postgresql-14
Shell
복사
13. PostgreSQL 서비스 중지
PostgreSQL 서비스를 중지
sudo systemctl stop postgresql-14
Shell
복사
14. PostgreSQL 서비스 재시작
PostgreSQL 서비스를 재시작
sudo systemctl restart postgresql-14
Shell
복사
15. PostgreSQL 서비스 부팅 시 자동 시작 설정
PostgreSQL 서비스를 부팅 시 자동으로 시작되도록
sudo systemctl enable postgresql-14
Shell
복사
16. PostgreSQL 서비스 부팅 시 자동 시작 해제
PostgreSQL 서비스가 부팅 시 자동으로 시작되지 않도록
sudo systemctl disable postgresql-14
Shell
복사
Git 클론
1. 깃 클론
git clone https://github.com/f-lab-edu/vintage-camera-community.git
Java
복사
2. 특정 브랜치 체크아웃하기
git checkout feature/24
Java
복사
3. 모든 원격 브랜치를 업데이트하여 최신 상태로 갱신
git remote update
Plain Text
복사
Docker
1. Docker 설치
# Docker 설치를 위한 패키지 업데이트
sudo yum update -y
# Docker 설치
sudo yum install -y docker
# Docker 서비스 시작 및 부팅 시 자동 시작 설정
sudo systemctl start docker
sudo systemctl enable docker
Shell
복사
2. Docker Compose 설치
# Docker Compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Docker Compose 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
# Docker Compose 버전 확인
docker-compose --version
Shell
복사
Nginx 설정 파일 수정
•
EC2 인스턴스에서 /etc/nginx/conf.d/default.conf 파일을 열고 제공된 설정 내용을 붙여 넣기.
sudo nano /etc/nginx/conf.d/default.conf
Shell
복사
그리고 다음 내용을 추가
server {
listen 80;
server_name _;
location / {
proxy_pass http://vintage-community;
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;
}
}
Plain Text
복사
Nginx 설정 테스트 및 재시작
Nginx 설정 파일을 수정한 후, 설정이 올바른지 테스트하고 Nginx를 재시작
# Nginx 설정 테스트
sudo nginx -t
# Nginx 서비스 재시작
sudo systemctl restart nginx
Shell
복사
수정된 설정 파일 내용
sudo nano /etc/nginx/nginx.conf
Java
복사
/etc/nginx/nginx.conf 파일을 다음과 같이 수정
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Blue/Green 배포를 위한 업스트림 설정
upstream vintage-community {
server localhost:8080;
server localhost:8081;
}
# 기존 설정 포함
include /etc/nginx/conf.d/*.conf;
}
Plain Text
복사
[ec2-user@ip-172-31-7-29 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 475M 28K 475M 1% /dev/shm
tmpfs 190M 476K 190M 1% /run
/dev/xvda1 8.0G 4.4G 3.7G 55% /
tmpfs 475M 4.0K 475M 1% /tmp
/dev/xvda128 10M 1.3M 8.7M 13% /boot/efi
tmpfs 95M 0 95M 0% /run/user/1000
[ec2-user@ip-172-31-7-29 ~]$
Java
복사
현재 사용자(ec2-user)를 Docker 그룹에 추가
Docker 데몬은 기본적으로 docker 그룹의 사용자만 접근할 수 있다.
현재 사용자(ec2-user)를 docker 그룹에 추가해야 함.
sudo usermod -aG docker ec2-user
Shell
복사
변경 사항 적용을 위해 로그아웃 후 다시 로그인
사용자를 docker 그룹에 추가한 후에는 변경 사항을 적용하기 위해 현재 세션에서 로그아웃했다가 다시 로그인. 로그아웃 후 SSH를 통해 다시 접속.
Docker Compose 명령어 재실행
다시 로그인한 후 docker-compose up -d 명령어를 재실행
docker-compose up -d
Shell
복사
email 프로퍼티 생성
지금 위치가 src/main/resources 디렉터리이므로 아래 명령어를 실행하여
application-email.properties 파일을 생성
nano 편집기 사용
nano application-email.properties
Shell
복사
위 명령어를 입력하면 nano 편집기로 새로운 파일이 열림
# Google email SMTP setting
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=너의 이메일주소
spring.mail.password=구글에서 받은 SMTP 비번
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.starttls.enable=true
Plain Text
복사