안경잡이개발자

  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가 설치되어 연동이 모두 완료되었습니다.

 

Comment +3