리디렉션 설정을 통해 ip를 주소창에 입력하면 저절로 도메인 주소로 넘어가게 설정할 수 있다.

 

1. nginx 설정 변경

$ sudo vi /etc/nginx/sites-available/default

 

 

아래와 같은 꼴로 블럭을 추가하면 된다.

 

server {

listen 80;

server_name aws IPv4 주소;

return 301 https://brynserver.site$request_uri;

}

 

+)301 리디렉션: 해당 URL이 영구적으로 새로운 URL

서버 및 클라이언트 언어에서 다른 수행 없이 곧 바로 리디렉션

302 리디렉션: 임시적으로 새로운 URL로 이동

$ sudo service nginx restart

 

 

이후, 아이피 주소로 접속해보면 도메인 주소로 변경돼있음을 확인 가능

개발용 서버와 배포용 서버를 분리하기 위해 서브 도메인을 적용해보자.

개발용 주소는 dev.도메인 주소로 설정하고 배포용 주소는 prod.도메인 주소를 사용하겠다.

이름은 취사 선택의 문제로 원하는 대로 설정해도 되며 필요에 의해 알맞는 이름으로 설정하면 된다.

1. 가비아에서 dns 추가

 

My가비아->도메인->해당 도메인 관리->DNS 정보->DNS 관리->DNS 설정

아래와 같이 레코드 추가하여 수정 후 저장

 

타입 : CNAME, 호스트 : prod, ,위치 : brynserver.site. , TTL : 3600

타입 : CNAME, 호스트 : dev, ,위치 :brynserver.site. , TTL : 3600

타입 : CNAME, 호스트 : www.prod, ,위치 : brynserver.site. , TTL : 3600

타입 : CNAME, 호스트 : www.dev, ,위치 :brynserver.site. , TTL : 3600

 

CNAME Canonical Name의 약자로 도메인 주소를 또 다른 도메인 주소로 매핑 시키는 형태의 DNS 레코드 타입

2. ec2 디렉토리 생성

root가 아닌 일반 계정에서도 디렉토리 생성할 수 있도록 권한을 변경해줘야 한다.

$ cd  /var/www/html
/var/www/html$ sudo chmod -R 777 .

 

뒤에 점 빼먹지 않게 조심

 

폴더를 각각 만든 후 거기에 페이지 실행 시 나오길 원하는 html 파일을 각각 만들어주면 된다. 

 

 

html 코드 예시도 밑에 첨부하겠다.

$cd product
$sudo vi index.html
//html 코드 작성
$cd ..
$cd develop
$sudo vi index.html
//hteml 코드 작성

html 코드 예시

<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title>브라우저 상단 탭 웹 사이트 제목</title>

  </head>

  <body>

    <h1>헤드 부분, 본문 제목 정도</h1>

    <p>본문 내용, 각 한글 부분 원하는 대로 작성해주시면 됩니다. </p>

  </body>

</html>

3. nginx 설정 변경

$sudo vi /etc/nginx/sites-available/default

$sudo vi /etc/nginx/sites-available/default

nginx 설정 파일에 아래 코드를 뒷부분에 추가 해주시면 됩니다.

index 다음에는 2번에서 만든 파일명을 적어주시면 됩니다.

이때 주의해야될 점은 원래 있던 server 블록과 괄호 유의하여 분리해줘야 됩니다!

server{

root /var/www/html/product;

index index.php;

server_name www.prod.도메인주소 prod.도메인주소;

location / {

try_files $uri $uri/ =404;

}



}

server{

root /var/www/html/develop;

index index.html;

server_name www.dev.도메인주소 dev.도메인주소;

location / {

try_files $uri $uri/ =404;

}

}

 

nginx 재시작

이때 재시작이 되지 않는다면 설정파일에 오타가 있거나 블럭을 제대로 구분해주지 않은 거니 다시 들어가서 수정해줘야한다.

$sudo service nginx restart

 

 

 

4. 서브도메인 정상 작동 확인

 

이후 서브도메인 주소로 실행해보면 제대로 작동함을 확인 가능

 

1. cerbot 설치

우분투 20.04 버전

$ sudo apt-get update

$ sudo apt-get install software-properties-common

$ sudo add-apt-repository universe

