[command-line] Python의 http.server (또는 SimpleHTTPServer)에 대한 더 빠른 대안은 무엇입니까?

Python의 http.server (또는 Python 2 용 SimpleHTTPServer)는 명령 행에서 현재 디렉토리의 컨텐츠를 제공하는 좋은 방법입니다.

python -m http.server

그러나 웹 서버에 관한 한, 그것은 매우 슬로프입니다 …

마치 단일 스레드 인 것처럼 동작하며 RequireJS를 사용하여 JavaScript AMD 모듈을로드 할 때 때때로 시간 초과 오류가 발생합니다. 이미지가없는 간단한 페이지를로드하는 데 5-10 초가 걸릴 수 있습니다.

편리한 빠른 대안은 무엇입니까?



답변

node.js에 대한 http-server 는 매우 편리하며 Python의 SimpleHTTPServer보다 훨씬 빠릅니다. 이는 주로 요청을 직렬화하는 대신 요청을 동시에 처리하기 위해 비동기 IO를 사용하기 때문입니다.

설치

node.js를 설치하지 않았다면 설치하십시오. 그런 다음 노드 패키지 관리자 ( npm)를 사용하여 전체 -g설치 옵션을 사용하여 패키지를 설치하십시오 . Windows를 사용하는 경우 관리자 권한의 프롬프트가 필요하며 Linux / OSX에서는 다음 sudo명령을 원할 것입니다 .

npm install http-server -g

필요한 모든 종속성을 다운로드하고 설치 http-server합니다.

사용하다

이제 모든 디렉토리에서 다음을 입력 할 수 있습니다.

http-server [path] [options]

Path는 선택 사항이며 ./public존재 하는 경우 기본값 이며 그렇지 않은 경우 기본값 ./입니다.

옵션은 [기본값]입니다.

  • -p 수신 대기하는 포트 번호 [8080]
  • -a [localhost]에 바인딩 할 호스트 주소
  • -i 디렉토리 색인 페이지 표시 [True]
  • -s또는 --silent자동 모드가 콘솔에 기록되지 않습니다
  • -h또는 --help도움말 메시지를 표시하고 종료합니다

포트 8000에서 현재 디렉토리를 제공하려면 다음을 입력하십시오.

http-server -p 8000


답변

나는 추천한다 : Twisted ( http://twistedmatrix.com )

파이썬으로 작성되고 오픈 소스 MIT 라이센스에 따라 라이센스가 부여 된 이벤트 중심 네트워킹 엔진.

크로스 플랫폼이며 OS X 10.5 ~ 10.12에 사전 설치되었습니다. 무엇보다도 다음을 사용하여 현재 디렉토리에서 간단한 웹 서버를 시작할 수 있습니다.

twistd -no web --path=.

세부

옵션 설명 (자세한 내용 twistd --help은 참조) :

-n, --nodaemon       don't daemonize, don't use default umask of 0077
-o, --no_save        do not save state on shutdown

“web”은 Twisted 비동기 엔진 위에서 간단한 웹 서버를 실행하는 명령입니다. 또한 “web”명령 다음에 명령 행 옵션을 사용할 수 있습니다 twistd web --help. 자세한 내용은 다음 을 참조하십시오 .

  --path=             <path> is either a specific file or a directory to be
                      set as the root of the web server. Use this if you
                      have a directory full of HTML, cgi, php3, epy, or rpy
                      files or any other files that you want to be served up
                      raw.

다음과 같은 다른 명령들도 있습니다 :

conch            A Conch SSH service.
dns              A domain name server.
ftp              An FTP server.
inetd            An inetd(8) replacement.
mail             An email service
... etc

설치

우분투

sudo apt-get install python-twisted-web (or python-twisted for the full engine)

Mac OS-X (10.5-10.12에 사전 설치되어 있거나 MacPorts 및 Pip에서 사용 가능)

sudo port install py-twisted

윈도우

installer available for download at http://twistedmatrix.com/

HTTPS

트위스트는 보안 인증서를 사용하여 연결을 암호화 할 수도 있습니다. 기존 --path--port(일반 HTTP 용) 옵션 과 함께 사용하십시오 .

twistd -no web -c cert.pem -k privkey.pem --https=4433


답변

1.0에는 몇 줄의 코드로 파일을 제공하기위한 http 서버util이 포함되어 있습니다.

package main

import (
    "fmt"; "log"; "net/http"
)

func main() {
    fmt.Println("Serving files in the current directory on port 8080")
    http.Handle("/", http.FileServer(http.Dir(".")))
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

go run myserver.go또는 실행 파일을 사용하여이 소스를 실행하십시오.go build myserver.go


답변

webfs를 사용해보십시오. 작고 node.js 또는 python과 같은 플랫폼을 설치하는 것에 의존하지 않습니다.


답변

Mercurial을 사용하는 경우 내장 HTTP 서버를 사용할 수 있습니다. 제공하려는 폴더에서 :

hg serve

에서 워드 프로세서 :

export the repository via HTTP

    Start a local HTTP repository browser and pull server.

    By default, the server logs accesses to stdout and errors to
    stderr. Use the "-A" and "-E" options to log to files.

options:

 -A --accesslog       name of access log file to write to
 -d --daemon          run server in background
    --daemon-pipefds  used internally by daemon mode
 -E --errorlog        name of error log file to write to
 -p --port            port to listen on (default: 8000)
 -a --address         address to listen on (default: all interfaces)
    --prefix          prefix path to serve from (default: server root)
 -n --name            name to show in web pages (default: working dir)
    --webdir-conf     name of the webdir config file (serve more than one repo)
    --pid-file        name of file to write process ID to
    --stdio           for remote clients
 -t --templates       web templates to use
    --style           template style to use
 -6 --ipv6            use IPv6 in addition to IPv4
    --certificate     SSL certificate file

use "hg -v help serve" to show global options


답변

여기 또 다른 것이 있습니다. Chrome 확장 프로그램입니다

설치되면 Chrome에서 새 탭을 만들고 왼쪽 상단 근처의 버튼을 클릭하여 실행할 수 있습니다.

간단한 GUI가 있습니다. 폴더 선택을 클릭 한 다음 http://127.0.0.1:8887링크 를 클릭하십시오

여기에 이미지 설명을 입력하십시오

https://www.youtube.com/watch?v=AK6swHiPtew


답변

또한 작성된 작은 웹 서버를 개발해 보십시오 . 많은 플랫폼에 대한 바이너리가 여기에 있습니다 .

devd -ol path/to/files/to/serve

작고 빠르며 파일 변경시 라이브 리로드와 같은 흥미로운 옵션 기능을 제공합니다.