안경잡이개발자

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
반응형

728x90
반응형

  PHP에서 에러 로그(Log)를 남기는 방법은 간단합니다. 다음과 같은 코드를 이용하면 됩니다. 두 번째 파라미터인 3의 의미는 파일의 뒤쪽에 이어서 내용을 작성하겠다는 의미입니다. 그리고 세 번째 파라미터에는 로그 파일의 위치가 들어갑니다.

 

error_log ('{남기고자 하는 로그 메시지}', 3, "/var/log/apache2/php_error.log");

 

  자세한 내용은 다음의 경로에서 확인할 수 있습니다.

 

https://www.php.net/manual/en/function.error-log.php

 

  또한 경우에 따라서는 permission denied 오류가 발생하면서 로그를 기록하지 못할 수도 있습니다. 그럴 때는 권한 설정을 진행하면 됩니다. 좋은 방법은 아니지만, 대충 무조건 허용해도 괜찮을 때는 777 권한을 주면 됩니다.

 

 

  그래서 결과적으로는 다음과 같은 형태로 로그를 남길 수 있습니다.

 

 

  또한 실시간으로 로그를 테스트 하는 경우 다음과 같이 실시간 출력이 가능합니다.

 

tail -f {파일 이름}

 

 

728x90
반응형