$ sudo apt-get install certbot python3-certbot-nginx

 

우분투 18.04 버전

$ sudo apt update

$ sudo apt upgrade

$ sudo add-apt-repository ppa:certbot/certbot

2. nginx 설정 변경하기

$ sudo vi /etc/nginx/sites-available/default

 

각 블럭의 server_name 부분 아래와 같이 형식으로 변경

server_name www.brynserver.site brynserver.site;

server_name www.prod.brynserver.site prod.brynserver.site;

server_name www.dev,brynserver.site dev.brynserver.site;

$ sudo nginx -t

$sudo systemctl reload nginx

 

3. TLS 인증서 받기

TLS: SSL(Secure Sockets Layer)이라고도 하며 Client와 웹서버 간의 데이터들을

안전하게 주고 받기 위해 암호화 통신하는 프로토콜

 

아래와 같은 꼴로 원하는 도메인 주소들 인증서 받는 명령어 입력

$ sudo certbot --nginx -d www.brynserver.site -d brynserver.site  -d www.prod.brynserver.site -d prod.brynserver.site

이후 질문들 아래와 같이 답변

이메일 입력, a, n, 2(리다이렉션)

 

4. aws ec2 https용 인바운드 규칙 수정

 

aws에서 인바운드 규칙 추가하여 포트 열어줘야 함. 443포트

5. https 정상 구동 확인

https://www.ssllabs.com/ssltest/ 사이트에서 제대로 설치됐는지 확인

 

 

1. 가비아에서 도매인 구매

https://domain.gabia.com/?gclid=Cj0KCQjw8vqGBhC_ARIsADMSd1CvJEivLphYJmveF220BOvlnn5jfFCOI6b0SmFjrwvBQ-iMaMtbeh8aAv2rEALw_wcB 

 

가비아: 대한민국 도메인 점유율 1위

대한민국 100만 도메인 등록 업체

domain.gabia.com

.shop이나 .site로 끝나는 도메인들이 저렴한 편 

회원 가입 후 도메인 탭에서 원하는 도메인을 선택해서 결제를 진행하면 된다.

 

2. AWS ec2 서버와 도메인 연결

My가비아->도메인->해당 도메인 관리->DNS 정보->DNS 관리->DNS 설정

아래와 같이 레코드 추가하여 수정 후 저장

 

A타입 레코드: DNS에 보관되는 정보 타입으로 도메인과 서버의 IP 주소 직접 매핑

타입 : A, 호스트 : www , ,위치 : AWS EC2 인스턴스 IPv4 외부 주소 입력, TTL : 3600

www: world wide web

타입 : A, 호스트 : @ , ,위치 : AWS EC2 인스턴스 IPv4 외부 주소 입력, TTL : 3600

 

해당 레코드 추가 과정을 통해 www.도메인주소와 도메인주소를 통해 ec2 서버에 접근할 수 있다.

 

3. 도메인 정상 작동 확인

 

도메인으로 접속시 아래와 같이 오류없이 작동함.

아직 http로 통신해서 주의 요함이 뜨며 해당 welcome to nginx! 페이지는 이전에 nginx를 설치해서 자동으로 뜨는 페이지이다. 이 페이지가 뜨지 않고 연결이 실패했습니다와 같은 페이지가 뜨면 연결이 제대로 되지않은 거다.

 

WinSCP란?

Microsoft Windows용 무료 오픈소스 SFTP, FTP, WebDAV, Amazon S3 및 SCP 클라이언트 프로그램

필자는 이 게시물에서 SFTP 사용할 예정

SFTP란?

SSH 파일 전송 프로토콜/ 보안 파일 전송 프로토콜/ 비밀 파일 전송 프로토콜

보안 네트워크 연결을 통해 보안이 강한 파일 액세스, 관리 및 데이터 교환을 가능하게하는 네트워크 계층 프로토콜

 

1. WinSCP 5.19 다운

https://winscp.net/eng/index.php

WinSCP로 서버에 접근하면 임대한 서버의 파일 상태를 볼 수 있음

 

2. WinSCP 설정

실행 후 새로운 세션 클릭

 

호스트 이름: ec2 아이피 주소

포트 번호: 22

