이 블로그는 Web 환경을 이용한 원격 제어 기술에 필요한 지식을 공유 하기 위한 블로그 입니다.
실제 개발과 프로그램 예를 위하여 Raspberry Pi와 Raspberry Pi Pico, ATmega128 보드, Arduino Mega 보드(ATmega2560), WiFi 모듈을 사용 합니다.

raspberry-apache-server

Raspberry - Apache server
Raspberry - Apache Web server


  • Apache Web server 설치하기
    • Web server 설치하기
      • 주: PuTTY 터미널 프로그램을 사용하는 경우 "PuTTY에서 SSH를 사용하여 원격접속하기"를 참고하기 바람.

      • Apache Web server를 설치하기전에 먼저 다음 명령으로 Raspberry Pi의 Updating 과 Upgrading를 실행한다.
      • sudo apt update

        sudo apt upgrade

      • 아래 명령으로 Apache2를 설치한다.
      • sudo apt install apache2 -y

      • Apache 설치 종료 후 정상적인 설치를 확인하기 위하여 웹 브라우저를 사용하여 Web server에 접속하기
        • 아래 명령으로 /var/www/html 폴더에 index.html 파일을 확인한다. index.html 파일은 웹 브라우저로 Web sever에 연결 할 때 기본적으로 전송되는 파일이다.
        • cd /var/www/html

          ls -al ls 명령의 결과 아래와 같이 index.html이 표시되어야 한다.

          index.html

        • 내부 IP를 이용하는 경우 아래 명령으로 Pi의 내부 IP address를 확인한다.
        • hostname -I

          IP address 출력 예: 192.168.0.15

          주: 외부에서 인터넷으로 접속하는 경우에는 아래 "외부에서 인터넷으로 접속 하기"를 참고하기 바람.

        • IP address가 윗 예와 같이 출력된 경우 웹 브라우저에서 http://192.168.0.15 로 연결하면 아래와 같이(아래 사진은 페이지의 일부임)Apache2 Debian Default Page 가 출력된다.
        • Apache2 Debian Default Page 예

      • html 폴더의 파일 소유자와 그룹을 변경한다.
      • 현재 /var/www/html 폴더의 소유자가 root로 되어 있기 때문에 아래 명령을 사용하여 파일 소유자와 그룹을 변경한다.

        cd /var/www

        sudo chown -R pi:root html

        윗 예는 소유자가 pi 이고 그룹이 root인 경우의 예 이다.

      • Hello world 웹 페이지 만들기
        • Text editor를 사용하여 index.html 파일을 아래와 같이 변경하고 저장한다.
        • 
          <!DOCTYPE html>
          <html>
          <head>
          <title>My first web page</title>
          </head>
          <body>
          <h1>My first web page</h1>
          <p>Hello world</p>
          </body>
          </html>
                  
        • 웹 브라우저에서 Web server에 연결하여 "My first web page" 가 정상으로 출력 되는지 확인한다.

      참고자료: HTML Tutorial: w3schools.com

    • 외부에서 인터넷으로 접속 하기
      • 원격지에서 Web page 접속을 위한 공유기 설정
        • 인터넷 공유기 관리 도구를 이용하여 포트포워드 설정을 한다. 포트포워드 설정은 사용 하는 공유기에 따라 다를 수 있기 때문에 사용하는 공유기 설명서를 참고 할 것.
        • ipTime 공유기의 설정 예
          • 공유기를 연결 하고 고급설정 -> NAT/라우터 관리 -> 포트포워드 설정을 선택 한다.
          • 포트포워드 설정 창에서
            • 규칙이름: 본인이 기억하기 좋은 이름(예: Ras Web page)을 입력 한다.
            • 내부 IP주소: 공유기에서 확인한 Raspberry PI의 내부 IP 주소(예: 192.168.0.15)를 입력 한다.
            • 외부 포트: 본인이 외부에서 접속 할 때 사용할 포트 번호. 공유기를 다른 PC와 공유하는 경우 외부에서 Raspberry Pi에 접속하기 위하여는 Port 번호(예 3680)를 사용하여 다른 PC와 구분하여 주어야 한다.
            • 내부 포트: Web server에 기본적으로 활당된 번호는 80번 이다. 특별한 이유가 없으면 내부 포트 번호를 80으로 설정한다.
            • 위 설정을 적용하고 저장 한다.
            • 외부(원격지)에서 Raspberry Pi Web page에 접속하기
            • 위 예와 같이 설정(외부 포트 번호: 3680, 내부 포트 번호: 80)한 경우 웹 브라우저에서 접속하기 위한 웹 주소(URL)는 "Host IP address:3680"이 된다. 내부 포트 번호를 80으로 설정한 경우에는 내부 포트 번호를 생략할 수 있다.

              만약 Host IP address가 "myweb.iptime.org" 인 경우 웹 브라우저에서 접속하기 위한 웹 주소(URL)는 아래 예와 같다.

              myweb.iptime.org:3680

      • 인터넷 접속을 위한 공유기 설정을 완료 하면 PuTTY로 인터넷 주소를 사용하여 접속 할 수 있다.
        • PuTTY를 실행 하고
          • Host Name (or IP address): Host name을 입력 한다. 예: choras.iptime.org
          • Port: Port 번호(인터넷 공유기에서 설정한 외부 포트번호)를 입력 한다.
          • Connection type: SSH를 선택 한다.
          • Open 버튼을 Click 하면 PuTTP 창이 열리고, login as: 메세지가 출력 된다.
        • PuTTY 인터넷 접속을 위한 참고자료: 원격 접속(SSH, VNC) 설정 하기

  • Raspberry Pi에 PHP 설치하기
    • Raspberry Pi에 PHP 설치하기
      • 아래 명령으로 PHP를 설치한다.
      • sudo apt update

        sudo apt install php -y

      • PHP 설치 확인하기
        • Text editor를 사용하여 index.php 파일을 아래와 같이 작성하여 html 폴더(index.html 이 위치한 폴더)에 저장한다.
        • <?php echo "Hello world"; ?>

        • 아래 명령으로 Apache2를 다시 시작 한다.
        • sudo service apache2 restart

        • 웹 브라우저에서 아래 예와 같이 index.php에 연결한다.
        • http://192.168.0.15/index.php

        • 웹 브라우저에서 Web server에 연결하여 "Hello world" 가 정상으로 출력 되는지 확인한다.
    • PHP 정보와 설정 확인하기
      • Text editor를 사용하여 phpinfo.php 파일을 아래와 같이 작성하여 html 폴더에 저장한다.
      • <?php phpinfo(); ?>

        위에서 phpinfo() 함수는 PHP 정보와 설정 출력하는 함수이다.

      • 웹 브라우저에서 아래 예와 같이 phpinfo.php에 연결한다.
      • http://192.168.0.15/phpinfo.php

      • 웹 브라우저에서 Web server에 연결하여 PHP 정보와 설정이 정상으로 출력(아래 사진은 페이지의 일부임) 되는지 확인한다.
      • PHP 정보와 설정 출력 예