YS's develop story
(Rp2기 2주차 과제 - part 2) AWS EC2를 이용한 ubuntu 서버 구축, WinSCP를 이용하여 AWS 인스턴스에 nginx,php,MySQL 설치 및 DataGrip을 이용하여 MySQL 외부 접속 해보기 본문
(Rp2기 2주차 과제 - part 2) AWS EC2를 이용한 ubuntu 서버 구축, WinSCP를 이용하여 AWS 인스턴스에 nginx,php,MySQL 설치 및 DataGrip을 이용하여 MySQL 외부 접속 해보기
Yusang 2021. 1. 14. 08:37두 번째 과제
1. AWS EC2를 이용한 ubuntu 서버 구축.
2. WinSCP를 이용하여 AWS 인스턴스에 nginx, php, mysql 설치.
3. datagrip을 이용하여 mysql 외부 접속해보기.
1. AWS 서버 구축
우선 아래 AWS 홈페이지에 들어가서 회원가입을 해 줍니다.
EC2 서비스 클릭
인스턴스 - 인스턴스 시작
많은 AMI가 있지만 프리 티어 사용 가능한 Ubuntu Server 18.04 LTS를 선택했습니다.
새 키 페어를 생성하고 다운로드를 해 줍시다.
아래의 링크에서 PuTTY를 설치해 줍시다.
MSI 64-bit를 설치하면 됩니다.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
PuTTY는 대표적인 원격 접속 프로그램입니다.
가장 많이 사용되는 프로토콜인 SSH, Telnet, Serial 등을 지원합니다.
다음은 Winscp를 아래의 링크에서 설치해 줍시다.
https://winscp.net/download/WinSCP-5.17.9-Setup.exe
Winscp를 실행하여 AWS에서 생성한 인스턴스의 IPv4 주소를 복사하고 호스트 이름에 입력해 줍시다.
사용자 이름은 ubuntu일 경우 ubuntu이기 때문에 이를 입력해 주면 됩니다.
비밀번호는 입력하지 않아도 됩니다.
또한 고급 - 인증 - 개인키 파일에서 아까 다운로드한 새 키 페어를 지정해 줍시다.!!
그리고 로그인을 하게 되면 아래와 같은 화면을 확인할 수 있습니다.
AWS로 빌린 ubuntu를 폴더 구조로 확인할 수 있게 된 겁니다~
그리고 아래의 버튼을 누르게 되면 아래와 같이 터미널 창이 뜨게 됩니다!
2. WinSCP를 이용하여 AWS 인스턴스에 nginx, php, mysql 설치
패키지 관리자를 이용해서 nginx를 설치해 줍시다.
sudo apt update
sudo apt install nginx
nginx를 설치 후 연결이 되었는지 확인을 하고자 AWS의 퍼블릭 IPv4 주소를 복사해서
입력했으나 정상적으로 연결이 되지 않습니다.
그 이유는 AWS 인바운드 규칙에 22번 포트밖에 열려있지 않아서 그렇습니다.
인바운드 규칙 편집을 통해 HTTP 유형을 추가해 줍니다.
이제 다시 AWS의 퍼블릭 IPv4 주소를 입력하게 되면 아래와 같이 성공적으로 화면이 출력됩니다.
이제 mysql을 설치해 줍시다.
그리고 mysql과 nginx가 php와 연결될 수 있도록 하는 php-fpm를 설치해 주어야 합니다.
sudo apt install mysql-server
sudo apt install php-fpm php-mysql
아래의 경로로 이동해 ls 명령어를 사용하면 아래와 같은 파일을 볼 수 있습니다.
이것이 우리에게 보이는 html 파일입니다.
아래와 같이 명령어를 입력해서 index.php라는 php 파일을 만들어 줍시다.
cd /var/www/html
sudo vi index.php
이제 AWS의 퍼블릭 IPv4 주소/index.php를 입력하게 되면 아래와 같이 화면이 출력됩니다.
이제는 phpinfo 파일이 페이지에 뜨도록 연동을 해 봅시다.
아래 명령어를 통해 파일을 조금 수정해 봅시다.
sudo vi /etc/nginx/sites-available/default
파일을 내리다 보면 기본 root html로 설정된 파일을 볼 수 있습니다.
이 파일을 변경한다면 메인으로 보이는 파일을 변경할 수 있겠죠?
우리가 수정해야 할 부분은 이 부분입니다
아래와 같이 주석을 없애주고 버전을 바꿔 줍시다.
설정 파일을 바꾸었으니 nginx를 재시작해줍니다.
nginx를 재시작하는 명령어입니다.
sudo service nginx restart
IPv4 주소/index.php를 다시 입력하면...
아래와 같이 성공적으로 화면이 출력됩니다!!
3. datagrip을 이용하여 mysql 외부 접속해보기
데이터 베이스를 효과적으로 다루기 위한 IDE DataGrip을 아래에서 다운로드합시다.
학생 메일을 등록하면 무료로 사용할 수 있으니 학생 등록을 하시고 사용하면 됩니다.
https://www.jetbrains.com/ko-kr/datagrip/
AWS의 인바운드 규칙 편집을 통해 MYSQL 포트를 열어 줍니다.
참고로 저는 3306이 아닌 다른 포트를 열었다가 왜 연결이 안 되는 거지 하고 한참을 헤맸습니다. ㅠㅠ
MySQL을 설치하면 기본적으로 로컬에서만 접속이 가능하고 외부에서는 접속이 불가능하게 되어 있기 때문에 MySQL의 설정을 변경해야 합니다.
MYSQL 사용자를 추가하고 권한을 부여해야 합니다.
아래를 참고해서 사용자를 생성하고 권한을 부여하였습니다.
Ubuntu에서 MySQL설치, MySQL 사용자 생성, 확인 및 권한 부여하기
아래와 같이 명령어를 통해 사용자 아이디를 생성하고 권한을 부여 해 줍시다...!
create user '생성할사용자아이디'@'%'identified by '사용자비밀번호';
grant all privileges on *.* to '사용자아이디'@'%' identified by '사용자비밀번호';
flush privileges;
MYSQL 설정 파일을 수정해야 합니다.
아래와 같이 명령어를 입력한 후 bind-address 부분을 주석 처리해줍시다.
DataGrip에서 아래와 같이 새로운 Data Source를 생성해 줍시다.
인스턴스의 ip주소를 입력하고, 생성한 MySQL 사용자와 암호를 입력해 주고 Test Connection을 진행합시다.
Test Connenction이 성공적으로 된다면, OK를 눌러 성공적으로 MySQL의 외부 연결을 할 수 있습니다.
포트를 열어주고, 권한을 부여하고 MYSQL 파일을 수정한다면
아래와 같이 성공적으로 Data grip과 MYSQL이 연결되는 것을 볼 수 있습니다.
STUDY라는 데이터베이스를 만들고 show databases라는 쿼리를 날려봅시다.
외부 연결이 성공적으로 되었다면 아래와 같이 화면이 출력 됩니다.