사용자 이름: ubuntu ->우분투 20.04 인스턴스를 임대받았기때문에

고급 클릭

SSH 인증 탭에서 ec2 생성 당시 다운받은 개인키 넣어주기

 

 

설정을 마친 후 로그인하면 아래와 같은 화면이 뜸

왼쪽은 내 컴퓨터의 디렉토리 오른쪽은 aws의 디렉토리

빨간색 동그라미 친 부분을 클릭하면 aws서버의 터미널에 PuTTY를 이용해 접근할 수 있음

 

이때, PuTTY가 깔려있지않다면 따로 설치해야함

 

 

2. Nginx 설치

$ sudo apt update

$ sudo apt install nginx

이후 aws로 임대받은 서버(public IPv4)에 접속해보면 사이트에 접속할 수 없다는 오류가 뜸

aws에서 인바운드를 보면 22번 포트만 열려있으므로 오류가 발생하는 것

(WinSCP는 포트를 22번으로 설정했었기 때문에 사용이 가능했던 것임.)

 

aws 인바운드 규칙 추가

보안 그룹 및 파란색 링크->인바운드 규칙 편집

위치 무관으로 HTTP PORT:80 인바운트 규칙 추가(위치 무관으로하면 보안상으로 좋지는 않음)

이후 aws로 임대받은 서버(public IPv4)에 접속해보면 잘 뜸을 확인할 수 있음

 

3. 기본 jdk 패키지 설치

스프링 부트 프로젝트를 만들거기 때문에 자바를 설치해줬다.

아래 명령어로 설치 가능한 java 리스트 검색

sudo apt install default-jdk //현재 디폴트 open jdk 버전을 자동으로 설치해준다.
java -version // 다운 받은 jdk 버전 확인

 

4. 서버 타임존 변경

ec2 서버의 기본 시간은 미국 시간으로 한국 시간으로 변경해줘야 한다.

푸티에 아래 코드 입력

sudo rm /etc/localtime

sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

참고 사이트

https://mchch.tistory.com/223

https://seongbindb.tistory.com/138

/  루트 디렉토리, 리눅스 모든 디렉토리의 출발점
   빈 상태 유지하는 게 바람직
/bin 사용자 명령어 디렉토리 실행 파일들 
/boot 부트 이미지 디렉토리
        부팅 과정에서 필요한 구성요소들 포함
/dev 장치 파일 디렉토리
       디바이스 드라이버
/etc 시스템 환경 설정
      시스템 부팅, 셧다운에 필요한 파일들
      시스템 전반에 걸친 설정 파일들
      초기 스크립트 파일들
/home 사용자 홈
/lib 공유 라이브러리 및 커널 모듈
/lost+found 파일 시스템 복구를 위한 fsck 링크 
/misc 시스템 아키텍쳐와 무관한 프로그램 및 자료들  
/mnt 마운트 포인트
/opt 애드온 소프트웨어 패키지 
/proc 커널과 프로세스를 위한 가상 파일 시스템
/sbin 시스템 관리를 위한 전반적인 실행 유틸리티 
/tmp 임시 작업들
       프로세스 진행 중 발생하는 임시 파일들이 저장
/usr 공유 파일 시스템 
      사용자가 실행할 프로그램들이 저장됨 시스템이 실행x 
      중요한 시스템 디렉토리 계층
      공유 가능한 대다수 프로그램들이 설치
      네트워크를 이용해 시스템들을 연결시 이 디렉토리를 공유해서 설치된 프로그램들을 활용
      읽기 전용으로 마운트
/usr/bin 시스템 소유 소프트웨어를 담기 위한 warehouse
/usr/etc 유틸리티와 파일들
/usr/include c컴파일러를 위한 include 파일들 포함함
/usr/lib 프로그램 컴파일 시 이 위치의 파일들과 link

           실행코드 필요시 /lib를 찾음
/usr/local 시스템의 특성 결정 짓는 소프트웨어들 존재
              반드시 필요로 하는 것은 아님 
/usr/man 실제적인 man page
/usr/src 프로그램들의 컴파일 되지 않은 소스 코드들
/usr/infi GNU info를 위한 디렉토리
/var 가변 자료 디렉토리

+ Recent posts