📜 TIL

서버개발 # AWS서버 환경설정 팁

둥굴둥굴둥굴레차 2021. 8. 20. 23:53

SSH 접속

매번 Git Bash 혹은 PowerShell을 통해 명령어를 입력하며 서버개발하는 것이 번거롭다.

PuttyMobaXterm을 사용하면 좀 더 간단히 접속할 수 있다.

 

Putty와 MobaXterm 둘 다 서버에 접속하기 위해 환경을 저장할 있다. 
Putty의 경우에는 서버 접속 전까지 환경을 다 구성한 뒤 세이브를 눌러 저장을 해 주면 된다.
MobaXterm은 한 번 서버에 접속하고 나면 해당 환경이 자동으로 저장된다.

 

 

서버에 파일을 전송할 때는?

Putty을 사용할 때는 Filezilla를 이용해서 파일을 전송. 
전송하고자 하는 파일을 우측 탭 그리고 드래그 앤 드롭으로 가면 파일이 전송된다. 


MobaXterm은 Filezilla와 같은 프로그램을 따로 사용할 필요 없이 왼쪽 탭에서 sftp 탭을 클릭하면 쉽게 드래그 앤 드롭으로 파일을 전송할 수 있다.

 

 

DB설정

이제 서버에 접속하였으니 데이터베이스 서버 구성을 해보자.

방법 1 : Ubuntu에서 제공하는 MySQL 서버

방법 2 : Docker MySQL 이미지 

 

방법 1 : Ubuntu에서 제공하는 MySQL 서버

$ sudo apt install -y mysql-server

우분트에서 제공하는 MySQL 서버는 AWS 호스트에 설치가 된다. 
Docker는 컨테이너에 접속이 필요한데 이러한 과정 없이 포스트에서 MySQL에 접속하는 명령어를 통해 쉽게 이용할 수 있다. 

 

방법 2 : Docker MySQL 이미지 

$ sudo docker run -d --name mysql -p 3306:3306 mysql

Docker는 컨테이너에 접속해야 하는 과정이 하나 더 추가되긴 하지만 따로 설정할 필요 없이 외부에서 접속이 가능하다는 특징이 있다.

 

 

MySQL서버는 외부에서 바로 접속 불가능. 별도의 설정 과정이 필요!

 

 

 

MySQL 서버를 외부에서 접속하기 위한 과정


1. MySQL서버 설치

 

 

2. net-tools 패키지를 설치

$ sudo apt install -y net-tools

 

3. net-tools패키지에 있는 netstat 명령어를 통해 서버의 포트를 확인

로컬 어드레스 부분이 최초에 127.0.0.1 33인 것을 확인! 이는 로컬에서의 접속만을 허용한다는 뜻. 

 

3. 외부의 접속을 허용하기 위해서는 아래 경로로 들어가 MySQL 설정 파일을 텍스트 에디터로 열어주면 된다.

$ cd /etc/mysql/mysqld.conf.d

 

sudo를 안 붙이면 읽기전용으로 열리니 꼭 붙여주자. 

$ sudo vi mysqld.conf

설정 파일을 열고 난 뒤 127.0.0.1로 되어 있는 bind-address를 0.0.0.0으로 변경해 주면 된다.

 

 

4. 다시 netstat으로 확인해보면 0.0.0.0으로 설정된 것을 확인할수 있음.

 

5. MySQL의 기본 유저 테이블은 전부 로컬 호스트에 매핑이 되어 있기 때문에 모든 ip로 접속을 허용할 계정을 만들어주어야 한다.


6. 다음과 같은 sql 문을 통해 계정을 만들어주고 권한을 부여해 주면 된다. 

mysql> create user 'cameo'@'%' indentified by 'password';
mysql> grant all privileges on *.* to 'cameo'@'%';
mysql> flush privileges;

 

다시 MySQL의 기본유저 테이블 확인해보면 모든 ip에 대해서 접속을 허용하는 %가 호스트인 계정이 생성된 것을 확인할 수 있다. 

 

 


이제 모든 팀원들이 AWS에 올라가 있는 데이터베이스를 이용해 프로젝트를 진행할 수 있다!

 

 

 


모든 사람이 외부에서 접속을 할 수 있게 되면 보안에 문제가 생기지 않을까?

. . .

외부 연결를 허용하지 않고 진행하는 방법, SSH Tunneling 기법을 사용하자!

 

 

SSH Tunneling이란?

ssh를 보통 원격 접속 용도로만 사용하는데 이것 외에도 프록시 서버와 비슷하게 동작시킬 수 있다.

 

즉, DB 서버(port:3306)에 직접 연결하려면 방화벽에 막히지만 ssh(port: 22)로 접속 후 다른 포트로 바인딩된 DB 서버(port:3306)에 접근할 수 있다. 


이렇게 되면 서버에 불필요한 포트를 개방할 필요도 없고 bind-address를 변경해 줄 필요도 없이 ssh 포트만 열어주면 되니 보안이 한층 강화된다.

 

 

 


 

서버 개발 공부 순서는?

저는 가장 먼저 리눅스에 대해서 공부했었습니다. 윈도 개발 환경이랑은 환경이 좀 많이 차이가 나기 때문에 일단은 리눅스에 먼저 익숙해지시는게 우선이라 생각하고 있습니다.

 

구글링과 유튜브 강의 뭐가 좋을까요

처음에 구글링을 먼저 하고. 구글링을 해서 제가 이해가 안 가는 부분은 유튜브를 통해서 실습