PHP 서버 구축

날아올라돼지야·2024년 9월 23일

리눅스 마스터 과정

목록 보기
29/31

PHP로 간단한 게시판 서버를 구축하기 위해서는 PHPApache 웹 서버를 설치하고, PHP 파일을 작성하여 기본적인 게시판 기능을 구현할 수 있습니다. 이 게시판은 게시글을 메모리 대신 간단한 텍스트 파일에 저장하는 방식으로 구현하겠습니다.

1. PHP와 Apache 설치

1) PHP 및 Apache 설치

Ubuntu에서 PHP와 Apache 웹 서버를 설치합니다.

sudo apt update
sudo apt install apache2 php libapache2-mod-php

2) Apache 웹 서버 상태 확인

설치가 완료되면 Apache가 실행 중인지 확인합니다.

sudo systemctl status apache2

Apache가 실행 중이지 않다면 다음 명령어로 시작할 수 있습니다.

sudo systemctl start apache2

3) PHP 설치 확인

PHP가 설치되었는지 확인하려면 다음 명령어를 사용합니다.

php -v

2. PHP 게시판 애플리케이션 만들기

이 게시판 애플리케이션은 PHP로 작성되며, 게시글을 텍스트 파일에 저장합니다.

1) 프로젝트 디렉토리 생성

Apache의 기본 웹 루트 디렉토리인 /var/www/html에 게시판 프로젝트 디렉토리를 만듭니다.

sudo mkdir /var/www/html/php-board
cd /var/www/html/php-board

2) 게시판 PHP 파일 작성

다음 PHP 파일을 작성하여 게시판 기능을 구현합니다.

sudo nano /var/www/html/php-board/index.php

index.php 코드 작성

<?php
// 게시글이 저장될 파일
$filename = 'posts.txt';

// 게시글 저장
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = htmlspecialchars($_POST['title']);
    $content = htmlspecialchars($_POST['content']);
    
    // 게시글 데이터를 파일에 저장 (각 게시글은 줄로 구분)
    file_put_contents($filename, "$title\n$content\n===\n", FILE_APPEND);
}

// 게시글 목록 불러오기
$posts = file_exists($filename) ? file_get_contents($filename) : '';
?>

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>PHP 게시판</title>
</head>
<body>
    <h1>PHP 게시판</h1>
    
    <!-- 게시글 작성 폼 -->
    <form method="POST" action="index.php">
        <label for="title">제목:</label><br>
        <input type="text" id="title" name="title" required><br><br>
        
        <label for="content">내용:</label><br>
        <textarea id="content" name="content" required></textarea><br><br>
        
        <input type="submit" value="게시글 등록">
    </form>
    
    <h2>게시글 목록</h2>
    <?php if ($posts): ?>
        <div>
            <?php
            // 파일에서 게시글을 읽고 각 게시글을 구분해서 출력
            $postArray = explode("===\n", $posts);
            foreach ($postArray as $post) {
                if (trim($post)) {
                    $postDetails = explode("\n", $post);
                    echo "<h3>" . $postDetails[0] . "</h3>";
                    echo "<p>" . $postDetails[1] . "</p><hr>";
                }
            }
            ?>
        </div>
    <?php else: ?>
        <p>게시글이 없습니다.</p>
    <?php endif; ?>
</body>
</html>

코드 설명:

  • 게시글 데이터는 posts.txt 파일에 저장되며, 파일이 없으면 새로 생성됩니다.
  • POST 요청을 통해 사용자가 작성한 게시글의 제목과 내용을 받습니다.
  • 각 게시글은 파일에 저장되며, ===로 게시글 사이를 구분합니다.
  • 게시글 목록을 불러올 때는 파일을 읽어와 게시글을 구분하여 출력합니다.

3) 디렉토리 권한 설정

Apache가 파일을 읽고 쓸 수 있도록 디렉토리 권한을 설정합니다.

sudo chown -R www-data:www-data /var/www/html/php-board
sudo chmod -R 755 /var/www/html/php-board

3. Apache 설정 (필요 시)

PHP 파일이 잘 동작하지 않으면 Apache가 PHP 모듈을 로드하고 있는지 확인해야 합니다. PHP 모듈이 로드되어 있지 않다면, 다음 명령어로 Apache에 PHP를 사용하도록 설정합니다.

sudo a2enmod php
sudo systemctl restart apache2

4. PHP 게시판 실행 및 테스트

브라우저에서 http://localhost/php-board/ 또는 http://<서버_IP>/php-board/로 접속하여 게시판을 테스트할 수 있습니다.

  1. 게시글을 작성하고 등록할 수 있습니다.
  2. 등록한 게시글은 페이지 아래에 목록으로 표시됩니다.

5. 요약

  1. PHP와 Apache 설치: sudo apt install apache2 php로 설치.
  2. PHP 게시판 구현: 간단한 텍스트 파일 기반 게시판을 index.php 파일로 작성.
  3. Apache 웹 서버 실행: http://localhost/php-board/로 게시판 애플리케이션 실행.

이 예제는 간단한 파일 기반 게시판이며, 추후 데이터베이스 연동 및 보안 강화로 더 발전된 시스템을 만들 수 있습니다.

profile
무슨 생각하며 사니

0개의 댓글