나와 내 친구는 Debian 10에서 Apache2를 실행하는 서버를 시작했습니다. 나는 단지 cgi 스크립트를 테스트하기 위해 매우 간단한 웹사이트와 Python 스크립트를 작성했습니다. 따라서 기본적으로 사용자가 양식을 작성하고 "제출"을 누르면 'Hello world'가 표시되어야 하지만 "요청한 URL을 이 서버에서 찾을 수 없습니다"라는 404 오류가 발생합니다. 양식은 /var/www/html/form/index.html에 있고 cgi 스크립트는 /var/www/html/cgi-bin/hello.py에 있습니다.
파이썬 스크립트:
#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'
HTML 코드:
<!DOCTYPE html>
<html lang=en dir="ltr">
<head>
<meta charset="utf-8">
</head>
<body>
<dir class="main">
<form action="../cgi-bin/hello.py" method="get">
<fieldset>
<label for="name">Name</label>
<input type="text" name="name">
<label for="mail">E-Mail</label>
<input type="email" name="email">
<label type="phone" for="phone">Phone number</label>
<input type="text" name="phone">
<input id="submit" class="inputs" type="submit" name="send" value="Wyślij" />
</fieldset>
</form>
</dir>
</body>
</html>
Apache2 디렉터리 구성:
# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory "/var/www/html/cgi-bin">
AllowOvveride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/html/cgi-bin">
Options All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>