지난장에서 인터넷 통신이 되는 Public 인스턴스를 만들었다.

 

해당 인스턴스에 Nginx를 설치하여 WEB 서버로 사용하고,

WAS와 DB를 구성하여 연결해보자.

 


1) WEB EC2 구성

 

ㅁ nginx 설치 및 구동

 

sudo apt install nginx
sudo service nginx start

2) WAS용 인스턴스 추가

 

해당 인스턴스는 실제 로직과 데이터가 담겨있기때문에, Private Subnet에 생성해야한다.

 

ㅁ 인스턴스 생성

 

Public과 동일하지만 Subnet 부분과 보안설정은 변경한다

 

- Subnet : Private

- 보안그룹 : SSH 및 서비스 통신은 WEB서버를 통해서만 받도록 설정

 

ㅁ NAT 게이트웨이 생성

 

Private Subnet에 있는 WAS나 DB의 경우

외부에서 접근은 불가능하더라도, 인터넷 사용이 필요한 경우가 있다. ( apt-get , curl 등 )

 

해당 경우에는 NAT 게이트웨이를 두어, Public subnet 망을 통해서 나갈수 있게 설정해준다.

 

- 연결유형을 Public으로 두어, 인터넷에 연결 ( Inbound는 차단 )

- EIP (탄력적 IP)를 부여해, 해당 IP로 외부에 통신함.

 

 

ㅁ Private 전용 라우팅 테이블 생성 및 연결

 

Public Subnet의 라우팅 테이블은

10.0.0.0/24 (VPC 내 통신)은 local로 설정되어있어, VPC 내부에서 찾는다.

 

Private Subnet은 VPC 내부 통신외에, 나가는 요청만 NAT 게이트웨이를 통하므로

라우팅 테이블을 따로 만들어서 할당해야한다.

 

 

- local 통신은 동일하게 두고, 인터넷 통신은 public subnet에 있는 NAT 게이트웨이로 통신한다.

 

 


 

ㅁ WAS 인스턴스 환경 구성

 

- 파이썬 및 Flask 설치

※ Flask : Rest api 구성을 위한 Micro web framework

sudo apt-get update
sudo apt install python3
sudo apt-get install python3-pip
sudo pip3 install Flask

 

-python 파일 작성 후 구동 테스트

 

rest.py

더보기

from flask import Flask  
from flask_restx import Api, Resource 

app = Flask(__name__)  
api = Api(app)  


@api.route('/api/users')  # /api/user 에 클래스 매핑
class HelloWorld(Resource):
    def get(self):  
        return {"id": 123,
        "name": "kim"}

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=82)

 

- 에러 발생

 

restx 모듈을 못찾았다. 

해당 모듈 설치 후 재실행

sudo pip3 install flask_restx

 

- 구동완료


 

3) DB용 인스턴스 구성

 

 

ㅁ PostgreSQL 설치

 

sudo apt-get update
sudo apt install postgresql 

 

ㅁ DB 접근제어 허용

 

PostgreSQL는 기본적으로 접근허용이 막혀있다.

Listen Address에 *를 넣어 접근가능하게 변경해주자 ( 재시작 필요 )

sudo vi /etc/postgresql/12/main/postgresql.conf

 

 

sudo vi /etc/postgresql/12/main/pg_hba.conf

 

 

ㅁ 데이터 베이스 생성

 

- DBMS 접속

 

sudo su postgres
psql
CREATE DATABASE "USER"; // USER 데이터베이스 생성

 

- USER 생성 및 권한부여

 

CREATE USER test WITH PASSWORD 'a123456789';
ALTER USER test WITH SUPERUSER;
ALTER USER test WITH LOGIN;

 

- 해당 유저로 접속 및 Sample 데이터 생성

 

psql -U test -d USER // test유저로 USER 데이터베이스 접근
CREATE table user_info( id int NOT NULL, name char(20) DEFAULT NULL, PRIMARY KEY (id) );
INSERT INTO user_info VALUES(1234,'kim');
INSERT INTO user_info VALUES(123,'Lee');
commit;

 

※ psql: error: FATAL:  Peer authentication failed for user "test" 에러 발생

 

더보기

검색해보니 local 통신 방식에서 perr를 md5로 바꿔주라고 함

 

sudo vi /etc/postgresql/12/main/pg_hba.conf

 

검색해보니 local 통신 방식에서 perr를 md5로 바꿔주라고 함

 

sudo vi /etc/postgresql/12/main/pg_hba.conf

 

 

'IT > AWS' 카테고리의 다른 글

(5) EC2 시스템간 연결  (0) 2021.11.08
(4) EC2 원격 접속 ( 작성중 )  (0) 2021.11.07
(2) 인터넷 게이트웨이 및 라우팅 테이블 설정  (0) 2021.11.03
(1) VPC , 서브넷 및 EC2 생성  (0) 2021.11.03
(0) AWS 학습 로드맵  (0) 2021.10.22

+ Recent posts