개발(dev)/php

[php] 우분투에 php와 apache, maria-db(mysql) 연동하기

dDong2 2022. 12. 13. 22:54

✔️ apt 업데이트하기

 

sudo apt update

 

 

✔️ 우분투에 apache2, mariadb, php library 설치하기

 

sudo apt-get install -y apache2 mariadb-server php libapache2-mod-php php-mysql

 

1) apache2 : 아파치 설치를 위한 패키지

2) mariadb-server : mariadb 설치를 위한 패키지로 mysql과 동일!

3) php : php 설치를 위한 패키지로 안했을 시 설치

4) libapace2-mod-php : apache2와 php를 연동하는 모듈을 위한 설

5) php-mysql : php와 mariadb(mysql) 연동하는 모듈을 위한 설치

 

apache2를 정상 설치하면,

 

 

기본 경로(예를 들면 localhost)에서 다음과 같은 화면이 뜨게 되고,

 

sudo systemctl status apache2

 

위 명령어로 시스템 상태를 확인했을 때, active (running) 상태이면 정상이다!

 

 

✔️ mariadb 설정하기

 

sudo mysql_secure_installation

 

다음 명령을 통해서 몇가지 mariadb 설정을 진행해준다.

 

1) Enter current password for root (enter for none): 비밀번호 없으므로 엔터!

2) Set root password? [Y/n] : root 비밀번호 설정해야 하므로 Y

 

나머지 4개의 설정은 일반적으로 Y로 진행하여 차후에 커스텀 설정하도록 하자.

 

 

✔️ mysql 진입하기

 

mysql -u root -p 이후 위에서 설정한 패스워드를 입력하면

정상적으로 진입할 수도 있고, Access denied for user 'root'@'localhost' 오류를

만날 수도 있다.

 

다음 오류를 만나게 되면 다음과 같이 해결하자.

 

use mysql;
select User, Host, plugin from mysql.user;

# root plugin이 _socket으로 설정되어있는 것을 확인하고,
해당 설정을 mysql_native_password로 변경해주면 된다.

update user set plugin='mysql_native_password' where user='root';
flush privileges;
select user, host, plugin from user;

 

이후 mysql -u root -p 명령어를 재시도하여 로그인하면

정상적으로 접근에 성공할 수 있다.

 

 

✔️ 외부에서 mysql 접근을 위한 설정

 

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

외부에서 데이터베이스의 접근을 위해서 다음 코드를 주석으로 설정하거나 삭제한다.

> bind-address = 127.0.0.1 주석 또는 삭제

> 혹은 bind-address = 0.0.0.0 으로 변경한다.

 

sudo systemctl restart mariadb

 

이후 위의 명령어로 서비스를 재시작해준다.

 

 

✔️ database 생성하고 테이블 만들기

 

mysql -u root -p

create database 데이테베이스명
use 데이터베이스명

 

database를 생성하는 명령어를 통해서 생성하고

해당 데이터베이스에 진입하여준다.

 

create table 테이블명(
	idx int primary key auto_increment,
    id varchar(300) unique not null,
    password varchar(300) not null,
    ...
    regtime datatime default now()
);

 

다음과 같이 자신이 사용할 테이블을 생성하여준다.

 

 

✔️ database 연동 확인하기

 

/var/www/html 경로에서 dbconn.php를 새로 만들어준 뒤,

 

<?php 
    $mysql_hostname = 'localhost';
    $mysql_username = 'root';
    $mysql_password = '루트패스워드';
    $mysql_port = '3306';
    $mysql_charset = 'utf8';

    $connect = new mysqli($mysql_hostname, $mysql_username, $mysql_password);
    var_dump($connect);

    if($connect->connect_errno) {
        echo 'fail : '.$connect->connect_error.'';
    } else {
        echo 'success.';
    }
?>

 

다음과 같이 작성해준다.

그리고 /dbconn.php에 들어가서 정상적으로 var_dump에 해당하는 내용과

success가 페이지에 표시되는지 확인이 되면 성공이다.

 

 

이로써 데이터베이스와 apache를 연동하고 웹 서버를 간단하게 열고,

웹을 구축할 수 있게 되었다. 간단하게 쇼핑몰을 제작해보고,

해당 쇼핑몰에 공격 및 방어를 시도해보는 공부를 진행해보려고 한다. 💪