리눅스 서버에 아파치 설치 및 Maria DB를 연동하는 방법에 대해서 간단하게 알려볼려고 합니다.
단순하게 php 파일을 활용한 DB 연결 체크로써 이 단계 이후 포스팅에서는 간단하게 APM 구조에서 웹페이지를 만들겠습니다.
포스팅 목차
1. Apache(httpd) 설치 및 설정
Apache 설치
모든 과정은 root 권한으로 실행되니 참고 해주시면 됩니다.
root 가 불가능한 경우 sudo 등을 활용하여 작업을 진행합니다.
아파치 패키지 설치 및 서비스 시작을 합니다. status 상태 active 확인을 합니다.
# Apache 설치
dnf install httpd -y
# Apache 서비스 시작
systemctl start httpd
# 시스템 부팅 시 자동 시작 설정
systemctl enable httpd
# 상태 확인
systemctl status httpd
방화벽 설정
http, https 포트인 80,443을 리눅스 서버 방화벽에서 오픈 및 재실행
# HTTP(80) 포트 개방
firewall-cmd --permanent --add-service=http
# HTTPS(443) 포트 개방 (필요한 경우)
firewall-cmd --permanent --add-service=https
# 방화벽 설정 reload
firewall-cmd --reload
2. MariaDB 설치 및 설정
MariaDB 설치
아파치 설치와 동일하게 MariaDB 설치 및 서비스 시작을 하여 status 상태가 정상인지 확인합니다.
# MariaDB 설치
dnf install mariadb-server mariadb -y
# MariaDB 서비스 시작
systemctl start mariadb
# 시스템 부팅 시 자동 시작 설정
systemctl enable mariadb
# 상태 확인
systemctl status mariadb
MariaDB 초기 보안 설정
mysql_secure_installation 설정의 경우 하단 글을 참고해주세요.
# 보안 설정 실행
mysql_secure_installation
3. MariaDB 사용자 생성 및 권한 설정 방법
MariaDB 접속
디비 보안 설정이 완료되면 php에서 사용할 데이터베이스 사용자 생성 및 설정을 진행합니다.
mysql -u root -p
your_username -> 사용자 이름 지정
your_password -> 사용자 패스워드 지정
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
데이터베이스 생성 (your_database_name -> 데이터 베이스 이름 지정)
CREATE DATABASE your_database_name;
여기까지 완료가 되시면 만드신 계정에 대한 권한을 부여합니다.
(your_database_name -> 데이터베이스 이름 지정, your_username -> 이름 지정)
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
4. PHP 설치 (Apache와 MariaDB 연동을 위해)
php 패키지 설치 및 재실행 진행.
# PHP 및 필요한 모듈 설치
dnf install php php-mysqlnd php-json php-gd php-xml -y
# Apache 재시작
systemctl restart httpd
5. 연동 테스트
테스트용 PHP 파일 생성
테스트용 php 파일을 생성 후 예시 처럼 파일 내용 작성
nano /var/www/html/test.php
<?php
$servername = "localhost";
$username = "your_name";
$password = "your_password"; // 설정한 비밀번호
$dbname = "testdb"; // 수정된 데이터베이스 이름
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "MariaDB 연결 성공!";
} catch(PDOException $e) {
echo "연결 실패: " . $e->getMessage();
}
?>
이후 보안을 위해 파일 권한 변경 진행
# 웹 디렉토리 권한 설정
sudo chown -R apache:apache /var/www/html/
sudo chmod -R 755 /var/www/html/
chown -R apache:apache /var/www/html/
chown : 파일/디렉토리의 소유자를 변경
-R : 하위 디렉토리와 파일들에도 재귀적으로 적용
apache:apache: 소유자와 그룹을 apache로 설정
(Apache 웹 서버가 필요한 파일에만 접근 가능)
chmod -R 755 /var/www/html/
명령어 설명
chmod : 파일/디렉토리의 권한을 변경
-R : 하위 디렉토리와 파일들에도 재귀적으로 적용
755 : 권한 설정 값소유자(7): 읽기(4) + 쓰기(2) + 실행(1)그룹(5): 읽기(4) + 실행(1)기타(5): 읽기(4) + 실행(1)
( 웹 서버만 파일 수정 가능, 다른 사용자는 읽기만 가능, 웹 페이지 표시를 위한 읽기 권한, 불필요한 쓰기 권한 제한 )
여기까지 완료가 되신 분들은 웹 브라우저 실행 후
http://your_server_ip/test.php -> 리눅스 서버의 IP입력 후 아래 사진 처럼 정상 접근이 되는지 확인.