일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- dart
- 재귀함수
- Flutter
- 재귀
- D1
- 그리디
- 브루트포스
- BOJ14889
- C++
- 동적프로그래밍
- DP
- 해시해킹
- 삼성
- 백준
- Crossfit
- sw expert academy
- 26008
- spring boot
- 15662
- 1로만들기2
- 서울에서경산까지
- 회전하는큐
- Python
- 1781
- 4811
- 스택
- BOJ
- 크로스핏
- 14863
- 15353
- Today
- Total
곧죽어도 콛잉
#01 우분투 홈서버 구축기 - 개요 본문
백엔드 서버를 배포해야하는 상황이 왔다.
배포 정말 싫어하고 힘들지만 ,, 아니 사실은 네트워크가 싫은 것 같다 ...ㅋㅋㅋㅋㅋ
어쨋거나 AWS이나 외부 클라우드를 쓸까 했는데 가격이 너무 비싸다보니 집에 돌아댕기는 게이밍 컴퓨터에 리눅스를 설치해서
서버 배포를 해볼까하고 시작했다!
게다가 컴공과면 당연히 서버는 구축해봐야지~ 라는 마인드로 충동적으로 시작했다.
일단 뭣도 모르고 우분투 설치부터 시작했다.
https://cowhacker.tistory.com/87
위 링크를 참고해서 쓰기 시작했다!
일단 저 글 작성자에 따르면 서버 구축의 기본 준비물은
1. 하고 싶은 마음
2. 남는 컴퓨터 or VM
3. 공유기
4. 옵션) 비어있는 usb (우분투 설치용)
이다.
그럼 시작해보자.
시작전에 이야기하고 싶은 부분은 꼭 서버 배포에 우분투가 필요한 건 아니다. 내가 shell을 편하게 쓰고 싶어서 그런거지, 사실 윈도우로 서버 배포를 해도 아무 상관없다. 인턴하면서 깨달은 부분이다. 사내 사설 서버는 생각보다 윈도우를 쓰는 경우가 꽤 있던 것 같다.
서버 구축은 다음과 같은 방식으로 진행된다.
- 우분투 설치
- 포트포워딩
- 포트포워딩한 번호로 Spring boot 서버 실행
그리고 추가적으로, 이번에는 gihub actions을 통한 CI/CD까지 진행해보겠다.
우분투 설치
현재 상황은 노트북에는 이미 윈도우가 설치돼있고, 항상 윈도우로 부팅을 한다.
따라서 윈도우를 삭제하는 대신 다른 드라이브에 우분투를 설치하고 해당 우분투로 부팅할 수 있게 해줘야한다.
우분투 설치는 간단하다.
비어있는 usb에 우분투 iso를 담아서 설치해주면 된다.
https://www.google.com/search?client=safari&rls=en&q=%EC%9A%B0%EB%B6%84%ED%88%AC&ie=UTF-8&oe=UTF-8
ui가 싫으면 없는 버전으로 설치하면 된다. 그러나 난 ui가 없으면 ... 힘들어서 ...
이거는 인터넷 검색으로 진행하는게 편할 것이다.
컴퓨터 제조사마다 바이오스 접근 방식이 다르고, 바이오스 설정 방법도 다르기 때문이다.
그래도 일단 설치를 하고 나서 우분투로 우선순위로 부팅하는 방식은 바이오스에서 설정할 수 있으므로 이 부분은 검색을 통해 해결하자!
포트포워딩
포트포워딩은 많은 사람들이 처음 접할 때 어렵게 느끼는 개념이다. 컴퓨터 제조사마다 BIOS 접근 방식이 다르듯, 공유기 설정 방식도 제조사마다 다르다. 하지만 기본 개념을 이해하면 어렵지 않게 설정할 수 있다.
포트포워딩이란 무엇일까?
쉽게 말해, 포트포워딩은 외부에서 내 컴퓨터에 접근할 수 있도록 길을 여는 작업이다.
보통 집에서 인터넷을 쓸 때 우리는 공유기를 통해 인터넷에 연결된다. 이때 공유기는 “외부 IP”라는 것을 갖습니다. 외부에서 우리 네트워크로 접근하려면 이 외부 IP를 통해야한다.
하지만 집 안에는 노트북, 핸드폰, TV 셋톱박스, 태블릿 등 다양한 기기가 공유기의 와이파이를 통해 인터넷에 연결된다. 여기서 의문이 생긴다.
“외부에서 접근할 때 공유기의 외부 IP를 쓴다고 했는데, 그럼 집 안의 모든 기기가 외부 IP를 하나씩 갖고 있는 걸까?”
아니다.
외부 IP는 공유기 전체에 하나만 할당된다. 내부의 모든 기기는 공유기로부터 “내부 IP”라는 것을 할당받아 인터넷에 연결된다.
외부 IP와 내부 IP의 차이
• 외부 IP: 공유기가 외부 인터넷과 통신하기 위해 사용하는 IP이다. 외부에서는 이 IP를 통해 우리 집 네트워크에 접근한다.
• 내부 IP: 공유기에 연결된 노트북, 핸드폰 등 개별 기기에 할당되는 IP이다. 이 IP는 공유기 안에서만 사용된다.
쉽게 말해, 외부에서 보면 공유기의 외부 IP만 보이고, 내부에 있는 모든 기기는 외부에서 직접 접근할 수 없다. 이는 NAT(Network Address Translation, 네트워크 주소 변환) 덕분에 가능해진다. NAT는 하나의 외부 IP를 여러 개의 내부 IP로 변환해주는 역할을 한다.
포트포워딩이 필요한 이유가 바로 여기서 나타난다.
포트포워딩이란, “외부 IP + 포트 번호”를 “내부 IP + 포트 번호”로 연결해주는 것이다.
예를 들어, 집 안의 컴퓨터에서 서버를 실행한다고 가정해보자. 이 서버는 내부 IP(예: 192.168.0.10)에서 8080 포트로 동작한다. 하지만 외부에서는 이 서버에 직접 접근할 수 없다. 이때 포트포워딩을 설정해 외부 IP의 3000번 포트를 내부 IP(192.168.0.10)의 8080번 포트와 연결해주면, 외부에서 "외부 IP:3000"으로 접속했을 때 내부 서버로 연결된다.
쉽게 이해하는 포트포워딩 흐름
1. 외부 IP: 공유기에 할당된 IP. (예: 123.45.67.89)
2. 내부 IP: 공유기에 연결된 기기에 부여된 IP. (예: 192.168.0.10)
3. 포트포워딩 설정:
• 외부에서 123.45.67.89:3000으로 요청 → 공유기 → 내부 192.168.0.10:8080으로 전달
추가적으로, 포트포워딩의 보안상 주의점은 다음과 같다.
포트포워딩은 매우 유용하지만, 외부에서 내부 네트워크에 접근할 수 있도록 허용하는 것이기 때문에 보안에 취약할 수 있다.
• 불필요한 포트는 열지 않기
• 기본 포트(80, 22 등)는 피하고, 임의의 포트를 사용하기
• 서버에 방화벽을 설정해 허용된 IP만 접근 가능하도록 제한하기
여기까지 포트포워딩 개념을 이해했다면 다음 글에서는 직접 포트포워딩을 진행해보자!