안경잡이개발자

728x90
반응형

  AWS EC2 인스턴스를 생성한 뒤에, 거기에 접속해서 MySQL, Apache, PHP를 설치하여 연동하는 방법에 대해서 소개하겠습니다.

 

AWS EC2 인스턴스 생성

 

1. AWS EC2 관리 페이지로 이동합니다.

 

  EC2 관리 페이지: https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home

 


2. [인스턴스 시작] 버튼을 눌러 [Ubuntu Server 18.04 LTS (HVM), SSD Volume Type]로 인스턴스를 생성합니다.

 


3. 무료 유형인 [t2.micro] 인스턴스 유형을 선택한 뒤 [검토 및 시작] 버튼을 누릅니다. 이후에 인스턴스를 시작할 수 있도록 하면 됩니다.

 


4. 키 페어를 생성해 저장한 뒤에 [인스턴스 시작] 버튼을 누릅니다.

 

 

인스턴스 접속


1. 아까 EC2 접속 목적의 키 페어 파일을 준비합니다.

 


2. 키 페어에 적절한 권한을 줍니다.


  1) 리눅스: 다음의 명령어로 권한을 설정합니다.

chmod 400 {키 페어 파일 이름.pem}


  2) 윈도우: 키 페어를 우클릭 한 뒤에 [속성] - [보안] [고급] - [상속 사용 안 함] - [명시적 사용] - [관리자 제외하고 모든 그룹 삭제]를 진행합니다. 이후에 관리자 권한으로 CMD를 실행합니다.

 

 

3. SSH 명령어로 서버에 접속합니다. 서버 접속 주소는 [Connect] 버튼을 누르면 나옵니다.

ssh -i "{키 페어 파일 이름.pem}" ubuntu@{AWS EC2 서버 URL}

 

 

  저는 다음과 같은 명령어를 확인할 수 있습니다.

 

 

  이제 다음과 같이 SSH로 AWS EC2 서버에 접속해보겠습니다.

 

 

MySQL 서버 설치 및 환경설정


1. AWS EC2 서버에 접속합니다.


2. MySQL를 설치하고 접속합니다.

sudo apt update # MySQL 설치를 위해 업데이트
sudo apt install mysql-server # MySQL 서버 설치
sudo mysql -u root -p # MySQL 접속

 


3. MySQL 접속 이후에 비밀번호를 설정합니다.

use mysql;
CREATE USER '{생성할 사용자 이름}'@'%' IDENTIFIED BY '{비밀번호}'; # 생성할 사용자 비밀번호 설정
GRANT ALL PRIVILEGES ON *.* TO '{사용자 이름}'@'%'; # 외부 접속이 가능하도록 설정
FLUSH PRIVILEGES;
exit;

 


4. MySQL 설정 파일을 수정합니다.

cd /etc/mysql/mysql.conf.d;
sudo vi mysqld.cnf;

 

  (이 때 만약 vi가 설치되어 있지 않다면 다음과 같이 vim을 설치합니다.)

 


5. mysqld.cnf를 수정하여 MySQL의 외부 접속을 허용합니다.

bind-address = 0.0.0.0


6. 수정 이후에 Mysql를 재시작 합니다.

sudo service mysql restart

 

MySQL 외부 접속 테스트


1. AWS EC2 보안 그룹 페이지로 이동합니다.

 

2. 보안 그룹 설정을 진행합니다. [인바운드] - [편집] - [규칙 추가] - [MySQL/Aurora] - 허용 IP로 [0.0.0.0/0]를 설정합니다.

 


3. MySQL Workbench와 같은 MySQL 관리 도구를 이용하여 접속합니다.

Hostname: {AWS EC2의 공인 IP 주소}
Username: {생성한 사용자 이름}
Password: {비밀번호}

 


4. MySQL에 접속하여 간단한 쿼리를 날립니다.

select now();

 

 

Apache 웹 서버 설치 및 환경설정


1. Apache 웹 서버를 설치합니다.

 

