내 bash 스크립트가 네트워크를 통해 실행될 수 있고 /cgi-bin 디렉토리에 위치하지 않는다는 것을 어떻게 보장할 수 있습니까?

내 bash 스크립트가 네트워크를 통해 실행될 수 있고 /cgi-bin 디렉토리에 위치하지 않는다는 것을 어떻게 보장할 수 있습니까?

내 문서 루트는

 /0/

cgi-bin 디렉토리가 없습니다.

이것은 내 아파치 가상 호스트입니다.

Listen *:80
DirectoryIndex 1

<VirtualHost *:80>
DocumentRoot /0
ServerName domain.tld
ServerAlias www.domain.tld
</VirtualHost>

내가 원하는 것은 이 디렉토리에 bash 스크립트를 배치하는 것입니다.

문서 루트는...

그 안에 나는 .. (test.sh)를 가질 것입니다

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "test"

그게 다야.

이 줄을 추가해야 할 것 같아요

/etc/sudoers

문서..

 apache ALL=NOPASSWD:/0/test.sh

이 모든 것이 bash 스크립트와 python 스크립트를 통해 실제로 내 웹사이트를 실행할 수 있다는 것을 보장하기에 충분합니까?

이게 효과가 있다면..그런 건 무슨 소용이 있겠어요?

mod_wsgi and python for the web ?

test.sh도 실행 가능하게 만들어야 할 것 같아요

chmod +x test.sh

이것이 작동하고 문서 루트를 다음으로 설정하면

index.sh

Python을 웹 프레임워크로 사용하여 시간을 낭비하는 이유는 무엇입니까? 또는 Python 자체도 마찬가지입니다. bash의 웹 버전이 더 간단하고 따라서 더 빠르기 때문입니다. ?

답변1

<Directory "/0" >파일 의 항목을 편집 httpd.conf하고 다음을 추가합니다.

Options +ExecCGI
AddHandler cgi-script .sh 

다음과 비슷한 내용이 나타나야 합니다.

<Directory "/0" >
    ...
    Options +ExecCGI
    AddHandler cgi-script .sh 
    ...
</Directory>

서버를 다시 시작하세요.

# service httpd restart

모든 CGI 파일은 실행 가능해야 합니다( chmod +x <cgi file>). 이 파일은 apache사용자 및 그룹으로 실행 됩니다 apache.

브라우저에서 다음을 가리킵니다.http://<name or IP>/test.sh

CGI는 각 요청이 새로운 프로세스(이 경우 Python 또는 bash)를 시작하므로 스크립트를 실행하는 가장 효율적인 방법은 아니지만 스크립트 구현을 더 쉽게 만듭니다. WSGI기본 CGI 스크립트보다 Python을 실행하는 더 효율적인 방법입니다.

관련 정보