lighttpd
경량 웹 서버. http://www.lighttpd.net
youtube, wikipedia 등이 이것을 사용하고 있다고 한다.
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 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>")
잘 작동하는 것을 확인할 수 있다.