X 서버에서 Python으로 만든 웹 응용 프로그램을 실행합니다.

개요


나는 파이톤으로 간단한 웹 애플리케이션을 만들었다.프로그램으로 먼저 개인용 컴퓨터의 로컬 호스트(localhost) 테스트를 거쳐 X 서버에 업로드했다.화면에 영숫자만 나오면 간단하지만 한자를 나타내기 위해 시간이 좀 걸렸기 때문에 절차를 정리해 보겠습니다.
참고로 제작된 프로그램(cgitest.py)은 다음과 같이 형식적으로 숫자를 입력하고 덧셈 결과를 표시하는 간단한 프로그램이다.
cgitest.py
#!/usr/bin/env python3.4
# -*- coding: utf-8 -*-

# 足し算を行うプログラム

import cgi
import datetime as dt
import sys
import io

# 注1 エックスサーバーで漢字を表示するために必要
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
# ヘッダの出力
print("Content-type: text/html; charset=UTF-8")
print("")

# 送信されたフォームデータを取得する
form = cgi.FieldStorage()

# フォームに入力があるか?
if (not 'x' in form) or (not 'y' in form):
    # 入力フォーム
    print("""
        <form>
        <input type="text" name="x"> +
        <input type="text" name="y">
        <input type="submit" value="計算">
        </form>
    """)
else:
    # 結果を表示
    x = form.getvalue("x", "0")
    y = form.getvalue("y", "0")
    add = int(x) + int(y)
    print("答えは", add, "です")

또한 실험용 폴더는 c:\Python입니다. 로컬 호스트에서 실행하기 위해서는 c:\Python 아래에'cgi-bin'이라는 하위 폴더를 만들어야 합니다. 프로그램은 여기에 저장해야 합니다.

로컬 호스트에서 프로그램 실행


로컬 호스트 시작


명령 프롬프트에서 현재 폴더를 cd 명령으로 cgi-bin이 있는 폴더로 이동합니다(여기는 "c:\Python"). 다음 명령을 입력합니다.
python -m http.server --cgi 8080
http.서버는 웹 서버를 실현하는 클래스를 제공하는 모듈입니다.원래는 웹 프로그램으로 서버 기기를 한 대 더 준비해 테스트해야 하는데 어렵기 때문에 같은 기기에서 가상 서버를 준비할 수 있다는 것은 드문 기능이다.또한 cgi는 Common Gateway Interface의 약자로 서버에서 프로그램을 실행하는 구조입니다."8080은 포트 번호라고 불리며 서버 기기에서 http 프로토콜의 정보를 사용한 수신구를 나타낸다.어쨌든python에서 만든 웹 프로그램을 같은 기계에서 실험하는 주문으로 삼으면 된다고 생각합니다.결과적으로 명령 프롬프트에 다음과 같은 내용이 표시되면 준비가 완료됩니다.

브라우저에서 프로그램 시작


브라우저에서 다음 내용을 주소 표시줄에 입력하면 프로그램이 시작하여 창을 표시합니다.로컬 호스트는 c:\Python에서 시작되며 여기서 cgi-bin 폴더의 프로그램: cgitest입니다.py를 호출하는 중입니다.

창에 숫자를 입력하고 계산 단추를 누르십시오.

다음 결과가 표시됩니다.여기서 주의해야 할 것은 주소 표시줄의 표시이다.프로그램 변수 x에서 1, y에 두 개의 숫자가 대입되었는지 확인할 수 있습니다.

이상은 로컬 호스트를 사용하여python을 시작한 프로그램입니다.

X 서버에서 실행


시험이 잘 치러졌기 때문에 제작된 프로그램을 X 서버에 올리면 되지만 실제로는 조금 힘들었다.특히 한자를 표시하기 위해서는 약간의 노력이 필요하다.그래서 시도해 본 일들을 정리해 보자.

절차상의 요점

  • X 서버에서 실행되는python 버전은 3.4이고 첫 번째 줄은 다음과 같다.
  • #!/usr/bin/env python3.4
  • 문자 코드는utf-8을 사용하기 때문에 두 번째 줄에 다음과 같은 코드를 기술합니다.
  • # -- coding: utf-8 --
    - 마찬가지로 다음 기술도 필요합니다.sys.stdout는 print 문장의 출력 목적지를 표시하고, 여기도utf8을 지정합니다.한자를 사용할 때 이 말이 없으면 브라우저에서 화면이 하얗게 변한다.
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
  • 또한"Content-type"도charset=UTF-8을추가했습니다.
  • print("Content-type: text/html; charset=UTF-8")
  • 문자 코드는 위에서 설명한 바와 같이utf-8을 사용하기 때문에 텍스트 편집기(예를 들어 안전성)에 프로그램을 저장할 때 문자 코드는'UTF-8', 줄 바꿈은 CR+LF로 설정한다.
  • X 서버의 주요 특징

  • 업로드 시 ASCII 모드, 문자 코드를 UTF-8로 설정합니다.
  • X 서버의python의 cgi 권한은'705'또는'755'로 업로드 후 임의로 변경됩니다.권한이란 파일의 열람 권한을 설정하는 것으로 계약한 임대 서버와 절차에 따라 수치가 다르다.
  • 마지막으로 프로그램 확장자:py가 cgi로 변경되었습니다.

  • 이상, 많이 썼습니다.꼭 필요한 것은 아닐지 몰라도 XS 서버에 올린 뒤 한자가 잘 표현되지 않아 다양한 반복 실험의 결과를 정리했다.참고하시기 바랍니다.

    좋은 웹페이지 즐겨찾기