Synology NAS에서 Python CGI 파일 제공

Oct 19 2020

500 오류없이 Apache 2.2 또는 2.4에서 Python 파일을 제공 할 수 없습니다. WebStation이 설치되어 있고 python, perl, php, Apache 2.2 및 2.4가 설치되어 있습니다.

아파치로 정적 파일을 잘 제공 할 수 있습니다. 가장 기본적인 "hello world"cgi를 제공하려고하면 500 오류가 발생합니다. 오류는

[cgid : error] [pid 10076 : tid 140542621480832] (2) 해당 파일 또는 디렉토리 없음 : AH01241 : [ '/volume2/Development/WebRepo/cgi-bin/test.py'의 실행이 실패했습니다.

perl 스크립트와 python 스크립트를 모두 실행하려고했습니다. 둘 다 명령 줄에서 성공적으로 실행되지만 Apache에서 제공되지는 않습니다 ( "no such file .."과 동일한 오류). 또한 이것은 404가 아니라 500 오류이므로 파일을보고 있습니다. 정적 HTML 파일을 잘 제공 할 수 있습니다.

파이썬 스크립트는 이보다 더 간단 할 수 없습니다.

#!/usr/bin/python
print "Content-type: text/html\n\n";
print "Hello, World.";

모든 파일에는 755 권한이 있습니다. 파이썬의 경로가 정확합니다. 다음에 무엇을 해야할지 모르겠습니다.

답변

1 saaj Nov 29 2020 at 21:26

Python은를 사용하여 CGI 스크립트를 즉시 제공 할 수 있습니다 http.server.CGIHTTPRequestHandler.

내 Synology NAS에 공식 Python3 패키지가 설치되어 있습니다 (버전 3.8.2-0150). NAS에 SSH를 통해 다음 admin과 같이 스크립트를 추가 할 수 있습니다.

mkdir -p app/cgi-bin

cat << EOF > app/cgi-bin/hello.py
#!/usr/bin/env python3

print('Content-Type: text/html')
print()
print('<html><body><h2>Hello World!</h2></body></html>')
EOF

그 후 다음과 같이 실행할 수 있습니다 ( --directory효과가 --cgi없으므로 cd거기에 유의하십시오 ).

cd app && python3 -m http.server --cgi

그런 다음 내 컴퓨터에서 curl http://nas:8000/cgi-bin/hello.py.

부팅시 실행

작업 스케줄러를 통해 부팅시 자동으로 실행할 수 있습니다.

제어판작업 스케줄러만들기트리거 된 작업사용자 정의 스크립트 . 일반 탭에서 다음을 입력 하십시오.

  • 작업 : Python CGI
  • 사용자 : 관리자
  • 사용 : [x]

그리고 사용자 정의 스크립트 에 대한 작업 설정 탭 :

cd /var/services/homes/admin/app
python3 -m http.server --cgi

그런 다음 수동으로 실행할 수 있습니다. 재부팅시에도 실행되어야합니다.

권한

작업을로 실행하려면 의 관점 root에서 파일 권한이 올바른지 확인하십시오 root. 제 경우에는 어떤 이유로 불일치가 있습니다.

$ ls -l app/cgi-bin/hello.py -rwxrwxrwx+ 1 admin users 122 Nov 29 14:50 app/cgi-bin/hello.py $ sudo ls -l app/cgi-bin/hello.py 
Password: 
-rwx--x--x+ 1 admin users 122 Nov 29 14:50 app/cgi-bin/hello.py