1. bitnami WAMP를 통해 웹 서버 설치
- bitnami WAMP는 Apache, MySQL, PHP를 설치해주는 솔루션
- /Applications/mampstack-7.3.21-0/apache2 에서 작업 진행
2. Python 설치 (https://www.python.org/downloads/)
3. Python 작업할 폴더 만들고 terminal에서 해당 폴더 이동
4-1. Python 실행 - CLI
- terminal에서 python3 입력하고 엔터하면 python 사용가능
- python 종료시에는 exit()
4-2. Python 실행 - File
- /Applications/mampstack-7.3.21-0/apache2/htdocs에 파일 생성(helloworld.py)
- helloworld.py 코드 입력
a = 3+4+5
b = a/3
print(b)
- teminal에서 /Applications/mampstack-7.3.21-0/apache2/htdocs 이동
- teminal에서 python3 helloworld.py 실행
** 매번 python3라는 명령어를 넣어 파일을 실행하는 것은 불편
** helloworld.py 실행 권한 필요
5. helloworld.py 실행 권한 주기
- teminal에서 /Applications/mampstack-7.3.21-0/apache2/htdocs 이동
- sudo chmod a+x helloworld.py
(sudo 슈퍼관리자의 권한으로 명령, ch 변경, mod 권한모듈, a+x 모든 사용자에게 실행권한 추가)
- ls -al로 파일 상태가 -rwxr-xr-x로 바뀌었으면 권한 부여된거임
6. helloworld.py이 Python에 의해서 실행되게 하기
- teminal에서 type python3 실행해면 python3의 경로 나옴
- helloworld.py 파일에 #!경로 넣기 (이 경로에 해당되는 python 인터프리터를 이용해 실행하라는 의미)
#!/Library/Frameworks/Python.framework/Versions/3.8/bin/python3
a = 3+4+5
b = a/3
print(b)
- teminal에서 ./helloworld.py 실행
** 파이썬을 버전업 됐거나 다른 컴퓨터에서는 실행하지 못함 -> 이식성 낮음
7. 이식성을 높이기
- Unix계열은 표준처럼 설치된 프로그램이 있음 /usr/bin/env
- env에게 python3의 위치를 물어보고 실행
#!/usr/bin/env python3
a = 3+4+5
b = a/3
print(b)
8. 프로그램 결과 웹페이지에 출력하기
- Apache에게 확장자가 py인 파일은 python문법에 맞게 처리후 사용자에게 전달해달라고 해야함
- /Applications/mampstack-7.3.21-0/apache2/conf에서 httpd.conf 파일 열기
-> httpd.conf은 Apache가 동작하는 기본적인 방법을 설정하는 파일
- httpd.conf 파일에서 mod_cgi검색
- #LoadModule cgid_module modules/mod_cgid.so에서 # 지우기
-> 웹서버와 파이썬을 cgi방법으로 연동하는데 Apache는 기본적으로 꺼져있기에 #을 지워서 활성화 시킴
- httpd.conf 파일에서 DocumentRoot검색
-> DocumentRoot은 사용자 요청이 들어왔을 때 해당 디렉토리에서 찾으라고 하는 설정
- <Directory 디렉토리></Directory> 내부의 가장 하단에 코드 넣기
<Directory "/Applications/mampstack-7.3.21-0/apache2/htdocs">
내용
<Files *.py>
Options ExecCGI
AddHandler cgi-script .py
</Files>
</Directory>
-> Option ExecCGI : CGI 기능 활성시킴
-> AddHandler cgi-script .py : 확장자가 py인 파일은 CGI로 실행시킴
- helloword.py 코드 바꾸기
#!/usr/local/bin/python3
print("content-type:text/html; charset=UTF-8\n")
a = 3+4+5
b = a/3
print(b)
-> #!/usr/bin/env python3는 오류가 생겨 #!/usr/local/bin/python3로 변경
-> 웹서버가 웹브라우저에 어떻게 출력해야하는지 알려주는 코드 추가 print("content-type:text/html; charset=UTF-8\n")
- 설정이 바뀌었으니 웹 서버 껐다 켜기(Bitnami MAMP - Apache Web Server - Restart)
- http://localhost:8000/helloworld.py으로 접속
'Dev > Python' 카테고리의 다른 글
[Python] 파일 읽기 open().read() (0) | 2020.08.22 |
---|---|
[Python] cgi.FieldStorage() (0) | 2020.08.22 |
CGI? (0) | 2020.08.21 |
Python을 배우는 이유? (0) | 2020.08.20 |
Python으로 웹 애플리케이션 구현? (0) | 2020.08.20 |