Search

AWS 진행 과정

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
복사