AWS EC2 인스턴스 생성, 접속, MySQL 설치, Apache, PHP 연동 [한 번에 끝내기]
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가 설치되어 연동이 모두 완료되었습니다.