서비스 lighttpd가 다시 시작됩니다.

서비스 lighttpd가 다시 시작됩니다.

우분투에서 lighttpd 서비스를 시작하고 있습니다. 내 생각은 CGI를 통해 Python 스크립트를 제공하는 것입니다. 그런데 이렇게 하면 403 Forbidden이 표시되나요? 디버깅 방법과 여기서 누락된 부분을 도와주세요.

vi /etc/lighttpd/lighttpd.conf
server.document-root  "/home/httpd"

lighttpd에서 CGI를 활성화합니다.

vi /etc/lighttpd/lighttpd.conf

server.modules = (
    "mod_access",
    "mod_alias",
    "mod_compress",
    "mod_redirect",
    "mod_cgi",
    "mod_rewrite",
)

lighttpd가 Python 스크립트를 인식하려면 파일 끝에 다음과 같은 새 섹션을 추가해야 합니다.

$HTTP["url"] =~ "^/cgi-bin/" {
  cgi.assign = (".py" => "/usr/bin/python")
}

루트 폴더에 적절한 권한을 부여합니다.

# chown www-data /home/httpd/cgi-bin
# chgrp www-data /home/httpd/cgi-bin

이제 hello.py를 작성해 보세요.

vi /home/httpd/cgi-bin/hello.py

#! /usr/bin/python
#
print "Content-Type: text/html\n\n"
print '<html> <head> <meta-content="text/html; charset=UTF-8"/>'
print '<title> Raspberry  Pi </title> 
<p> 
for count in range(1,100)
print'Hello&nbspWorld...'
print "/p> <body> </html>
Finally, restart the lighttpd service.

서비스 lighttpd가 다시 시작됩니다.

  But, when I try to access the page it says- 

403 forbidden

이것은 /home/httpd 권한이 있는 내 폴더입니다.

/home/httpd$ ls -l
total 8
drwxr-xr-x 2 www-data www-data 4096 Apr  3 17:56 cgi-bin
drwxr-xr-x 2 www-data root     4096 Apr  3 16:41 html

hello.py 입니다

/home/httpd/cgi-bin$ ls -l 
total 4
-rwxrwxrwx 1 root www-data 244 Apr  3 17:56 hello.py

로그에는 여전히 내 Python 바이너리가 아닌 php, html 파일을 찾고 있다고 나와 있습니까?

read(7, "GET / HTTP/1.1\r\nHost: 10.0.2.15\r"..., 4159) = 328
stat("/home/httpd/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/home/httpd/index.php", 0x7ffee411b9f0) = -1 ENOENT (No such file or directory)
stat("/home/httpd/index.html", 0x7ffee411b9f0) = -1 ENOENT (No such file or directory)
stat("/home/httpd/index.lighttpd.html", 0x7ffee411b9f0) = -1 ENOENT (No such file or directory)
setsockopt(7, SOL_TCP, TCP_CORK, [1], 4) = 0
writev(7, [{iov_base="HTTP/1.1 403 Forbidden\r\nContent-"..., iov_len=134}, {iov_base="<?xml version=\"1.0\" encoding=\"is"..., iov_len=345}], 2) = 479
setsockopt(7, SOL_TCP, TCP_CORK, [0], 4) = 0
ioctl(7, FIONREAD, [0])                 = 0
read(7, 0x5606cf6ceaf0, 4159)           = -1 EAGAIN (Resource temporarily unavailable)
epoll_ctl(6, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLERR|EPOLLHUP, {u32=7, u64=7}}) = 0
accept4(4, 0x7ffee411bc10, [112], SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)

답변1

lighttpd 오류 로그를 확인하여 흔적이 있는지 확인하세요.

SELinux 설정을 확인하고 테스트 시행을 일시적으로 비활성화할 수도 있습니다.

관련성이 있을 수 있는 오래된 질문은 다음과 같습니다. https://serverfault.com/questions/335571/selinux-causes-permission-denied-when-starting-lighttpdfastcgi-via-upstart

더 자세한 내용이 궁금하다면 stracelighttpd 프로세스를 통해 요청 시 어떤 시스템 호출이 실패했는지 확인할 수도 있습니다.

관련 정보