AWS 도커 PHP, MYSQL 설치

김철현·2021년 7월 19일
0

AWS

목록 보기
3/3
post-thumbnail

💡 시작하기전

AWS 도커 웹서버 설치 편에서 AWS EC2에 centos 설치하고
도커 인스턴스를 올리는 것까지 포스팅했다
이번 포스팅엔 인스턴스에 mysql, php를 설치해본다

💡 도커 명령

ps 명령어로 현재 돌고 있는 인스턴스를 확인 가능

sudo docker ps -a

이전 포스팅에서 사용한 run 명령의 옵션 확인

sudo docker run -it --name centos7 -v /centos7:/var/www
                --privileged -p 8080:8080 -p 3307:3307 centos:7 sbin/init
옵션설명
i 표준 입력(stdin)을 활성화하며 컨테이너와 연결(attach)되어 있지 않더라도
표준 입력을 유지 (bash)
ttty 사용
name별칭 (centos7)
v호스트와 인스턴스 마운트 (폴더 공유)
privileged커널 사용 (systemctl 등)
p포트 노출 (8080,3307 포트 점유)

옵션 확인 후 인스턴스에 접속

[centos@ip-172-31-2-149 ~]$ sudo docker exec -it centos8 /bin/bash
[root@e01345459bfd /]#

✍ 방화벽

AWS

AWS에 로그인 하여 보안그룹->launch-wizard-1->인바운드규칙 선택 후
우측 끝에 Edit inbound rules 클릭하면 방화벽 정책을 편집할 수 있다



도커 인스턴스에서 사용하는 웹포트로 지정한 8080 포트를 추가

firewalld

방화벽 데몬 설치 후 8080, 3307 포트 열고

yum install -y firewalld
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

설정 후 cyd.kr:8080 접속 확인

📝 MYSQL

wget은 HTTP, HTTPS, FTP 프로토콜을 이용하여 프로그램을 받을 수 있는 프로그램이다
rpm -ivh로 패키지를 설치하고 -ql로 내부파일 목록을 보고 -qi로 패키지 정보를 확인한다

✍ 설정파일 수정

mysql 기본포트는 3306이지만 인스턴스 올릴 때 3307포트를 열었기 때문에 포트번호를 바꿔준다
innodb_buffer_pool_size는 mysql 데몬 실행 시 기본 128M로 버퍼 설정이 되어 있는데
t2.micro 인스턴스를 사용하기 때문에 설치 시 오류가 나기 때문에 메모리를 줄여준다

yum update
yum install wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum update
yum repolist
rpm -ql mysql-community-release-el7-5.noarch
rpm -qi mysql-community-release-el7-5.noarch

yum install -y mysql-server
vi /etc/my.cnf.d/mysql-server.cnf

[mysqld] 아래에
port=3307 
innodb_buffer_pool_size=64M
입력 후 저장

systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

mysql_secure_installation
mysql -u root -p

✍ 데이터베이스

mysql_secure_installation 설치 명령을 실행하면 몇가지 질문을 하는데
아래와 같이 설정함

  1. 비밀번호 보안 강도 설정할 것인가? no
  2. 익명의 사용자 삭제할 것인가? yes
  3. root의 원격 접속을 막을것인가? no
  4. test 데이터베이스를 삭제할 것인가? yes
  5. 즉시 바뀐 권한을 적용할 것인가? yes

설정 후 mysql -u root -p 명령으로 mysql에 접속해 권한설정과 테스트용 테이블을 생성

create database conda;
use conda;
create table user (user_id varchar(8), user_pw varchar(8));
insert into user values ('conda', '1120');
select * from user;

+---------+---------+
| user_id | user_pw |
+---------+---------+
| conda   | 1120    |
+---------+---------+

📝 PHP

✍ 설치 및 아파치 설정

아래 명령 실행 후 아파치 시작페이지 설정 부분에 php 확장자를 추가

yum install -y php php-cli php-common php-gd php-mysqlnd php-mbstring php-odbc php-pdo php-xml php-xmlrpc
yum list installed php*
rpm -qa | grep php
vi /etc/httpd/conf/httpd.conf

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

아래와 같이 index.html 옆에 index.php 추가

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

✍ 테스트 소스

php로 테스트테이블 조회하는 파일 작성

vi var/www/html/index.php

<?php
$db_host = "localhost";
$db_user = "root";
$db_passwd = "1120";
$db_name = "conda";
$conn= mysqli_connect($db_host, $db_user, $db_passwd, $db_name);

if(mysqli_connect_errno($conn)){
	echo "DB connect error:", mysqli_connect_errno();
	echo "<br>";
}else{
	echo "연결완료!<br>";
	
	$sql = "select * from user";
	$res = mysqli_query($conn, $sql);
	for($i=0;$row=mysqli_fetch_array($res);$i++){
		echo $row['user_id']." : ".$row['user_pw'];
	}
}
?>

profile
리팩토링만이 살 길이다

0개의 댓글