sudo apt-get install apache2

 

 

2. AWS EC2 보안 그룹 페이지로 이동합니다.


3. 보안 그룹 설정을 진행합니다. [인바운드] - [편집] - [규칙 추가] - [HTTP] - 허용 IP로 [0.0.0.0/0]를 설정합니다.

 


4. 공인 IP로 접속하여 웹 서버가 정상적으로 구동하는지 확인합니다.

 

 

5. apache2.conf 설정 파일을 엽니다.

sudo vi /etc/apache2/apache2.conf

 

6. 루트 디렉토리를 [/home/project]로 변경합니다.

<Directory /home/project/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

 


7. default.conf 설정 파일 열기

sudo vi /etc/apache2/sites-available/000-default.conf

 

8. 루트 디렉토리를 [/home/project]로 변경합니다.

DocumentRoot /home/project

 


9. /home/project 폴더 생성 및 index.html 파일을 생성합니다.

sudo mkdir /home/project
sudo vi /home/project/index.html


10. index.html 파일을 작성합니다.

Hello World!


11. Apache 웹 서버 재시작

sudo apachectl restart


12. 공인 IP로 접속하여 웹 서버가 정상적으로 구동하는지 확인합니다.

 

 

PHP 웹 서버 설치 및 Apache 연동

 

1. 간단히 옛날 버전의 PHP 5.6를 설치해보겠습니다.

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php5.6

 

  (이 때 만약 add-apt-repository가 설치되어 있지 않다면 다음과 같이 설치합니다.)

 


2. 설치된 PHP 버전을 확인합니다.

php -version

 


3. Apache와 PHP 연동 테스트

sudo vi /home/project/index.php


4. PHP 소개 페이지를 작성합니다.

<?php phpinfo();?>


5. 공인 IP의 /index.php로 접속하여 PHP 연동이 제대로 됐는지 확인합니다.

 

  (index.html 파일을 지워야 할 수 있습니다.)

 

 

PHP와 MySQL 연동


1. MySQL 연동 라이브러리를 설치합니다.

sudo apt install php5.6-mysql
sudo service mysql restart
sudo apachectl restart


2. 설치된 패키지를 확인합니다.

dpkg -l | grep php

 

 

3. index.php 소스코드를 작성합니다.

 

<?php
$conn = mysqli_connect(
  '{데이터베이스 IP}',
  '{사용자 이름}',
  '{비밀번호}',
  '{데이터베이스 이름}',
  '3306');
if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT VERSION()";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
print_r($row["VERSION()"]);
?>

 

 

4. 접속 결과를 확인합니다.

 

 

  정상적으로 MySQL, PHP, Apache가 설치되어 연동이 모두 완료되었습니다.

 

728x90
반응형

Comment +6

728x90
반응형

  이번 시간에는 AWS RDS 서비스를 이용하여 MySQL DB를 구축해보는 시간을 가져보도록 하겠습니다. 실제로 고객에 대한 정보를 저장하기 위해서는 MySQL과 같은 데이터베이스 시스템이 필요합니다. 따라서 이번 시간에는 AWS(Amazon Web Service)를 이용해서 데이터베이스를 구축하도록 하겠습니다. 일반적으로 AWS RDS를 이용하면 MySQL과 같은 관계형 데이터베이스 시스템을 쉽고 빠르게 구축할 수 있어요. 


  심지어 프리티어(Free-Tier) 서비스를 이용하면 무료로 이용할 수 있다는 점에서 매우 효과적이랍니다.


