2022. 11. 19. 22:41ㆍWEB개발/TIL
서버
: 클라이언트에게 네트워크를 통해 서비스를 제공하는 컴퓨터
서버 구축 방법
1) 본인의 컴퓨터를 직접 서버로 구축하는 방법
2) 일정 요금을 내고 외부 서버를 임대해 사용하는 방법
- 서버 호스팅
: 서버 한 대(물리적으로 존재하는 컴퓨터 한 대)를 통째로 임대하는 방법
자체적인 관리 필요
# 컴퓨터의 작동 환경을 마음껏 유동적으로 설정 가능
# 웹 호스팅에 비해 가격이 비쌈
- 웹 호스팅
: 서버 한 대의 일정 저장공간만 임대하여 다른 사용자들과 해당 서버를 공유하는 방법
# 서버 호스팅에 비해 가격이 저렴함
# 서버 자체를 웹 호스팅 사에서 운영(쉽게 이용 가능함)
# 트래픽, 용량 등 사용상의 제약이 있을 수 있음
클라우드 서버
: 실제 물리적인 컴퓨터 한 대로 서버를 운영하는 것이 아닌 VM(Virtual Machine; 가상머신)으로 서버를 운영하는 방식
- 프로그램으로 가상의 컴퓨터(서버)를 하나 생성해 이용하는 방법
[ 장점 ]
1) 짧은 시간 안에 서버를 하나 뚝딱 만들 수 있음
2) 물리적인 컴퓨터 한계를 넘어 무한대의 저장 공간을 이용할 수 있음
3) 이론상 아무리 접속량이 많아도 다운되지 않는 서버를 만들 수 있음
[ 클라우드 모델 ]
- 퍼블릭 클라우드
: 특정 기업이나 사용자를 위한 서비스가 아닌 인터넷에 접속 가능한 모든 사용자를 위한 클라우드 서비스 모델
불특정 다수에게 컴퓨터 자원(서버, 스토리지 등)을 빌려주는 형태
ex) 아마존 웹 서비스(AWS)의 EC2가 대표적
- 프라이빗 클라우드
: 제한된 네트워크 상에서 특정 기업이나 특정 사용자만 대상으로 하는 클라우드 서비스 모델
기업의 내부 클라우드 서비스 구축 및 활용, 기업 내부에 구축되어 있어 기업만이 자원을 제어할 수 있음
- 하이브리드 클라우드
: 퍼블릭 클라우드와 프라이빗 클라우드를 병행해 사용하는 방법으로 알려졌으나 최근에는 클라우드(가상 서버)와 온프레미스(물리 서버)를 결합한 형태를 말하기도 함
서버 구축(NCP이용, 무료)
참고) https://guide.ncloud-docs.com/docs/compute-compute-1-1-v2
Naver Cloud Platform(NCP) 접속
> 콘솔 클릭
> Platform 메뉴의 Classic 클릭하여 Classic환경으로 변경
> Services > Compute > Server 메뉴를 차례대로 클릭
> 서버 생성 버튼 클릭
- 부팅 디스크 선택: 50GB
- OS 선택: 리눅스 운영체제 중 Ubuntu 18.04 버전 선택
- 서버 타입: micro ( 미선택 시 요금 부과 )
>>> 다음페이지
- 서버 설정: Zone 서버 위치 결정 ( kr로 시작하는 것은 서버를 한국에 위치시키겠다는 것 )
- ZONE 이 1과 2로 나뉘어져 있는 이유는 “가용성 영역(Availability zone)”이라는 것을 나눈 것
- 데이터 센터 오류로 인한 가동 중지 시간이 발생했을 경우 데이터를 보호하기 위함이며, 같은 지역 내의 데이터 센터를 물리적으로 분리해 데이터를 보호함
- 스토리지
- HDD: SSD보다 성능이 좋지 않은 것. 1년 무료 사용 가능한 micro 서버에서 사용 가능
- SSD: HDD보다 성능이 좋지만 micro 서버에서 사용 불가능(요금 부과)
- 서버 이름: 자유롭게 지정
- 반납 보호
>>> 다음페이지
- 인증키
- 나중에 본인의 서버의 관리자임을 증명할 일이 생겼을 경우, 사용하기 위한 키(key)파일
- 보관 필수!
- pem인증키 파일이 생성됨
>>> 다음페이지
방화벽 관련 참고) https://guide.ncloud-docs.com/docs/compute-compute-2-3
- ACG(방화벽)
- 어떤 포트를 개방할 지 설정하는 방화벽
- 보유하고 있는 ACG 중에서 선택 → default-acg
- 서버 생성 후 22번 포트 활성화(TCP, 0.0.0.0/0, 22)
>>> 서버 생성!
서버 관련 참고) https://guide.ncloud-docs.com/docs/ko/compute-server-manage
>>> 서버 생성 후 공인 IP 신청하기
공인 IP 관련 참고) https://guide.ncloud-docs.com/docs/ko/compute-compute-2-1-v2
- 첫 가입시 무료로 증정하는 크레딧 사용하면 무료로 이용 가능
서버 접속
PuTTY
: 원격 프로토콜을 사용하기 위한 틀 또는 프로그램
- 여러 프로토콜 중 SSH 프로토콜을 사용하여 window 환경에서 리눅스를 작업할 때/접속할 때 사용하는 툴
프로토콜? 컴퓨터와 컴퓨터, 컴퓨터와 서버 등 통신을 하기 위한 통신 규약
PuTTY 사용방법
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
>> package files에서 컴퓨터 사양에 맞는 파일 다운로드 하기
>>> 열기
- Host Name: 본인 IP주소 넣기
- Port: 22번 포트로 열기
- Connection type: SSH
- Saved Sessions: 저장하고 싶은 이름으로 자유롭게 지정
>>>
- 처음 IP 접속 시 뜨는 창 > Accept버튼 클릭
[ 서버 비밀번호 변경하기 ]
- NCP 들어가기
- Server에서 비밀번호 확인(사진 참고)
- PuTTY 실행하여 서버 접속
- login 후 passwd 명령어 입력
- 새로운 비밀번호 설정
서버 설정
웹 서버
- 소프트웨어 측면: 웹 서버는 HTTP와 같은 프로토콜을 통해 넘어 온 클라이언트의 요청에 HTML과 같은 웹 페이지로 응답하는 소프트웨어 ex) nignx, apache
- 하드웨어 측면: nignx나 apache와 같은 소프트웨어가 실제로 동작하고, 웹 페이지의 데이터를 실제로 저장하는 서버(컴퓨터)를 의미
- 웹 서버는 인터넷에 연결되어 IP주소로 식별되고, 이 주소를 통해 클라이언트와 연결
Apache
: http 표준을 준수하도록 구축된 오픈 소스 형식의 웹 서버
[ 설치 방법 ]
- PuTTY 열기
> apt-get update 입력
> apt-get install apache2 입력
설치 후 Apache 상태 확인하는 방법
: systemctl status apache2 입력
- ACG설정을 통해 80번 포트 활성화(TCP, 0.0.0.0/0, 80)
- 웹 브라우저에서 IP 접속하기: http://IP주소/
FileZilla
: FTP(File Transfer Protocol; 파일 전송 프로토콜)로 서버에 있는 파일을 컴퓨터로 받을 수 있으며 컴퓨터에서 파일을 수정 후 다시 서버로 업로드 가능하게 함.
[ 사용 방법 ]
https://filezilla-project.org/ 접속
>> "DownloadFileZilla Client" 클릭 후 파일 다운로드
>>> 열기
>>> 연결 완료!
IP주소
: 데이터를 주고 받기 위해 사용되는 주소(address)
[ 공인 IP vs 사설 IP ]
- 공인 IP
외부에 공개되어 있는 IP
서버 구축을 위해 사용하고, 우리가 서버에서 사용하는 것도 공인 IP
공개되어 있기 때문에 누구나 검색, 접근 가능
- 사설 IP
로컬 IP, 가상IP 라고 불리며, 외부에서 접근할 수 없는 IP
IPv4 체계의 IP 주소 부족 문제를 해결할 수 있는 방안
[ 유동 IP vs 고정 IP ]
- 유동 IP
: 기기에 고정적으로 IP를 부여하지 않고 IP갱신 주기가 되었거나 기기를 껐다 켰을 때 남아 있는 IP를 골라 IP를 할당해주는 것
ex) 와이파이 공유기
- 고정 IP
: 사용자가 직접 IP 주소를 입력해 주소를 설정하는 방식
IP를 한 번 부여 받으면 반납 전까지 해당 IP를 할당받음.
[ 도메인(Domain) ]
: 웹 브라우저를 통해 특정 사이트를 집입할 때 IP 주소를 대신해 사용하는 주소
- 한 눈에 파악하기 힘든 IP 주소를 보다 분명하게 나타내기 위해 사용
ex) 카페24, 호스팅KR 등
[ DNS(Domain Name System) ]
- IP 주소와 특정 도메인 주소가 같다는 것을 지정해두고, 인터넷 사용자들이 도메인 주소를 검색했을 때 IP 주소로 연결되도록 해주는 것
'WEB개발 > TIL' 카테고리의 다른 글
Node.js(정의, 특징, 사용방법, REPL) (0) | 2022.11.21 |
---|---|
개발이론 및 git 추가 정리(branch, merge) (0) | 2022.11.19 |
JQuery 이벤트 리스너 (0) | 2022.11.16 |
JQuery (0) | 2022.11.16 |
프레임워크와 라이브러리 (0) | 2022.11.16 |