Linux를 통해 HTTP 서버 lighttpd를 시작합니다.생성 대상
17445 단어 LinuxlighttpdHttpServerPython
주류 OSS의 HTTP 서버는 보급률 1위인 아파치, Nginx 등으로 왠지 lighttpd다.삽입에 사용 (메뚜기 63;)경량화된 재미있는 서버.
나는 보도를 아래 세 가지로 나누어 소개하고 싶다.이번에는 cgi로 가져올 때까지.
HTTPS 도입을 통한 보안 강화이 분에 관해서는 Qualys SSL Labs의 SSL Server Test 심층 발굴 기사가 아닐까 싶습니다.
lighttpd 소개
위키백과
lighttpd(광각,'Lightty'라고도 부른다)는 안전하고 고속하며 표준을 준수하고 유연한 방향으로 디자인된 웹 서버로 고속성을 중시하는 환경의 최적화를 중시한다.
메모리 소모량이 적고 CPU 부하가 적은 고속 동작을 목적으로 하기 때문에 부하에 문제가 있거나 정적 내용과 동적 내용을 구별하여 보내는 상황 등에 적합하다.
기능이 뛰어나고 비대하기 쉬운 HTTP 서버에서는 안전하고 고속, 가벼운 Lighty를 제창하는 서버입니다.시스템에 끼워 넣은 제품과의 통신을 가방으로 들여다보면 간혹 볼 수 있다.
또한 여기.에서 간단하게 소개한 바와 같이
Chain of Responsibility
의 생각, FD가 등록된 이벤트 드라이브, 매크로의 사용 방법이 재미있고 코드를 보면 상당히 재미있다.그리고 단식홍으로 이루어진 게 확실해.그렇다면 고속이 매물로 떠오르는 요소는 무엇일까?이쪽도 재밌어요.
관영 위키도 있어요. 관심 있으신 분은 가세요.
환경을 구축하다
Ubuntu 18.04 데스크톱
설치하다.
App install 기본값으로 설치할 수 있다니!
apt install lighttpd
다만 이번에는 원본에서 설치한 것이다.버전은lighttpd-1.4.48입니다.구축~설치
1 . 다운로드여기.부터 시작합니다.
2 . 필요한 앱을 설치합니다.※1
sudo apt-get install libpcre3-dev bzip2
3 . 코드에서 다음 조작을 실행합니다./configure
make
make install
결과,/usr/local/아래에 프로그램이 설치되었습니다.lighttpd 호스트는 /usr/local/sbin/
에 있습니다.이렇게 하면 설치할 수 있어요.
※ 1 위트하우스 옵션은 어느 것이든 무효화할 수 있지만, 그렇지 않으면 싫기 때문에 이번에도 필요한 앱을 도입했습니다.
참고:
1, 4, 48 갈까요?최신 버전과openssl용 모듈,modopenssl을 가져왔습니다.
그러나 기본값은 유효하지 않습니다.
부팅
이런 느낌.설정 파일을
-f
에 지정합니다.-D
는 전장 운행이다.sudo /usr/local/sbin/lighttpd -f /usr/local/www//lighttpd.conf -D
설정
설정 파일의 샘플은 원본
lighttpd-1.4.48/doc/config/
, lighttpd-1.4.48/doc/config/conf.d
에 많이 있습니다.이번 설정에 대해 대략적인 설명을 했다.
첫 번째 설정: 문서 루트를 위한 첫 페이지 열기
lighttpd를 편리하게 사용할 수 있는 기능 중 하나는 플러그인이다.가져오기 방법 등은 별도로 설명되며, 기본적으로 다양한 플러그인도 있다.
다음과 같은 형식으로 설정합니다.최소한 이 두 개가 있으면 탑 페이지를 표시할 수 있다.
lighttpd.conf
server.modules = (
"mod_access",
"mod_alias",
)
문서 경로가 서버입니다.문서-rot을 통해 설정합니다.lighttpd.conf
var.server_root = "/usr/local/www/"
server.document-root = server_root + "/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
index-file.names = ( "index.php", "index.html" )
아무튼 Hello World 등급의 간단한 것들 index.열릴 것 같아서요.근데 이것만 있으면 index.)에서 png이나javascript 등이 있으면 동작하지 않습니다.
mimetype 설정이 없으면 재미있는 페이지를 만들 수 없습니다.
전선의 견본을 직접 가져오너라.
lighttpd.conf
## mimetype mapping
include "conf.d/mime.conf"
mime.confmimetype.assign = (
".pcf.Z" => "application/x-font-pcf",
".tar.bz2" => "application/x-gtar-compressed",
".tar.gz" => "application/x-gtar-compressed",
中略...
"README" => "text/plain; charset=utf-8",
"Makefile" => "text/x-makefile; charset=utf-8",
# enable caching for unknown mime types:
"" => "application/octet-stream"
)
준비한 견본, 총 552줄의 Mimetype 정의!mimetype의 정의는light의 mime입니다.conf로 확인해 보세요!수준.
이쪽으로 읽으면 그림과 js가 모두 옵니다!
나중에 설정
/usr/local/www/html
하면 다음 페이지는 OK!Doxgen 출력 파일에서 TOP을 확인했습니다.
cgi 설정
HTTP 서버를 간단하게 활용하세요!그럼 일단 cgi죠?
스크립트 언어 프로그램은 http를 통해 실행할 수 있습니다.
우선 설정이다.다음 세 시면 됩니다.이것도 준비된 샘플의 conf에서 끌어온 것이다.
server.modules의modcgi 플러그인 가져오기(기본값)
alias.url→
http://IP/cgi-bin
와 환경의 폴더 연결cgi.assign→사용 가능한 확장자 지정
## cgi.assign
server.modules += ( "mod_cgi" )
alias.url = ( "/cgi-bin" => "/usr/local/www/cgi-bin" )
$HTTP["url"] =~ "^/cgi-bin" {
cgi.assign = ( ".cgi" => "/bin/sh",
".py" => "/usr/bin/python3.6")
}
이로써 http://IP/cgi-bin/スクリプト名
'/usr/local/www/cgi-bin/스크립트 이름' 의 모든 스크립트를 실행합니다.(틀려도/bin 따위는 지정하지 마세요.)
cgi 사양
HTTP 요청
QUERY_STRING
에 저장됩니다.ヘッダー
\r\n
ボディ
의 형식으로 표준 출력을 진행하면 된다.눈썹을 생략해도 lighttpd는 Content-Type:text/plain
에 마음대로 눈썹을 추가합니다.간단하네요!
샘플QUERY_STRING 사용법
※Python3.6의 샘플.
QUERY_STRING이 환경 변수로 설정되어 있기 때문에 이렇게 취할 수 있습니다.
이 견본에서 조회는 키=>value 형식으로 표시됩니다.
다른 cgi에 대해 help를 출력할 수 있습니다.
show_query.py
import sys, os
query_string=os.environ.get("QUERY_STRING")
sys.path.append('..')
from util.command import show_help
command=[""]
help_str='Show query string'
if show_help([help_str] + command):
sys.exit()
result=''
if not query_string:
print('Empty query')
else:
queries=query_string.split("&")
for i, query in enumerate(queries):
print(i, '=>' , query)
예컨대http://IP/cgi-bin/show_query.py?test=1&test2=2
방문하면 이렇게 되는 느낌.0 => test=1
1 => test2=2
샘플텍스트 이외의 Content-Type도 사용할 수 있습니다!
또한 텍스트뿐만 아니라 다른 Content-Type도 지정할 수 있습니다.
예를 들어 "}"에
Content-Type: text/html
의 스크립트를 표시하고 지정하면 "}"형식이 됩니다.이 샘플에서 가져온 cgi의 도움말은
--help
에서 얻어서 표로 돌아갑니다.help.py
import sys, re
#テーブルを作る
def create_table(fname, help_list):
result='<tr>\n'
result+=' <td>' + fname + "</td>\n"
result+=' <td>' + help_list[0] + "</td>\n"
result+=' <td> '
for i, cmd in enumerate(help_list):
if i == 0:
continue
result+=cmd + ' '
result+=' </td>\n'
result+='</tr>\n'
return result
중략help.py
#htmlべた書き
html='''<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<style>
table{
border-collapse:collapse;
margin:0 auto;
}
td,th{
padding:10px;
border-bottom:solid #ccc;
}
th{
border-bottom:5px solid #ccc;
}
table tr th:nth-child(odd),
table tr td:nth-child(odd){
background:#e6f2ff;
}
</style>
<body>
<table>
<thead>
<tr>
<th>cgi name</td>
<th>usage</td>
<th>use system command</td>
</tr>
</thead>
'''
#cgi分のヘルプメッセージをテーブル化
for cgi, help_list in help_dict.items():
html+=create_table(cgi, help_list)
html+='''
</table>
</body>
</html>'''
#HTTPヘッダーを表示
print("Content-Length: " , len(html))
print("Content-Type: text/html")
print("")
#HTTPボディとして作成したhtmlを表示
print(str(html))
출력은 이런 느낌.UI 연관성은 문외한이지만, 모처럼 > 샘플이어서 이쪽 디자인을 완전히 참고했습니다.
패션 테이블 디자인 샘플 15개
설정/ cgi 샘플
도움말에 제공된 cgi 견본과 프로필을 다음과 같이 제출합니다.
https://github.com/developer-kikikaikai/lighttpd_setting
도입에 대한 소감.
환경구조계는 푹 빠진 인상을 주지만 소스 안에 있는 doc/config/conf.d가 충실하기 때문에 쉽게 도입할 수 있다.
알고 있었어.lighttpd의wiki가 의외로 유지되지 않은 부분이 있었기 때문에 이 충실도는 의외였다.
또한minetype의 기록은 대단합니다!종합 사이트에서 표현할 수 없는 충실도가 있다.
계속 검색하고 있으니 이lighttpd 설정 파일을 보도록 하겠습니다.
그 후python, 너무 즐거웠어요!
이렇게 하면 학급 설계도 할 수 있고 C와 다른 언어와의 친화력도 좋다고 하니 재미있다.
참고 자료
python 초보자의 가져오기 tips처럼 참고
설치 시
설치 시 참조
일부 cgi화의 편리한 명령 일람표
Linux 자원 모니터링 및 확인 명령 역기
참조
패션 테이블 디자인 샘플 15개
파이썬의 참고서
• 문자열, 배열 등 기본 정보
[Python 입문] split 함수를 통해 문자열을 분할하는 방법
파이썬 스타일의 코드 쓰기
Python에서 목록(배열)에 요소를 추가하는 응용 프로그램, extend, insert
• 파일 작업
Python 작업 파일 사용하기
Python을 통해 파일, 디렉터리 (폴더) 크기 가져오기
・표준 명령 집행 시스템
ptyhon에서 유닉스 명령 실행하기
python 3의bytes형과str형의 비교 및 변환 방법
・ 기타python 파일 포함
파이썬의 import 요약
· 2진 데이터 입력 출력 (cgi에서 mp4 동영상을 발표할 때 조사)
바이너리 읽기와 쓰기 등 상세한 내용
표준 출력의 이진 모드로 출력 (linux)
Reference
이 문제에 관하여(Linux를 통해 HTTP 서버 lighttpd를 시작합니다.생성 대상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/developer-kikikaikai/items/f01599109ba1370a40d7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)