Clang and Dart의 CGI (1)

3283 단어 dockerdartccgi
요즘은 동적인 홈페이지를 만들 때 'VPS에서 리눅스 인스턴스 실행', '서버리스 프레임워크를 활용한 콘텐츠 배포', 'K8S 등'이 최근 트렌드라고 생각한다.

그러나 아주 최근까지 서버 공간을 임대하고 CGI를 사용하여 동적 콘텐츠를 전달하는 것이 일반적이었습니다.
이 CGI에 대해 Dart와 함께 설명하겠습니다.

Clang and Dart의 CGI



또한 CGI는 Perl과 PHP를 자주 사용하지만 이 문서에서는 C언어와 Dart언어를 대상으로 한다.

CGI는 너무 간단합니다



React Vue Flutter, Lambda with Firebase 등 최근의 Serverless와 비교
배우기 쉬웠기 때문이라고 생각합니다.

CG 란 무엇입니까?



CGI는 공통 게이트웨이 인터페이스를 나타냅니다.
  • https://en.wikipedia.org/wiki/Common_Gateway_Interface
  • https://tools.ietf.org/html/rfc3875

  • 특히 서버와 외부 프로그램 간의 통신 방식을 결정합니다.
    현재 인터페이스와 달리 매우 간단합니다.

    견본


    안녕하세요, 월드!! 클랑에서



    // hello.c
    // gcc hello.c -o hello.cgi
    #include<stdio.h>
    
    int main(int argc, char* argv[]) {
        printf("Content-type: text/html\n\n");
        printf("Hello,World!!\n");
        return 0;
    }
    
    

    CGI용 Hello World 애플리케이션입니다.
    이 앱은 명령어./hello.cgi를 입력하면,

    ""
    콘텐츠 유형: 텍스트/html

    안녕하세요, 월드!!
    ""

    그리고 콘솔에 문자열만 표시해주는 어플리케이션입니다.

    Hello World 웹페이지 되기



    그리고 이 애플리케이션은 Hello World 웹페이지가 됩니다.

    브라우저에서 "http://example.com/hello.cgi "을 호출하면
    "안녕, 월드!!"브라우저에 표시됩니다.

    다음과 같이 서버에서 앱을 호출합니다.
    CGI를 사용하면 응용 프로그램의 출력을 사용자에게 반환할 수 있습니다.

    해보자



    이 다트의 cgi 문서를 위한 도커 환경을 만들었습니다.

    컨테이너 시작



    $ git clone https://github.com/kyorohiro/dartlang_cgi.git
    $ cd ./dartlang_cgi/001
    $ docker-compose build
    $ docker-compose up -d
    

    Docker에서 VSCODE 열기


    VSCode 시작



    브라우저에서 vscode를 엽니다.
    http://127.0.0.1:8443
    ※ 127.0.0.1은 도커 호스트입니다.

    vscode에서 아파치 서버 시작



    $ apache2
    

    빌드 cgi



    $ cd /app/www/cgi
    $ gcc hello.c -o hello.cgi
    $ dart2native hello_dart.dart -o hello_daet.cgi
    

    테스트 cgi



    http://127.0.0.1:8080/을 연 다음 ./app/www/index.html을 엽니다.
    http://127.0.0.1:8080/cgi-bin/hello.cgi을 연 다음 ./app/cgi/hello.cgi 응용 프로그램을 실행합니다.

    추신



    Dart의 코드는 다음과 같습니다.

    main(List<String> args) {
      print("Content-type: text/html\n\n");
      print("Hello,World From Dart!!\n");
      return 0;
    }
    


    모든 코드



    https://github.com/kyorohiro/dartlang_cgi

    다음번



    GET 또는 POST 또는 쿠키 또는 DB

    좋은 웹페이지 즐겨찾기