VM & 운영체제/리눅스

리눅스로 PHP 웹 애플리케이션 만들기

knxwledge 2025. 3. 12. 17:47

개요

이 글에서는 리눅스를 사용하여 다음과 같이 숫자 n을 받아 n행까지 대각선으로 별을 찍는 웹 애플리케이션을 만들어 볼 것이다.

 

 

사용할 컴퓨터의 환경은 다음과 같다.

  • VMware 상의 가상머신
  • 운영체제: Rocky Linux 8.60
  • IP: 192.168.11.11/24
  • 호스트네임: WebApache

사용할 기술은 다음과 같다.

  • 웹 서버 소프트웨어: Apache
  • 언어: HTML, PHP

PHP로 별 출력 프로그램을 작성하는 방법은 이 글에 자세히 정리해 놓았다.


I. Apache 설치

이전에 리눅스에 Apache를 설치하는 글을 올린 적이 있다. 서버를 DB와 연동하려면 Apache 소스 코드를 직접 컴파일 해야하기 때문에 해당 글에서는 직접 컴파일했다. 그러나 간단한 웹 애플리케이션 구동이 목적이라면 여타 소프트웨어와 같이 dnf를 이용해 설치하는 것이 편리하다. 

 

Dnf로 Apache를 설치하는 방법을 알아보자.

 

1. root로 로그인한다.

 

2. httpd 소프트웨어 패키지를 다운로드 받는다.

dnf install -y httpd

 

다음 화면과 같이 설치된다.

 

3. vi 에디터로 httpd 설정 파일을 연다. 설정 파일의 이름은 httpd.conf이고 /etc/httpd/conf 디렉토리에 있다.

vi /etc/httpd/conf/httpd.conf

 

4. ServerName 부분이 주석 처리 되어 있는데, 이 부분을 localhost로 바꾼다. ServerName은 파일의 98번째 행에 있다.

 

5. httpd 데몬을 구동시킨다.

systemctl enable httpd
systemctl start httpd

 

enable은 부팅 시 httpd 데몬을 활성화한다는 뜻이고, start는 현재 시점에서 httpd 데몬을 메모리에 적재시킨다는 뜻이다.

 

6. 서버와 IP 통신이 가능한 컴퓨터의 브라우저로 서버의 IP에 방문해 본다.

 

 

7. HTTP Server Test Page가 뜨면 Apache 서버가 정상적으로 작동하는 것이다.


II. PHP 설치

(20250317 추가: II. PHP 설치 1. ~ 4.)

 

1. PHP 패키지를 다운로드 받는다. 

설치 중 화면

dnf install -y php

 

2. PHP가 정상적으로 설치되었는지 확인하기 위해 test.php 파일을 생성한다. 내용은 "hello world"를 출력하는 것으로 했다.

vi test.php

파일 내용

# 파일 내용
<?php
  echo "hello world \n";
?>

 

3. 파일을 실행한 뒤 hello world가 출력되는 것을 확인한다.

php test.php

 

4. test.php 파일을 삭제한다.

rm test.php
y

III. PHP 코딩

(20250317 수정: II. PHP 코딩 → III. PHP 코딩)

 

1. HTTP Server Test Page를 보면 /var/www/hmtl/ 디렉토리에 파일을 넣어야 한다고 쓰여있다. 해당 디렉토리로 이동한다.

cd /var/www/html

 

2. 디렉토리 안에 index.html 파일을 생성하고, 찍을 행의 개수를 묻는 html 코드를 작성한다.

vi index.html

 

<html>

<head>
    <title>별찍기</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<form method="post" action="star.php">
    몇 행까지 별을 출력할까요? : <input type="text" name="n"><br>
    <input type="submit" name="확인" value="확인">
    <input type="reset" name="취소" value="취소"><br>
</form>
</body>

</html>

 

3. star.php 파일을 생성하고 html로 부터 n을 받아 n행 까지 별을 출력하는 코드를 작성한다.

vi star.php

<html>

<head>
    <title>별찍기</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>

<body>
    <?php
    $n = $_POST["n"];
    print_stars($n);
    function print_stars($n)
    {
        for ($i = 1; $i <= $n; $i++) {
            for ($j = 1; $j <= $i; $j++) {
                echo "*";
            }
            echo "<br>";   # 바뀐 부분
        }
    }
    ?>
</body>

</html>

 

전에 쓴 블로그 글에서 바뀐 부분은 "# 바뀐 부분"으로 표시된 행 하나다. 전에는 터미널에 출력했기 때문에 줄바꿈을 \n으로 하였으나 이제는 HTML 코드로 출력하기 때문에 <br>을 써야한다.

 

4. 다시 서버의 IP를 방문하면 작성한 HTML 폼을 볼 수 있다.

 

5. PHP 코드가 실행되는지 확인하기 위해 폼에 10을 입력한다.

 

6. 10행까지 대각선으로 별이 출력된다.