개발 강의

생활코딩 - 파이썬 웹 개발 복습 1(CGI로 홈페이지 구현)

Woonys 2021. 9. 6. 10:30
반응형

생활코딩 파이썬 웹 개발 강의를 수강완료하고서 다시 처음부터 복습하는 중이다. 막힐 때마다 어디서 왜 막혔는지 기록해두면서 어떤 점에 취약한지를 확인하고자 글을 쓴다.

 

(전체 복습 링크: https://opentutorials.org/course/3256/19817#:~:text=%EB%B6%80%EB%A1%9D%20-%20Sound%20of%20coding)

(해당 이슈 관련 링크: https://opentutorials.org/course/3256/19817)

 

오늘의 Error log

시작부터 바로 삐걱인다.. 실행해보니 아래와 같이 두 개의 에러가 에러 로그에 기록된 것을 확인했다.

Error log:

[Mon Sep 06 09:20:01.295080 2021] [cgid:error] [pid 23073] (2)No such file or directory: AH01241: exec of '/Applications/mampstack-7.4.22-0/apache2/htdocs/index.py' failed
[Mon Sep 06 09:20:01.299937 2021] [cgid:error] [pid 13276] [client ::1:54262] End of script output before headers: index.py

 

첫번째 이슈:Exec format error

시작부터 삐걱였네..

처음에는 헤더를 빼먹었다고 생각해 바로 print("Content-Type: text/html")을 썼다가 계속 실행해도 안되길래 뭐가 문제인지 엄청 고심했더랬다..

내 실행 로그는 아래와 같다.

 

  1. sudo chmod a+x index.py (permission 부여)
  2. print("Content-Type: text/html") 입력 (2. 헤더 입력 문제)
  3. 웹서버 실행 제대로 되고 있는지 체크 (local:8081로 돌아가고 있는데 이거 어디서 돌아가고 있는지는 아직 명확히 파악이..)

그래도 여전히 안되더라ㅠ

결론적으로 얘기하면 아래와 같이 파이썬 파일 제일 첫 시작줄에 shebang를 써줘야 한다. 

#!/usr/local/bin/python3 (내 운영체제는 맥이어서 왼쪽과 같이 입력해줘야 함)

두번째 이슈: Header

위에서 썼던 것처럼 로그 마지막 줄 내용은 헤더 관련 이슈이다. 이는 CGI 프로그램 양식에 맞게 헤더를 쓰지 않아서이다. 이와 관련해 내용을 확인하려면 "python3 cgi"를 검색해보자. python으로 cgi를 돌릴 때 어떻게 따라야 할지 도큐먼트가 잘 정리되어 있다. 웹브라우저가 웹서버에 요청할 때 웹페이지가 어떤 언어로 작성한 건지 알려줘야 하기 때문. 여기서는 html 코드를 쓰기 때문에 html이라고 입력한다.

 

print("content-type: text/thml)
print() #한 줄 띄우기용

 

다 배운 건데 기억이 안나는 걸 보면 역시 복습은 필수 of 필수!

반응형