ubuntu리눅스 환경에서 apache, mysql, php 개발환경 구축

2023. 3. 6. 23:14보안 실습/linux

vmware로 하면 노후화된 노트북이 자꾸 중간에 꺼져서 wsl 환경으로 구축을 하려고 하는데

자료들도 찾기가 어려웠고 wsl환경으로 하니 이상하게 아파치가 죽어버렸다.

 

따라서 vmware ubuntu linux로 아파치 서버를 구축해보고자 한다.

 

php를 구축하는 이유는 php가 C와 비슷하면서도 취약점이 잘 드러나는 특징이 있어 이것으로 워게임문제를 만들기 위해서이다.

 

설치 명령어

sudo apt-get update
sudo apt-get install apache2
sudo apt-get install php libapache2-mod-php php-mysql
sudo apt-get install mysql-server
sudo service apache2 restart

 

아파치 서버를 운용하기 위한 디렉토리로 이동

cd /var/www/html


firefox에서 localhost url 친다.
apache info 웹페이지 확인.

 

 

 

sudo mkdir practice
cd practice
vi info.php



<?php
phpinfo();
?>



firefox에서 localhost/practice/info.php

php info 확인(필자는 버전 8)

 

 

 

 

이제 mysql 기본 환경설정부터 해보자.

mysql -u root -p

 

password 입력


로컬에서 접속가능한 사용자 추가

CREATE USER 'manager'@'localhost' IDENTIFIED BY '1234';

 

이때 외부접속은 'localhost' 자리에 '%' , 특정 ip 접근만 허용이라면 'nnn.nnn.nnn.nnn',특정 대역 ip라면 'nnn.nnn.%'를 쓴다. 필자는 localhost에서 실행할 것으로 localhost를 사용했다.

 

사용자 권한 부여(모든 DB접근 가능)

GRANT ALL PRIVILEGES ON *.* to 'manager'@'localhost';


(일부만 하려면)

grant all privileges on DB이름.* to '사용자'@'localhost';

 

FLUSH PRIVILEGES;
CREATE DATABASE IF NOT EXISTS DBname;
use DBname;

 

필자는 member라는 db를 만들었다.

 

그리고 테스트할 테이블과 튜플들을 넣는 코드를 작성해봤다.

 

간결한 예시

//테이블 생성
CREATE TABLE member(
id char 20 not null,
pw char 20 not null,
primary key(id)
);


//테이블 삽입
insert into member value('admin', '1234');
insert into member value('guest', 'guest');

 

생각없이 쓰긴 했는데 database 이름을 memberdb로 했으면 더 좋았을 것 같다. table 이름이랑 겹친다.

 

간단한 코드로 mysql 연결 확인

저 html 코드는 php랑 뒀을때도 잘 되는지 확인해보려고 그냥 써본 코드이다. 

 

이제 본격적으로 mysql과 잘 소통이 되는지 확인하기 위한 php코드를 짜보려고 한다.

 

cd ..
mkdir login
sudo vi check.php
<html>
<head>
<title>CHECK</title>
</head>
<body>
<h1>PRACTICE</h1>
<form method=get action=check.php>
	<input type=text name=id><br>
	<input type=text name=pw><br>
<input value="submit" type=submit>
</form>

<?php
$conn = mysqli_connect("localhost", "manager", "1234", "member");
 
if ($conn) {
    echo "MySQL 연결 성공";
} else {
    echo "MySQL 연결 실패";
}
 
$result = mysqli_query($conn, "SELECT VERSION() AS VERSION");
$data = mysqli_fetch_assoc($result);
echo "<br>Version : " . $data['VERSION'];


$result2=mysqli_query($conn,"SELECT id FROM member WHERE id='admin'");
$data = mysqli_fetch_assoc($result2);
echo "<br>ID : ".$data['id'];

?>


</body>
</html>

 

firefox에

localhost/login/check.php로 접속

 

 

 

나중에 vmware환경으로 만들어놓고 나중에 외부포트에서 접속하게 해놓고 wsl로 ssh 접속하여 개발하는 식으로 하는 방법을 모색할 생각이다. vmware는 너무 중간에 먹통이 되어버린다.

 

 

+
그냥 아파치만 설치하고 싶다면

sudo -i
apt update & apt install apache2 -y

//systemctl enable apache2 아파치 상시실행
//shutdown -h 종료명령어