로컬에서는 잘 되는데 ☘️

PHP 개요 (웹 시스템, CGI, WAS 원리)

by youngjun._.

PHP개요

📚 목

  • PHP개요
    • 📚 목차
    • PHP(PHP: Hypertext Preprocessor)
      • ✔️ PHP와 같은 서버 사이드 언어의 필요성
      • ✔️ 단점은?
      • ✔️ PHP 동작 원리
    • 웹 시스템(Web System)
    • 클라이언트 사이드와 서버 사이드
      • ✔️ 클라이언트 사이드(client-side)
      • ✔️ 서버 사이드(server-side)
    • 정적 페이지 VS. 동적 페이지
    • CGI 개념
    • 웹 애플리케이션 서버(WAS)

 

PHP(PHP: Hypertext Preprocessor)

Personal Home Page Tools → PHP:Hypertext Preprocessor 의미 변화

  • Hypertext는 문서와 문서가 링크로 연결 (만드는 언어 : HTML)
  • C언어를 기반으로 작성됨

PHP는 서버 측에서 실행되는 프로그래밍 언어

  • 주로 HTML 코드를 프로그래밍적으로 생성(동적으로 빠르게 HTML 문서 작성가능)
  • 데이터베이스와 상호작용 & 데이터 저장 & 표현
  • 웹 프로그래밍을 위한 높은 생산성을 제공하는 언어

적용 사례

  • 서버를 직접 설치해서 운영할 수 있는 설치형 웹 에플리케이션
  • ex) 제로보드, 텍스트큐브, 워드프래스, PHPBB 등

 


 

✔️ PHP와 같은 서버 사이드 언어의 필요성

  • 처음 웹 동작은 Client가 요청하면 Server(PC)에 저장된 정적인 file(HTML)을 Client(웹 브라우저)에 보여주는 방식(아래 그림)
  • 인터넷이 확장 됨에 따라 정적인 file형태의 HTML은 한계가 있다고 판단
  • 새로운 서버 모델이 필요함
  • 생산성이 높은 PHP언어 고안
  • 서버에서 처리해주기 위해 CGI(Common Gateway Interface)를 도입
  • CGI 통신규약을 통해 서버는 요청받은 PHP를 PHP engine으로 처리할 수 있도록 설계
  • 웹브라우저가 응답을 받을 때는 HTML로 받기 때문에 PHP의 존재는 알 수 없고 필요도 없음

 

✔️ 단점은?

  • 복잡한 사이트를 만드는 작업에는 효율적이지 못함
  • 보안에 안정하지 않은 언어 구조

보안상의 취약성으로 인해 JSP나 ASP.NET으로 대체되는 경향이 있음

(▲ 웹 프로그래밍 언어 비교 / 출처 :   http://tcpschool.com/php/php_intro_works )

언어별로 장단점이 있으니 사용 목적이나 상황에 따라 알맞은 언어를 고르는 것이 바람직함!

 

✔️ PHP 동작 원리

PHP는 웹 시스템인 클라이언트 / 서버 환경에서 동작하는 서버 사이드 스크립트 언어

(▲ PHP 동작 원리 / 출처 :   http://tcpschool.com/php/php_intro_works )

 

 

① : 클라이언트가 웹 브라우저를 통해 웹 서버에 원하는 웹 페이지를 요청

② : 웹 서버는 클라이언트가 요청한 웹 페이지의 로직 및 데이터베이스와의 연동을 위해 PHP 파서(parser)에 이에 대한 처리를 요청

③ : 이때 PHP 파서는 데이터베이스와의 연동이 필요하면 데이터베이스와 데이터의 처리를 수행

④ : PHP 파서는 웹 페이지의 로직 및 데이터베이스와의 작업 처리 결과를 웹 서버로 전달

⑤ : 웹 서버는 전달받은 데이터로 웹 페이지를 완성하여 웹 브라우저로 응답을 전송


웹 시스템(Web System)

의미 : 우리가 매일 사용하고 있는 인터넷을 구성하는 시스템

이러한 웹 시스템은 다음 그림과 같이 클라이언트(client)와 서버(server)로 구성

(▲ 웹 클라이언트와 서버 구성 / 출처 :   https://cupjoo.tistory.com/54 )

 

  • 서버(server) : 간단히 말해 웹 서비스를 제공하는 컴퓨터를 의미
  • 클라이언트(client) : 서버가 제공하는 웹 서비스를 이용하는 사용자 또는 사용자의 기기(브라우저)를 의미

클라이언트 사이드와 서버 사이드

웹 시스템에서의 처리 클라이언트와 서버 중 어느 쪽에서 수행되는 작업인가에 따라 다음과 같이 구분할 수 있다.

 

  1. 클라이언트 사이드(client-side)
  2. 서버 사이드(server-side)

✔️ 클라이언트 사이드(client-side)

클라이언트 측에서 수행하는 처리를 의미

  • 웹 시스템에서 브라우저는 서버에서 수신한 HTML 문서를 해석하여 여러분의 화면에 표시
  • 사용되는 언어 : 자바스크립트(JavaScript)

✔️ 서버 사이드(server-side)

서버 측에서 수행하는 처리를 의미

  • HTML 문서 + 서버 사이드 스크립트 언어의 코드를 브라우저에서 요청
  • 서버에서 처리한 후 그 결과를 브라우저에 전송
  • 사용되는 언어 : PHP

이처럼 서버에 미리 저장된 파일이 아닌 서버에 있는 데이터들을 서버 사이드 스크립트 언어로 가공하여 생성되는 페이지를 동적 웹 페이지(dynamic web page)라고 한다.


정적 페이지 VS. 동적 페이지

차이점 : 페이지를 요청한 사용자의 정보와 현재 시점에 따라 내용이 변할 수 있다/없다.

✔️ 정적 페이지

  • 서버에 미리 저장되어 있음
  • 주로 HTML, CSS, Javascript, 이미지로 구성
  • 사용자가 page를 요청하면 서버는 해당 정적 페이지를 반환해주는 역할만 수행

✔️ 동적 페이지

  • 사용자가 page를 요청하면 DataBase로부터 얻은 해당 사용자의 정보나 현재 시점 정보 등을 가공해 새롭게 생성한 page를 반환
  • 동일한 요청이라도 누가/언제 요청했는지에 따라 내용이 달라짐
  • 대부분의 웹 페이지가 동적 페이지에 해당

CGI 개념

위에서 설명한 동적 페이지를 사용자에게 제공하기 위해 웹 서버 내에 프로그래밍 기능이 들어가는 방식을 CGI라고 한다.

(▲ CGI 방식의 웹 구성 / 출처 :   https://cupjoo.tistory.com/54 )

 

하지만 CGI 방식의 경우 웹 서버에서 각각의 클라이언트 요청에 대해 독립적인 별도의 프로세스를 생성해 요청을 처리하므로, 시스템에 부하가 커져 문제가 발생하게 된다.


웹 애플리케이션 서버(WAS)

CGI 방식의 문제점을 해결하기 위해 설계

  • 웹 어플리케이션 서버(WAS)는 웹 서버와 DB 서버 사이에서 미들웨어
  • DB 연동 및 동적 페이지를 생성하기 위한 처리를 한다.

(▲ 웹 애플리케이션 서버(WAS) / 출처 :   https://cupjoo.tistory.com/54 )

 


Reference

  1. TCP school
  2. 생활코딩 PHP 기본수업
  3. 서버와 클라이언트의 동작
  4. 웹 애플리케이션 서버 (WAS)

블로그의 정보

개발하는만두

youngjun._.

활동하기