FireDrago
[vultr] DB를 사용하는 프로젝트 배포하기 본문

1. 두개의 서버 인스턴스를 생성한다. 백엔드 서버는 nginx 와 함께 설치하고,
데이터베이스 서버에서는 MySql을 사용해보자
백엔드 서버 설정
<nginx 설정>
1. yum install nginx : 서버에 nginx를 설치한다
2. systemctl start nginx : nginx를 실행한다.
3. systemctl enable nginx : 시스템 부팅 시 nginx를 자동으로 실행되도록 설정한다.
4. curl localhost:80 : HTTP 요청 (80번 포트) 보내면 nginx 기본페이지 HTML이 반환된다.
<방화벽 설정>
브라우저에서 서버 ip 주소로 접속해보자 접속이 되지 않는다.
외부 브라우저를 통한 접속은 방화벽에 의해 차단되기 때문이다. 방화벽 설정을 해보자
5. firewall-cmd --list-ports : 방화벽 포트 설정 확인 (현재 열린 포트는 없을것이다.)
6. firewall-cmd --permanent --zone=public --add-port=80/tcp : 80번 포트 방화벽을 해제한다.
(--permanent : 영구적 설정, --zone=public : 외부 네트워크와의 통신을 범위로 지정)
7. firewall-cmd --reload : 방화벽 재시작 이제 서버 ip 주소로 접속해도 nginx 기본페이지가 등장할 것이다.
<nginx 80포트로 포워딩하기>
8. 로컬에서 cmd로 putty가 설치된 경로로 이동한다.
9. pscp 명령어로 jar 파일을 원격서버로 전송한다. => 원격 파일 전송
10. vim /etc/nginx/nginx.conf : nginx 설정파일 편집기로 열기
11. 'i' 눌러 편집모드로 진입
12. http { ... } 블록 내부의 server { ... } 블록 안에 아래의 설정을 추가한다.
location / { proxy_pass http://localhost:8080; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; }proxy_pass : http://localhost:8080 :
nginx를 리버스 프록시로 설정하고 해당 url로 요청을 전달
proxy_set_header X-Real-IP $remote_addr :
클라이언트의 실제 ip를 서버에 전달
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for :
클라이언트가 거쳐 온 모든 프록시 서버들의 정보를 백엔드 서버로 전달
proxy_set_header Host $http_host :
클라이언트의 요청에 포함된 원래 호스트명을 백엔드 서버로 전달
13. esc -> :wq! (저장 후 나가기)
14. service nginx restart : nginx 재시작
15. setenforce 0 : SELinux 해제 보안상의 이유로 포트포워딩을 막는 SELinux 기능을 해제하자.
(일시적인 해제이고, 영구적인 해제는 /etc/selinux/config 파일에서 설정을 변경해야 한다)
DB 서버 설정
<MySql 설치하기>
1. yum install mysql-server : mysql 설치한다.
2. systemctl start mysql : mysql 실행한다.
<권한 부여하기>
3. mysql -u root : root 계정으로 mysql에 접속한다. 'mysql>' 이 표시된다.
4. ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '[비밀번호]';
root 사용자는 로컬 호스트에서만 접속할 수 있고, 비밀번호를 설정한다.
5. FLUSH PRIVILEGES; : 새로 변경된 권한을 바로 적용한다. => 'exit' : mysql 나간다.
6. mysql -u root -p : 비밀번호 입력하여 로그인 한다.
7. CREATE USER 'root'@'[서버주소]' IDENTIFIED BY '[비밀번호]';
외부서버에서 접속하기위한 root 유저를 생성한다. 서버주소는 접속을 시도하는 외부서버의 주소를 적어준다.
8. GRANT ALL PRIVILEGES ON *.* TO 'root'@'[서버주소]' WITH GRANT OPTION;
root 계정에게 외부서버에서 접속하기 위한 권한을 준다. (모든 권한과 권한 부여 할 수 있는 권한까지 준다)
9. CREATE SCHEMA [스키마]; : 스키마를 생성한다.
10. USE [스키마]; : 스키마 사용한다.
11. 테이블 생성 (나는 JPA 자동 생성 기능을 사용)
<방화벽 설정>
12. firewall-cmd --zone=public --add-port=3306/tcp --permanent :
mysql이 사용하는 3306 포트접속 방화벽 해제한다.
13. firewall-cmd --reload : 방화벽 다시 로드
백엔드 서버에서 java -jar 명령어로 jar 파일을 실행시키면, 서버가 잘 작동하는것을 볼 수 있다.
'프로그래밍 > 배포' 카테고리의 다른 글
| [GithubActions] GithubActions로 Docker CI 구성하기 (0) | 2025.07.27 |
|---|---|
| [배포] jenkins 사용하여 배포 자동화 하기 (0) | 2024.07.27 |
| pscp명령어로 원격서버 <-> 로컬 파일전송하기 (0) | 2024.07.22 |
| [배포] Vultr 이용하여 간단한 프로젝트 배포해보기 (0) | 2024.07.18 |
| [배포] api 요청시 CORS 문제 (0) | 2024.07.16 |
