AWS EC2(Amazon Linux 2) 서버에서 Apache2.4, Python3, wsgi 실행 환경 구축
8999 단어 python3AmazonLinux2wsgiApache2.4
개요
Amazon Linux 2에는 처음부터 Python2가 포함되어 있지만 Python3 및 wsgi 환경을 구축합니다.
WSGI에 대해서는 이쪽.
htps : // / cs. py 응. rg/그럼/3/ぃb 등 ry/ws 꺾어 f. HTML
htps : // 기효. jp/에서 v/후아트레/01/ws기/0001
※Python을 다양한 웹 서버에서 사용하기 위한 구조
Apache, Python3 설치
먼저 Apache2.4를 설치합니다.
sudo su
yum install httpd
그런 다음 python3을 설치합니다.
yum install python3
※이 문장의 작성 시점에서는/usr/bin/python3 에 인스톨 되었습니다.
버전 확인
/usr/bin/python3 --version
원래부터 들어있는 파이썬
/bin/python --version
wsgi 컴파일 준비
mod_wsgi도 yum으로 설치할 수 있지만 python2와 연결되어 버리기 때문에,
소스 코드에서 컴파일합니다.
yum install gcc
※gcc가 없으면, configure시
configure: error: no aceptable C compiler found in $PATH
라는 오류가 발생합니다.
yum install httpd-devel
※httpd-devel이 없으면 congigure 시
/bin/sh: apxs: command not found
라는 오류가 발생합니다.
yum install python3-devel
※python3-devel이 없으면 make시
src/server/wsgi_python.h:24:10: fatal error: Python.h: No such file or directory
라는 오류가 발생합니다.
yum install git
git clone https://github.com/GrahamDumpleton/mod_wsgi.git
cd mod_wsgi
wsgi 컴파일
configure(잘못된 경로)
./configure --with-python=/usr/lib64/python3.7/
아니다.
※이 옵션이라면 make시에
src/server/wsgi_python.h:24:10: fatal error: Python.h: No such file or directory
라는 오류가 발생합니다.
※python3-devel이 없을 때와 같은 에러가 됩니다.
configure(올바른 경로)
./configure --with-python=/usr/bin/python3
make
make install
아래와 같은 메시지가 표시되면 성공입니다.
Libraries have been installed in:
/usr/lib64/httpd/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib64/httpd/modules/mod_wsgi.so
※
/etc/httpd/modules/mod_wsgi.so
가 생성됩니다.
모듈 로드 설정
httpd.conf에 작성해도 좋지만 아래에 파일을 만듭니다.
/etc/httpd/conf.modules.d/
vim /etc/httpd/conf.modules.d/wsgi.conf
내용
LoadModule wsgi_module modules/mod_wsgi.so
httpd.conf 설정을 변경하고 문서 루트에서 프로그램 동작을 허용합니다.
※이 설정이 없으면 Internal Error가 발생합니다.
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.`date "+%Y%m%d"`
vim /etc/httpd/conf/httpd.conf
변경점
Options Indexes FollowSymLinks
→
Options Indexes FollowSymLinks ExecCGI
#AddHandler cgi-script .cgi
→
#AddHandler cgi-script .cgi
AddHandler wsgi-script .wsgi
서버를 다시 시작합니다.
systemctl restart httpd.service
문서 루트 권한을 변경합니다.
chmod 777 /var/www/html
※ 프로덕션 환경에서는 적절한 권한 설정으로 하십시오.
프로그램 설치
wsgi 프로그램의 경우 일반적인 다음과 같은 python 프로그램은 작동하지 않습니다.
hello.py
#!/bin/python
# -*- coding: utf-8 -*-
import sys, codecs
import io
print("Content-Type: text/html\n")
print("Hello World")
브라우저에서는 404 Not Found입니다.
오류 로그(/var/log/httpd/error_log)를 보면
mod_wsgi (pid = 8942) : Target WSGI script '/var/www/html/test.wsgi' does not contain WSGI application 'application'.
라는 오류가 표시됩니다.
github의 샘플과 같이 application 함수가 필요합니다.
htps : // 기주 b. 이 m / G 등은 m mp ぇ 톤 /도 d_ws 기 / t 리에 /에서 ゔ ぉ p / sts
hello world 만들기
vim /var/www/html/hello.wsgi
내용
hello.wsgi
def application(environ, start_response):
status = '200 OK'
output = b'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
권한 변경
chmod 755 /var/www/html/hello.wsgi
브라우저로 액세스
http://ip 주소/hello.wsgi
버전 확인 페이지 만들기
vim /var/www/html/version.wsgi
내용
version.wsgi
import sys
def application(environ, start_response):
status = '200 OK'
response_headers = [('Content-type', 'text/plain')]
start_response(status, response_headers)
return [sys.version.encode()]
권한 변경
chmod 755 /var/www/html/version.wsgi
브라우저로 액세스
http://ip 주소/version.wsgi
아래와 같은 페이지가 나오면 성공입니다.
수고하셨습니다.
Reference
이 문제에 관하여(AWS EC2(Amazon Linux 2) 서버에서 Apache2.4, Python3, wsgi 실행 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uneri/items/84856312c8e94a6748bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)