[Mac] 파이톤에서 CGI를 실행할 수 있는 간단한 HTTP 서버를 만들고 싶어요.
할 일
파이톤으로 CGI 이동을 위한 간단한 로컬 HTTP 서버를 구축합니다.
간단하게는 펄이 아닌 파이썬도 CGI 스크립트를 쓰고 싶어한다.
컨디션
CGI 소개
CGI는 Common Gateway Interface의 약자로 웹 서버에 프로그램 처리의 결과를 표시하는 기능이다.
CGI 소개
한 마디로 하면 동적 웹 페이지를 만들기 위해 브라우저에서 값을 얻고 서버에서 처리한 후에 이런 기능을 되돌려준다고 생각합니다.
로컬 HTTP 서버 준비
먼저 서버를 만들어야 하기 때문에 로컬에서 HTTP 서버를 만들어 웹 페이지를 표시합니다.
표시하고 싶은 페이지를 만들기 위해 작업하고 싶은 디렉터리에 인덱스를 넣습니다.쓰다
이번에 보낸 데이터와 푸드를 season으로 만들었어요.
index.html<html>
<head>
<title>サーバーテスト</title>
<meta http-equiv="content-type" charset="utf-8">
</head>
<body>
<form action="/cgi-bin/cgi_test.py" method="POST">
<div>
<label for="name">好きな食べ物</label>
<input type="text" name="food" value="りんご">
<label for="season">好きな季節</label>
<input type="text" name="season" value="冬">
<button>送信</button>
</div>
</form>
</body>
</html>
여기서 주의해야 할 것은 동작의 경로이다"/cgi-bin/CGIスクリプトファイル名"
라는 뜻이다.
CGI 스크립트 파일의 상대 경로이며 여기에 지정된 스크립트 파일 이름을 사용하여 스크립트 파일을 만듭니다.
서버 시작 테스트
서버를 한 번 시작해 보세요.
터미널에서 시작합니다.$ python3 -m http.server 8080
실행하면 이렇게 될 것 같아서요.
우선 8080호를 사용했는데 사용할 수 있는 번호라면 다른 번호도 괜찮아요.Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
그럼 움직이는지 확인해 보세요.
http://localhost:8080/
만약 순조롭게 진전된다면, 나는 다음과 같이 생각한다.
그나저나 발송 버튼을 누르면 틀릴 거예요.
CGI 스크립트에 대한 기술
그러면 CGI 스크립트는 Pyhon으로 기술합니다.
작업 디렉토리(index.}가 있는 디렉토리)에 CGI 스크립트를 기술하는 cgi-bin 디렉토리를 생성합니다.
파일 구조는 다음과 같습니다..
├── cgi-bin
│ └── cgi_test.py
└── index.html
그리고 여기 있는 파일 이름은 아까 index입니다.>에서 지정한 이름을 사용하십시오.
cgi_test.py#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
print("Content-Type: text/html; charset=utf-8\n\n")
print("<html><body>")
form = cgi.FieldStorage()
for key in form:
value = form[key].value
print('<p>%s: %s</p>' % (key, value))
print("</body></html>")
여기에 첫 줄은 반드시 써야 한다#!/usr/bin/env python
.
이걸 쓰지 않으면 OSError: [Errno 8] Exec format error:
오류가 발생합니다.
이것은 지정한 해석기입니다. 자세한 내용은 아래의 문장을 참고하십시오.
#!/빈/sh는 보통 댓글이 아니에요!Shebang이다!(Qiita)
CGI 스크립트를 실행해 보도록 하겠습니다.
그럼 실행에 들어가겠습니다.
아까와 같이 터미널에서 서버를 시작합니다.
여기서 CGI를 실행하려면 옵션--cgi
을 추가합니다.python3 -m http.server 8080 --cgi
http://localhost:8080/ 부팅을 확인한 후 발송 확인을 눌러 주십시오.
성공하다
하면, 만약, 만약...
발송 단추를 눌렀는데도 표시할 수 없을 때 터미널에서 어떤 오류가 발생했는지 확인하십시오.
· 권한이 755가 아닙니다(허가되지 않음)
code 403, message CGI script is not executable
→ cgi-bin 디렉토리의 터미널에서 chmod 755 CGIスクリプト名.py
.
/ 문자 코드가 설정되지 않았습니다.
SyntaxError: Non-ASCII character '\xe5'
→ 파일의 맨 위에 추가# coding:utf-8
합니다.
참고 자료
python에서 쉬운 웹 서버를 구축하여 CGI 테스트를 진행합니다.(Qiita)
Reference
이 문제에 관하여([Mac] 파이톤에서 CGI를 실행할 수 있는 간단한 HTTP 서버를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uni_uniq/items/5e75e057ca0d93a764c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 서버를 만들어야 하기 때문에 로컬에서 HTTP 서버를 만들어 웹 페이지를 표시합니다.
표시하고 싶은 페이지를 만들기 위해 작업하고 싶은 디렉터리에 인덱스를 넣습니다.쓰다
이번에 보낸 데이터와 푸드를 season으로 만들었어요.
index.html
<html>
<head>
<title>サーバーテスト</title>
<meta http-equiv="content-type" charset="utf-8">
</head>
<body>
<form action="/cgi-bin/cgi_test.py" method="POST">
<div>
<label for="name">好きな食べ物</label>
<input type="text" name="food" value="りんご">
<label for="season">好きな季節</label>
<input type="text" name="season" value="冬">
<button>送信</button>
</div>
</form>
</body>
</html>
여기서 주의해야 할 것은 동작의 경로이다"/cgi-bin/CGIスクリプトファイル名"
라는 뜻이다.CGI 스크립트 파일의 상대 경로이며 여기에 지정된 스크립트 파일 이름을 사용하여 스크립트 파일을 만듭니다.
서버 시작 테스트
서버를 한 번 시작해 보세요.
터미널에서 시작합니다.$ python3 -m http.server 8080
실행하면 이렇게 될 것 같아서요.
우선 8080호를 사용했는데 사용할 수 있는 번호라면 다른 번호도 괜찮아요.Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
그럼 움직이는지 확인해 보세요.
http://localhost:8080/
만약 순조롭게 진전된다면, 나는 다음과 같이 생각한다.
그나저나 발송 버튼을 누르면 틀릴 거예요.
CGI 스크립트에 대한 기술
그러면 CGI 스크립트는 Pyhon으로 기술합니다.
작업 디렉토리(index.}가 있는 디렉토리)에 CGI 스크립트를 기술하는 cgi-bin 디렉토리를 생성합니다.
파일 구조는 다음과 같습니다..
├── cgi-bin
│ └── cgi_test.py
└── index.html
그리고 여기 있는 파일 이름은 아까 index입니다.>에서 지정한 이름을 사용하십시오.
cgi_test.py#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
print("Content-Type: text/html; charset=utf-8\n\n")
print("<html><body>")
form = cgi.FieldStorage()
for key in form:
value = form[key].value
print('<p>%s: %s</p>' % (key, value))
print("</body></html>")
여기에 첫 줄은 반드시 써야 한다#!/usr/bin/env python
.
이걸 쓰지 않으면 OSError: [Errno 8] Exec format error:
오류가 발생합니다.
이것은 지정한 해석기입니다. 자세한 내용은 아래의 문장을 참고하십시오.
#!/빈/sh는 보통 댓글이 아니에요!Shebang이다!(Qiita)
CGI 스크립트를 실행해 보도록 하겠습니다.
그럼 실행에 들어가겠습니다.
아까와 같이 터미널에서 서버를 시작합니다.
여기서 CGI를 실행하려면 옵션--cgi
을 추가합니다.python3 -m http.server 8080 --cgi
http://localhost:8080/ 부팅을 확인한 후 발송 확인을 눌러 주십시오.
성공하다
하면, 만약, 만약...
발송 단추를 눌렀는데도 표시할 수 없을 때 터미널에서 어떤 오류가 발생했는지 확인하십시오.
· 권한이 755가 아닙니다(허가되지 않음)
code 403, message CGI script is not executable
→ cgi-bin 디렉토리의 터미널에서 chmod 755 CGIスクリプト名.py
.
/ 문자 코드가 설정되지 않았습니다.
SyntaxError: Non-ASCII character '\xe5'
→ 파일의 맨 위에 추가# coding:utf-8
합니다.
참고 자료
python에서 쉬운 웹 서버를 구축하여 CGI 테스트를 진행합니다.(Qiita)
Reference
이 문제에 관하여([Mac] 파이톤에서 CGI를 실행할 수 있는 간단한 HTTP 서버를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uni_uniq/items/5e75e057ca0d93a764c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
그러면 CGI 스크립트는 Pyhon으로 기술합니다.
작업 디렉토리(index.}가 있는 디렉토리)에 CGI 스크립트를 기술하는 cgi-bin 디렉토리를 생성합니다.
파일 구조는 다음과 같습니다.
.
├── cgi-bin
│ └── cgi_test.py
└── index.html
그리고 여기 있는 파일 이름은 아까 index입니다.>에서 지정한 이름을 사용하십시오.cgi_test.py
#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
print("Content-Type: text/html; charset=utf-8\n\n")
print("<html><body>")
form = cgi.FieldStorage()
for key in form:
value = form[key].value
print('<p>%s: %s</p>' % (key, value))
print("</body></html>")
여기에 첫 줄은 반드시 써야 한다#!/usr/bin/env python
.이걸 쓰지 않으면
OSError: [Errno 8] Exec format error:
오류가 발생합니다.이것은 지정한 해석기입니다. 자세한 내용은 아래의 문장을 참고하십시오.
#!/빈/sh는 보통 댓글이 아니에요!Shebang이다!(Qiita)
CGI 스크립트를 실행해 보도록 하겠습니다.
그럼 실행에 들어가겠습니다.
아까와 같이 터미널에서 서버를 시작합니다.
여기서 CGI를 실행하려면 옵션--cgi
을 추가합니다.python3 -m http.server 8080 --cgi
http://localhost:8080/ 부팅을 확인한 후 발송 확인을 눌러 주십시오.
성공하다
하면, 만약, 만약...
발송 단추를 눌렀는데도 표시할 수 없을 때 터미널에서 어떤 오류가 발생했는지 확인하십시오.
· 권한이 755가 아닙니다(허가되지 않음)
code 403, message CGI script is not executable
→ cgi-bin 디렉토리의 터미널에서 chmod 755 CGIスクリプト名.py
.
/ 문자 코드가 설정되지 않았습니다.
SyntaxError: Non-ASCII character '\xe5'
→ 파일의 맨 위에 추가# coding:utf-8
합니다.
참고 자료
python에서 쉬운 웹 서버를 구축하여 CGI 테스트를 진행합니다.(Qiita)
Reference
이 문제에 관하여([Mac] 파이톤에서 CGI를 실행할 수 있는 간단한 HTTP 서버를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uni_uniq/items/5e75e057ca0d93a764c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
python3 -m http.server 8080 --cgi
발송 단추를 눌렀는데도 표시할 수 없을 때 터미널에서 어떤 오류가 발생했는지 확인하십시오.
· 권한이 755가 아닙니다(허가되지 않음)
code 403, message CGI script is not executable
→ cgi-bin 디렉토리의 터미널에서 chmod 755 CGIスクリプト名.py
./ 문자 코드가 설정되지 않았습니다.
SyntaxError: Non-ASCII character '\xe5'
→ 파일의 맨 위에 추가# coding:utf-8
합니다.참고 자료
python에서 쉬운 웹 서버를 구축하여 CGI 테스트를 진행합니다.(Qiita)
Reference
이 문제에 관하여([Mac] 파이톤에서 CGI를 실행할 수 있는 간단한 HTTP 서버를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/uni_uniq/items/5e75e057ca0d93a764c2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Mac] 파이톤에서 CGI를 실행할 수 있는 간단한 HTTP 서버를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uni_uniq/items/5e75e057ca0d93a764c2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)