ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Web개요
    Practical_skills/web 2019. 8. 14. 11:10

    web에대한 기본지식 - 생활코딩의 영상 참조

    목표
    google map chart api를 통해 만든 html파일들을 local web server를 만들고 그곳에 올려보자
    offline에서 동작하는 것들을 web에서 할수있도록 하면 좋을 것 같다.

    server를 만드는 방법

    apache를 설치하면 web browser에서 local_ip/index.html 를 검색할 때
    var/www/html 경로에 index.html파일이 열리게 된다.

    CGI
    html을 사용하서 web page를 만들어 나가다 보면 workload가 상당하는 문제에 직면하고 이것을 python script처럼 동적인 프로그래밍으로 해결하려고 한 것이 CGI (Common Gateway Interface) 이다. 즉 python, php, jsp, asp, ruby, java, javascript등을 사용하여 웹페이지를 자동으로 생성하는 application이다.

    ubuntu 16.04에서 python CGI 환경구축

    • text editor 설치

      우선 text editor로는 sublime text editor를 사용했다. 이 프로그램을 사용하는 이유는 html 이든 python 이든 폰트와 자동완성을 잘해주기 때문이다.

    • python script 만들고 실행 권한허가

      server와 디폴드로 설정된 문서 루트 경로인 var/www/html에 python script를 만든다.
      그리고 아래 명령을 terminal에 치면

        $ type python  

      python 실행파일 경로가 나오는데 이것을 script 맨위에 써주어
      경로를 얻어와서 어떤 프로그램으로 실행되는지를 명시해준다.

        #! {위에나온경로}  
        #! /usr/bin/python - 예시  

      아래의 명령을 을해 python script의 실행권한을 허가해준다.

        $ sudo chmod a+x {filename.py}  
    • server에서 python script 실행을 위한 환경변수 설정

      server의 환경변수들은 아래의 경로의 파일에서 설정이 된다.
      /etc/apache2/site-enabled/000-default.conf
      확장자 .py인 파일은 python 프로그램을 통해 실행시키라고 명시를 해주어야 한다.

        <Directory /var/www/html>
         AddHandler cgi-script .py
         Options ExecCGI   
        </Directory>

      apache는 기본적으로 cgi 실행권한이 꺼져 있기 때문에 terminal에서 아래의 명령으로 허가한다.

      $ sudo a2enmod cgi

      그리고 아래의 명령으로 apache를 재시작하여 변경된 설정을 적용한다.

      $ sudo service apache2 restart
      • 웹에서 위의 script를 실행시 에러가 났을 때 대처법

      아래의 명령을 실행하고 홈페이지를 새로고침할 때 에러의 내용을 terminal에서 확인할 수 있다.(-f 옵션)

      $ sudo tail -f var/log/apache2/error.log

      아래와 같은 에러의 내용이라면 header에 content-type을 명시해줄 필요가 있다
      malformed header from script 'helloworld.py': Bad header: helloworld! 그래서 python script에 아래와 같은 내용을 맨위에 추가하자

      print("content-type:text/html; charset=UTF-8\n")

    'Practical_skills > web' 카테고리의 다른 글

    symbolic link로 연결된 디렉토리 추가  (0) 2019.08.14
    Query string을 가져오기  (0) 2019.08.14
    문자열 치환  (0) 2019.08.14

    댓글

Designed by Tistory.