개발자의 끄적끄적

AWS RDS 사용하기, PHP 연결하기, RDS charset 바꾸기 [펌] 본문

개발/was & server

AWS RDS 사용하기, PHP 연결하기, RDS charset 바꾸기 [펌]

효벨 2020. 1. 2. 14:19
728x90
반응형

AWS RDS 사용하기, PHP 연결하기, RDS charset 바꾸기 [펌]

 

 

1. EC2에서 우분투 인스턴스 하나를 생성한다.

 

2. putty로 원격 접속해 다음 cmd line을 이용해 실습환경을 셋팅한다.

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

1. 최신상태 업데이트

sudo apt-get update;

 

2. apache 설치

sudo apt-get install apache2

 

3. php 설치

sudo apt-get install php

 

4. MySQL 데이터베이스 서버 설치

sudo apt-get install mysql-server

 

5. MySQL 데이터베이스 클라이언트 설치

sudo apt-get install mysql-client

 

6. php와 mysql 연동

sudo apt-get install php-mysql;

 

7. 아파치 php 연동

sudo apt-get install libapache2-mod-php

 

8. 아파치 재시작

sudo service apache2 restart;

cs

 

3. 명령어를 통해 다 설치가 되면 웹브라우저를 열어 퍼블릭 DNS(IPv4) 를 입력한다.

 

 3.1 웹서버 아파치가 제대로 설치되었다면 ubuntu 기본페이지가 잘나온다.

 

 

 

 3.2 index.php 파일을 하나 만들어 phpinfo(); 내장함수를 호출해 php정보가 잘 설치되었는지 확인한다.

 

 

 

 

4. AWS RDS를 생성한다.

 

 

 

 

 

mariadb를 선택하고 비용문제가 있으니 프리티어를 꼭 체크해준다.

프리티어를 체크하면 다음단계로 기본설정으로 셋팅되어 진행된다. 

 

 

 

 

 

db 인스턴스 이름을 정하고 db에 접근하기 위한 username과 password를 지정한다.(꼭 기억해야함)

 

기본적으로 자신이 사용하고 싶은 데이터베이스 스키마를 생성할수 있다.

데이터베이스 이름은 o2로 지정하고 생성한다.

 

 

 

RDS 설치가 완료되면 

원활한 테스트환경을 위해 보안그룹을 열어준다.

자신의 RDS의 보안그룹으로 들어가 Inbound를 위치무관으로 설정한다.

 

 

 

 

테스트 이후에 보안그룹을 재설정하면 된다.

 

 

5. mysql이 잘 설치 되었는지 확인하기 위해 접속해본다.

 

 

 

1

2

mysql -h 퍼블릭 DNS(IPv4) 주소 -u RDS계정 -p

mysql -h mydb1.ceczqdx83uhe.ap-northeast-2.rds.amazonaws.com -u sanghyun -p

cs

 

 

 

잘 접속되었다면 rds를 생성할때 기본으로 만들었던 o2 데이터베이스가 잘 만들어졌는지 확인하고

간단한 쿼리도 날려본다.

 

 

 

 

1

2

3

4

mysql에 접속이 되었다면 

show databases;

use o2;

select * from topic;

cs

 

 

 

6. GUI 환경에서 db를 보고싶으면 heidisql을 깔아 

호스트명에  RDS 엔드포인트를 넣고 마스터 username과 password를 넣고 자신이 생성한 데이터베이스까지 넣어 접속해본다.

 

 

 

 

7  데이터베이스 스키마의 테이블을 생성하고 샘플데이터를 몇개 넣어서 확인한다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

/* 테이블 생성 */

CREATE TABLE `topic` (

`id` int(11NOT NULL AUTO_INCREMENT,

  `title` varchar(100NOT NULL,

  `description` text NOT NULL,

  `author` varchar(30NOT NULL,

  `created` datetime NOT NULL,

  PRIMARY KEY (id)

ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

/* 테이블 조회 */

select * from topic;

 

/* 샘플 데이터 삽입 */

INSERT INTO `topic` (`id``title``description``author``created`VALUES(1'harry potter','magic is power''sanghyun', now());

INSERT INTO `topic` (`id``title``description``author``created`VALUES(2'lord of the ring''ring is mine''sanghyun', now());

INSERT INTO `topic` (`id``title``description``author``created`VALUES(3'venom''black venom is fighter''sanghyun', now());

INSERT INTO `topic` (`id``title``description``author``created`VALUES(4'spiderman','spider is red''sanghyun', now());

cs

 

 

 

 

 

8. php파일 만들어 db 연결하기

 

 

1

2

3

4

5

6

7

8

9

10

11

// 경로 이동해

cd /var/www/html

 

// db.php 만든다.

sudo vi db.php

 

// rds.php 만든다.

sudo vi rds.php

 

// rds_receiver.php 만든다.

sudo vi rds_receiver.php

cs

 

db.php 내용은 다음과 같다.

 

1

2

3

4

5

<?php

// mysqli_connect("엔드포인트주소","사용자이름","비밀번호","db스키마명");

$write = mysqli_connect("mydb2.ceczqdx83uhe.ap-northeast-2.rds.amazonaws.com","sanghyun","abcdefg1234","o2");

$read = mysqli_connect("mydb2.ceczqdx83uhe.ap-northeast-2.rds.amazonaws.com","sanghyun","abcdefg1234","o2");

?>

Colored by Color Scripter

cs

 

 

rds.php 내용은 다음과 같다.

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<!DOCTPYE>

<html>

 <head><meta charset="utf-8"></head>

  <body>

  <form action="rds_receiver.php" method="post">

       <p>

         제 목 :

         <input type="text" name="title">

       </p>

       <p>

         본 문 :

         <textarea name="description">

         </textarea>

       </p>

       <p><input type="submit"></p>

   </form>

   <ul>

<?php

include('db.php');

$sql="SELECT * FROM topic";

$result=mysqli_query($read,$sql);

 

while($row=mysqli_fetch_assoc($result)){

 $title=mysqli_real_escape_string($read,$row['title']);

 print("<li>{$title}</li>");

}

?>

    </ul>

   </body>

</html>

Colored by Color Scripter

cs

 

 

rds_receiver.php 내용은 다음과 같다.

 

 

1

2

3

4

5

6

7

8

<?php

include('db.php');

$title = mysqli_real_escape_string($write$_POST['title']);

$description = mysqli_real_escape_string($write$_POST['description']);

$sql = "INSERT INTO topic(title, description, author, created) VALUES('{$title}','{$description}','sanghyun',NOW())";

mysqli_query($write,$sql);

header("Location: rds.php");

?>

Colored by Color Scripter

cs

 

 

결과를 확인하면

select와 insert 모두 잘 되는 것을 확인할 수 있었다.

 

 

 

 

 

--------------------------------------------------------------------------------------------------------------------------

 

 

9. AWS server characterset 변경하기

 

데이터에 한글을 넣으면 ?나 특수문자 등 깨지는 현상 발생한다면 charset을 utf8로 바꿔줘야한다.

 

 

 

 

Server characterset과 Db characterset을 utf로 바꾸려면 aws rds의 파라미터그룹으로 접근해

파라미터 편집을 통해 캐릭터셋을 변경해줘야한다. 파라미터 그룹에서 

 

 

 

 

 

utf8로 바꾼뒤 db파라미터구성을 수정하여 DB 인스턴스를 재부팅하면 잘 적용되어 나온다.

 

 

 

 

 

 

출처 : https://shlee0882.tistory.com/182

반응형
Comments