※ AWS RDS로 데이터베이스 만들기 ※


  AWS RDS 서비스를 검색하여 관계형 데이터베이스를 관리할 수 있습니다.



  이후에 [데이터베이스 생성]란에 들어가서 데이터베이스를 만들어 주시면 됩니다.



  저는 MySQL 서비스를 이용하도록 하겠습니다. 이 때 [RDS 프리 티어에 적용되는 옵션만 사용] 란에 체크해주시면 됩니다.



  이후에 DB 세부 정보를 지정할 수 있습니다. 저는 MySQL 5.6 버전을 이용하도록 하겠습니다.



  이후에 기본 스토리지 크기인 20GiB를 사용하시면 됩니다. 그리고 이후에 데이터베이스에 접속하기 위한 계정 정보를 넣어주세요.



  이제 [고급 설정 구성]을 진행하시면 됩니다. 일반적으로 DB 보안 관리를 꼭 해주셔야 하지만 저는 강의를 위해서 일단 외부에서 쉽게 접속할 수 있도록 [퍼블릭 액세스 가능성]을 예(Yes)로 설정하겠습니다.



  포트(Port) 번호 또한 기본 포트인 3306번 포트를 사용하시면 됩니다. DB 이름도 설정하시면 돼요.



  이후에 다음과 같이 [데이터베이스 생성]을 진행할 수 있습니다.



  인스턴스를 생성한 이후에는 [DB 인스턴스 세부 정보 보기]를 눌러서 세부 정보를 확인할 수 있습니다.



  기본적으로 MySQL은 영어로 설정되어 있으므로 한글을 넣고자 한다면 UTF-8으로 인코딩 설정을 해야 합니다. 따라서 [파라미터 그룹] 탭으로 이동해서 [파라미터 그룹 생성]을 진행하시면 됩니다.



  저는 다음과 같이 utf8-parameter라는 이름으로 파라미터 그룹을 생성해보았습니다.



  가장 먼저 char를 검색해서 나오는 모든 속성에 대해서 값으로 UTF-8 설정을 해주세요.



  이후에 collation을 검색하여 값으로 utf8_general_ci를 설정하시면 됩니다.




  이제 이렇게 만들어진 파라미터 그룹을 우리의 데이터베이스에 적용해보도록 하겠습니다.



  해당 데이터베이스에서 [수정] 탭으로 들어가 적용해주시면 됩니다.




  결과적으로 [변경 중] 표시가 뜨면서 약간의 시간이 흐른 뒤에 파라미터 그룹이 적용됩니다.



  혹여 파라미터 그룹 설정이 적용이 되지 않는 경우에는 데이터베이스를 재시작하시면 됩니다.


※ HeidiSQL을 이용해 데이터베이스에 접속하기 ※


  이제 HeidiSQL을 이용해서 데이터베이스에 접속하는 방법에 대해서 알아보도록 하겠습니다.


  ▶ HeidiSQL 설치 경로: https://www.heidisql.com/download.php


  위 경로에 접속하여 HeidiSQL을 설치할 수 있습니다.



  기본적인 설치 프로그램으로 설치를 진행하시면 됩니다. 이후에 해당 프로그램을 실행해 주시면 됩니다.



  저는 위와 같이 신규 세션(Session)을 만들어 주었습니다. MySQL 접속 경로는 AWS RDS 관리 페이지에서 확인할 수 있습니다.



  이전에 자신이 설정했던 계정 정보로 그대로 로그인을 해주시면 됩니다.



  로그인 이후에는 다음과 같이 데이터베이스가 구성되어 있는 것을 확인할 수 있습니다. 왼쪽 탭에서는 데이터베이스 정보가 출력됩니다. 아까 전에 우리가 만들었던 management라는 이름의 데이터베이스가 존재합니다.



  간단히 쿼리(Query) 탭으로 이동하여 select version(); 명령어를 실행해 MySQL 버전을 확인할 수 있습니다.



※ 데이터베이스 접속이 안 되는 경우 ※


  혹시 데이터베이스 접속이 안 되는 경우 데이터베이스의 [보안 그룹]을 확인하시는 것이 중요합니다.



  보안 그룹의 [인바운드] 규칙을 확인했을 때 다음과 같이 접속하고자 하는 소스(Source)가 0.0.0.0(위치 무관)으로 설정되어 있어야 언제 어디서든 해당 데이터베이스에 접근할 수 있습니다.



728x90
반응형

Comment +0