lighttpd 설치 및 설정

Pt J·2020년 9월 10일
0

Story Of My Life

목록 보기
5/31
post-thumbnail

lighttpd
경량 웹 서버. http://www.lighttpd.net
youtube, wikipedia 등이 이것을 사용하고 있다고 한다.

install

Linux에서 lighttpd를 설치하는 일은 매우 단순하다.
명령어 한 줄만 입력하면 되니까.

$ sudo apt install lighttpd

설치가 완료되면 자동적으로 실행된다.
수동으로 실행하고자 한다면 service 명령어를 사용할 수 있다.

$ sudo service lighttpd start

lighttpd와 관련된 설정파일은 /etc/lighttpd/ 디렉토리에 존재한다.
기본적으로는 /etc/lighttpd/lighttpd.conf 파일이 존재하며
필요에 따라 설정 파일을 추가할 수 있다.

설정 파일에는 다음과 같은 옵션들이 존재한다.

/etc/lighttpd/lighttpd.conf

# snip
server.document-root        = "/var/www/html"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80
# snip

이제 /var/www/html/ 디렉토리에 index.html 같은 파일을 만들어 넣고
localhost:80에 접속하면 HTML 문서를 확인할 수 있다.

원활한 관리를 위하여 /etc/lighttpd//var/www/
www-data 그룹의 멤버만 읽고 쓸 수 있도록 한다.
운영체제에 따라 이것이 default로 되어 있는 경우도 있고 root로 되어 있는 경우도 있다.

$ sudo chown www-data:www-data /etc/lighttpd
$ sudo chown www-data:www-data /var/www

CGI

CGI Common Gateway Interface
'공용 게이트웨이 인터페이스'라고 번역되며,
웹 서버와 외부 응용 프로그램 사이를 연결하는 표준 규약이다.

클라이언트가 웹 서버에 동적 웹 문서를 요청하면 웹 서버는 CGI 프로그램에 작업을 요청하고
CGI 프로그램이 응답한 데이터를 웹 서버가 클라이언트에게 전달하는 방식으로 작동된다.
HTML의 <form> 태그가 CGI 프로그램에 작업을 요청하는 부분이다.

lighttpd에서 CGI를 사용하려면 설정 파일에 관련 내용을 추가해야 한다.

/etc/lighttpd/lighttpd.conf

server.modules = {
	# snip
	"mod_cgi",
}
cgi.assign = (".cgi" => "", ".py" => "/usr/bin/python3")
alias.url += ( "/cgi-bin/" => "/var/www/cgi-bin/" )

설정을 변경한 후 lighttpd를 재시작한다.

$ sudo service lighttpd restart

그리고 CGI를 위한 디렉토리를 만들어 권한 설정을 한다.

$ mkdir /var/www/cgi-bin
$ chmod 775 /var/www/cgi-bin
$ sudo chown www-data:www-data /var/www/cgi-bin

잘 작동하는지 확인하기 위해 간단한 테스트 코드를 작성해보자.
다음 예제는 <사물인터넷을 품은 라즈베리 파이 (제이펍)>의 예제에서 따왔음을 밝힌다.

/var/www/html/login.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Login Form Example</title>
  </head>
  <body>
    <h1>Login Form Example</h1><br/>
    <form name="LoginForm" method="POST" action="/cgi-bin/login.py">
      User ID: <input type="text" name="loginid" size=10>
      Password: <input type="password" name="password" size=10>
      <br/>
      <input type="submit" name="send" value="Send">
    </form>
  </body>
</html>

/var/www/cgi-bin/login.py

#!/usr/bin/python3

import cgi, cgitb

# Exception handling
cgitb.enable()

# Create instance of FieldStorage
form = cgi.FieldStorage()

# Get data from fields by name
login_id = form.getvalue('loginid')
password = form.getvalue('password')

print("Content-type: text/html\n\n")
print("<html>")
print("<head>")
print("<title>Hello - Login CGI Program</title>")
print("</head>")
print("<body>")
print("<h2>Hello %s</h2>" % (login_id))
print("</body>")
print("</html>")



잘 작동하는 것을 확인할 수 있다.

profile
Peter J Online Space - since July 2020

0개의 댓글