이번 UMC SEVER 파트 실습은 2가지다. 물론 1가지 챌린지 과제가 있긴 하지만, 이건 마무리가 안되서 이번주 내로 작성해보겠다.
먼저 첫 번째 파트는 저번에 만든 EC2 인스턴스에 서버 환경을 구축하는 것이다.
서버 환경 구축에는 아래와 같은 것들이 포함된다.
- 웹 서버 nginx를 설치한다.
- BL로 php를 설치한다.
- DB로 MySQL을 설치한다.
- nginx와 php를 연동한다.
두 번째 파트는 가이아에서 도메인을 구매하고 ip와 연결하는 것이다. 리다이렉션까지 진행해 볼 것이다.
이제 본격적으로 서버 환경 구축을 시작해보겠다.
1. EC2 인스턴스에 서버 환경 구축
이제 저번에 만든 인스턴스에 접속해보자.
터미널을 이용해 debin.pem이 있는 디렉토리로 이동해서 AWS 연결 부분에서 ssh 명령어를 터미널에 복붙한다.
필자의 경우는 아래와 같은 명령어다.
ssh -i "debin.pem" ubuntu@ec2-3-37-93-84.ap-northeast-2.compute.amazonaws.com
그러면 아래와 같이 터미널로 인스턴스 접속에 성공한다.
이제 우리 인스턴스에 접속했으니 서버 환경을 구축해보자.
아래와 nginx 설치에서는 같은 순서를 준수하자.
- 터미널에 sudo apt update 입력
- 터미널에 sudo apt install nginx 입력
- nginx -v 로 잘 설치되었는지 확인
이번에는 MySQL 설치다. 다음과 같은 순서를 준수하자.
- 터미널에 sudo apt install mysql-server 입력
- sudo mysql_secure_installation으로 보안 설정
- 본인이 설정할 보안 단계에 따라 단계를 설정. 본인은 Low로 설정하고 비밀번호를 넣었다.
- 이후에는 계속 y를 누르다가,
- Disallow root login remotely 질문은 외부 접속을 위해 n을 눌러준다.
- 마무리되면 터미널에 sudo mysql -u root -p 입력. 이 후 비밀번호를 입력하면 MySQL에 접속한다.
이번에는 PHP를 설치해보자.
- 터미널에 sudo apt install php-fpm php-mysql 입력
- php -v로 잘 다운로드 되었는지 확인한다.
이제 아이피로 접속해보자. 그러면 nginx에서 제공하는 index 페이지를 확인할 수 있을 것이다.
이제 마지막으로 phpinfo 화면을 띄워보자.
nginx의 기본 경로는 /var/www/html 이다. 이제 아래와 같은 순서를 따르자.
- /var/www/html 디렉토리로 이동.
- phpinfo.php 파일을 작성.
- 이제 nginx와 php를 연동할 차례다.
- nginx의 기본 설정 경로는 /etc/nginx/sites-available이다. 여기에서 vi로 default 파일을 열자.
- 그러면 아래와 같이 변경하자.
location ~ \.phhp${
include snippets/fastcgi-php.conf;
#
# 주석 부분은 생략함
#
fastcgi_pass unix:/var/run/php/php7.2-fmp.sock;
위 설정만 수정. 본인 php 버전은 7.2이므로 이렇게 수정했다.
#
#
} //주석 제거
- 이제 /etc/nginx 로 가서 sudo vi nginx.conf 명령어를 입력
- 여기서도 아래와 같은 주석을 해제한다.
server_names_hash_bucket_size 64;
이 부분의 주석을 푼다.
- 설정 파일을 변경했으므로 테스트를 하고 재시작을 해야한다.
- 터미널에 sudo nginx -t 입력
- 터미널에 sudo service nginx restart 입력
- 이제 본인 인스턴스 아이피/phpinfo.php를 입력하면 phpinfo.php가 뜬다.
- 아래는 성공 화면이다. php와 nginx 연동을 성공했다!!!!
2. 아이피와 도메인 연결하기
이제 우리가 만든 인스턴스 아이피와 도메인을 연결할 것이다. 먼저 도메인을 구입해야 한다.
가비아 홈페이지로 들어가서 회원 가입을 하고 도메인을 구매하자.
웹을 넘어 클라우드로. 가비아
그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브
www.gabia.com
참고로 .shop으로 1년을 구매하면 550원 비용만 드니까 이걸로 꼭 진행하자!!! 다른 도메인은 너무 비싸다..
구매를 했다면 My가비아로 이동해서 DNS 관리툴로 들어가자. 그럼 구입한 도메인이 보이고 설정이 보인다.
설정을 누르고 레코드를 수정을 누르자. 레코드를 추가한다. 아래와 같이 추가하자.
서브 도메인까지 작성했다. 이제 몇 가지 부분을 정리 하자.
- @는 www를 하지 않아도 바로 연결된 아이피로 보내준다.
- 각 위치는 인스턴스의 아이피를 넣는다.
- TTL(Time to Live) - 여기서는 DNS 값을 전송했을 경우, 결과 값이 캐시에 저장되는 시간이라고 이해했다.
- DNS 서버는 호스트 네임을 IP로 매핑하기 위한 자원 레코드를 저장한다.
- 자원 레코드는 Name, Value, Type, TTL로 구성된다.
- Type = A는 Name는 호스트 네임, value는 호스트 네임에 대한 IP 주소다. ex(debinserver.shop, 3.37.93,84)
- Type = CNAME이면 Value는 별칭 호스트 네임 Name에 대한 정식 호스트 네임이다. ex( foo.com, relay1.bar.foo.com)
도메인과 연결하려면 서버 설정 파일에서 몇 가지를 추가해야 한다.
다시 /etc/nginx/sites-available 디렉토리로 들어가 sudo vi default로 설정 파일을 수정하자.
아래와 같이 작성하자.
server_name debinserver.shop www.debinserver.shop
서버 네임에 연결할 도메인을 적는다
이제 esc를 누르고 :wq를 누르고 저장하고 나오자.
마찬가지로 sudo nginx -t 로 테스트를 하고 sudo service nginx restart로 재시작을 한다. 그럼 도메인으로 접속을 하면
아까 본 nginx 인덱스 페이지가 나온다. 아래는 도메인에서 phpinfo.php이 뜬 모습이다.
그럼 이제 서브도메인도 연결해서 다른 페이지를 띄워보자.
먼저 nginx 기본 경로에 dev와 prod 디렉토리를 만든다.
각각의 디렉토리에서 index.html을 만들고, 서브 도메인을 알아볼 수 있는 텍스트를 작성하자.
이제 서버 블록을 만들고 연결해주면 된다.
nginx 기본 설정 파일로 가서 서버 블록을 만들자. 아래 이미지 처럼 작성하자
이후 다시 nginx를 테스트 후 재시작을 하자. 그 후 서브 도메인으로 접속하면 우리가 작성한 HTMl 파일을 볼 수 있다.
이제 마지막으로 리다이렉션을 해보자. 아이피로 접속을 하면 무조건 도메인으로 들어가게 만들자.
서버 설정 파일에서 서버 블록을 추가적으로 작성해주면 된다. 아래와 같이 작성하자.
이제 아이피로 접속을 하면 도메인으로 리다이렉션 된다.
이렇게 모든 실습을 성공적으로 마무리했다!!!!!!
이제 남은 3주차 챌린지 과제를 하러 가야겠다.. 총총...
이만 포스팅을 마치겠습니다!
댓글