AWS - EC2 #2 ( Gnuboard5를 이용한 웹 서버 운용 )
https://simtongs.tistory.com/17
AWS - EC2 #1 ( VPC 설정, 인스턴스 생성 및 SSH 연결 )
1. Amazon EC2 1.1 EC2란? EC2 : Elastic Compute Cloud - Elastic(탄력적): 외부로부터 영향을 받더라도 항상 그 상태를 유지하는것 - 다양한 운영체제를 가상머신에 설치해서 빌려주는 서비스 AMI : Amazon..
simtongs.tistory.com
저번 실습을 이어나가는 글이므로 저번 글을 참조해 주시기 바랍니다.
2. EC2 실습
2.1 하나의 인스턴스에 WEB 및 DB 구성 [ 2 Tier ]
저번 실습에서 인스턴스와 SSH 연결까지 진행하였고 이제 인스턴스를 사용하여 웹서버 구축이 가능하게 되었다.
2.1.1 구상도
첫 인스턴스 사용 실습은 하나의 인스턴스에 WEB 과 DB를 묶어서 연동시키는 실습을 진행할 예정이다.
2.1.2 인스턴스 생성 및 접속
전 실습에서와 같이 웹서버 인스턴스를 준비한다.
하나의 인스턴스에서 WEB 및 DB가 돌아가야 하므로 22번 및 3306 포트에 대해 인바운드 규칙을 설정해 주어야 한다.
이렇게 인스턴스 생성이 끝났으면 SSH로 인스턴스에 연결해 본다.
2.1.3 WEB 및 DB 환경 구축
이번 실습에서 생성한 인스턴스는 Ubuntu 환경이고 Apache2 및 Mysql을 설치 후 git으로 Gnuboard5를 설치하여
웹페이지를 띄우는 실습을 진행한다.
1) 웹 서버 설치
$ sudo apt update
- 설치 준비
$ sudo apt install apache2
- 아파치2 ( 웹서버 ) 설치
2) MySQL 설치
$ sudo apt install mysql-server
- MySQL 설치
3) DB 및 유저 생성
$ sudo mysql -u root -p
- MySQL에 접속 ( 첫 접속에는 패스워드가 없으므로 엔터로 진행 )
mysql> create database gnuboard;
- 그누보드 설치를 위한 데이터베이스 생성
mysql> show databases;
- gnuboard 데이터베이스가 잘 생성되었는지 확인
mysql> create user board@localhost identified by '1234';
- 유저명이 board, 패스워드가 1234 인 유저 생성
- ( 보안을 위해서는 이렇게 단순하게 하지 말것! )
mysql> grant all privileges on gnuboard.* to board@localhost;
- board 유저에게 gnuboard 데이터베이스의모든 테이블에 대한 권한 부여
mysql> exit
- MySQL 접속 종료
4) 웹서버에서 필요한 각종 언어 설치
$ sudo apt install php php-mysql php-common php-gd php-fpm php-xml php-json php-curl git
- PHP 및 그누보드 실행을 위한 각종 PHP 툴 설치
- Git Hub 이용을 위한 git 설치
5) Git Hub 에서 게시판 소스 다운로드
$ cd /var/www/html
- 그누보드를 깃허브에서 내려받기위해 디렉토리 이동
$ sudo git clone https://github.com/gnuboard/gnuboard5
- 깃허브에서 그누보드 내려받기
6) Gnuboard5 설치를 위한 폴더 생성 및 권한 설정
$ cd gnuboard5
- 그누보드 디렉토리로 이동
$ sudo mkdir data
- data 폴더 생성
$ sudo chmod 707 data
- data 폴더에 대한 권한 부여
7) 웹서버 재실행
$ sudo service apache2 restart
- 아파치2 재실행
2.1.4 Gnuboard5 설치
위의 과정을 잘 따라왔다면 이제 그누보드를 설치할 차례다.
인스턴스의 공인 IP 주소를 확인해야 한다.
퍼블릭 IPv4주소를 복사 또는 기억한후 뒤에 /gnuboard5를 붙여 브라우저에서 접속한다.
그누보드 접속
IP주소/gnuboard5
ex) 3.36.121.138/gnuboard5
인스턴스 ip 주소에 /gnuboard5를 붙여 접속하면 위와 같은 화면이 뜨게되면 성공이다.
이어서 그누보드5 설치를 위해 버튼을 눌러 계속 진행한다.
만약 이 화면이 뜨기전에 오류가 난다면 위에서 설치한 각종 언어들을 확인해 보거나
아파치2 또한 재실행 한 후 다시 시도해본다.
그누보드 초기 환경설정을 다음과 같이 채워가면 된다.
1) Host : DB에 연결할 URL 또는 위치를 입력
- WEB과 DB가 같은 인스턴스에 있으므로 localhost 입력
2) User : 2.1.3 문단의 3)번에서 생성한 유저명 입력
- board 입력
3) Password : 2.1.3 문단의 3)번에서 생성한 유저의 패스워드 입력
- 1234 입력
4) DB : 2.1.3 문단의 3)번에서 생성한 데이터베이스명 입력
- gnuboard 입력
이후 하단의 최고관리자 정보 입력란에 admin 계정에 대한 패스워드 설정 후 다음 버튼을 눌러 진행하면 된다.
설치가 완료되면 위 화면이 뜨게되고 이후부터 gnuboard5에 접속시 메인 페이지가 뜨게되면 성공이다.
2.2 두개의 인스턴스에서 WEB 및 DB 연동하기 [ 3 Tier ]
2.2.1 구상도
위에서 하나의 인스턴스에 Apache2 와 MySQL을 운용해봤으면 두번째 실습에서는
각각의 인스턴스에 Apache2 와 MySQL을 설치하고 이를 연동해보는 실습을 진행한다.
2.2.2 웹 및 데이터베이스 서버 인스턴스 생성
먼저 인스턴스 두개를 생성해야하는데 이때 보안 그룹을 새로 만들고 안에 내용물은 비워둔다.
이후 각각의 보안 그룹을 설정해 줘야 하므로 이름 설정은 확실하게 구분이 가능하게끔 설정해 준다.
2.2.3 인스턴스 보안 그룹 설정
Web과 DB는 각각 접속 대상이 다르므로 이를 보안 그룹으로 구분해 줄 필요가 있다.
Web의 경우 SSH 통신을 위한 22번 포트와 HTTP 연결을 위한 80번 포트가 개방되어야 하며
DB의 경우 SSH 통신을 위한 22번 포트 및 HTTP 연결을 위한 80번 포트와
웹 서버에서 접근이 가능하도록 3306 포트에 대해서도 개방이 필요하다.
1) Web Server 인바운드 규칙 편집
SSH 연결은 자신의 IP 주소에서만 접속 되도록 소스를 수정하고
HTTP 연결은 Anywhere ( 0.0.0.0 / 0 ) 으로 설정한다.
2) DB Server 인바운드 규칙 편집
SSH 연결은 자신의 IP 주소에서만 접속 되도록 소스를 수정하고
HTTP 연결은 Anywhere ( 0.0.0.0 / 0 ) 으로 설정한다.
또한 DB 연결을 위한 3306 포트에서는 Web 서버측에서 접근이 되야 하므로
사용자 지정 소스로 10.1.10.0 / 24로 설정한다.
이때 Web 서버의 사설 IP 주소를 직접 입력해도 무관하다.
2.2.4 Web 서버에 Apache2 및 그누보드5 다운로드
1) Apache2 설치
$ sudo apt update
- 설치 준비
$ sudo apt install apache2
- 아파치2 ( 웹서버 ) 설치
2) 웹서버에서 필요한 각종 언어 설치
$ sudo apt install php php-mysql php-common php-gd php-fpm php-xml php-json php-curl git
- PHP 및 그누보드 실행을 위한 각종 PHP 툴 설치
- Git Hub 이용을 위한 git 설치
3) Git Hub 에서 게시판 소스 다운로드
$ cd /var/www/html
- 그누보드를 깃허브에서 내려받기위해 디렉토리 이동
$ sudo git clone https://github.com/gnuboard/gnuboard5
- 깃허브에서 그누보드 내려받기
4) Gnuboard5 설치를 위한 폴더 생성 및 권한 설정
$ cd gnuboard5
- 그누보드 디렉토리로 이동
$ sudo mkdir data
- data 폴더 생성
$ sudo chmod 707 data
- data 폴더에 대한 권한 부여
5) 웹서버 재실행
$ sudo service apache2 restart
- 아파치2 재실행
2.2.5 DB 서버에 MySQL 설치
1) MySQL 설치
$ sudo apt update
- 설치 준비
$ sudo apt install mysql-server
- MySQL 설치
2) DB 및 유저 생성
$ sudo mysql -u root -p
- MySQL에 접속 ( 첫 접속에는 패스워드가 없으므로 엔터로 진행 )
mysql> create database gnuboard;
- 그누보드 설치를 위한 데이터베이스 생성
mysql> show databases;
- gnuboard 데이터베이스가 잘 생성되었는지 확인
mysql> create user board@'%' identified by '1234';
- 유저명이 board, 패스워드가 1234 인 유저 생성
- ( 보안을 위해서는 이렇게 단순하게 하지 말것! )
mysql> grant all privileges on gnuboard.* to board@'%';
- board 유저에게 gnuboard 데이터베이스의모든 테이블에 대한 권한 부여
mysql> exit
- MySQL 접속 종료
이때 유저 생성에서 접근권한을 '%'로 설정해 주는 부분이 다르므로 주의해서 명령어를 입력한다.
3) MySQL 연결 설정 수정
MySQL을 외부에서 사용하기 위해 아래와 같이 설정을 진행한다.
$ cd /etc/mysql/mysql.conf.d
- MySQL 설정을 위한 디렉토리 이동
$ sudo vi mysqld.cnf
- 설정 변경을 위해 vi 편집 사용
vi 편집기로 mysqld.cnf 파일을 수정한다.
중간 부분쯤 bind-address = 127.0.0.1 부분에 # 을 추가하여 주석처리하면 된다.
수정이 완료되었으면 저장후 vi 편집을 종료한다.
2.2.6 그누보드5 접속 및 설치
이제 Web 서버 및 DB 서버에 대한 설치와 설정이 끝났으므로
Web 서버의 공인 IP를 확인 한 후 그누보드5에 접속한다.
그누보드5 접속
( Web 인스턴스 퍼블릭 IPv4 주소 ) / gnuboard5
ex) 3.38.244.178/gnuboard5
접속한 후 그누보드 초기 정보 입력란에서 DB서버의 사설 IP 주소가 필요하다.
DB 서버의 프라이빗 IPv4 주소를 기억한후 이 IP주소를 그누보드의 호스트로 입력하면 된다.
주의할 점은 Host 입력란에 DB 서버의 사설 IP 주소를 입력한 후 뒤에 포트번호 까지 입력함에 주의하여 입력한다.
ex) 10.1.10.150:3306
이후 잠깐의 로딩과 그누보드 페이지가 뜨게 된다.