php教程 PHP源码 Shell脚本实现的一个简易Web服务器例子分享_linux shell

Shell脚本实现的一个简易Web服务器例子分享_linux shell

May 25, 2016 pm 05:10 PM
쉘 스크립트 웹 서버

这篇文章主要介绍了Shell脚本实现的一个简易Web服务器例子分享,本文实现的Web服务器非常简单实用,可以在你不想安装nginx、apache等大型WEB服务器时使用,需要的朋友可以参考下

假设你想测试网页和一些CGI,而你又不想麻烦Apache安装完整的包。这个快速的shell脚本可能只是你所需要的东西。

简而言之,一个web服务器是一个应用程序,该应用程序将本地文本文件通过网络发送给客户的请求。如果你让另一个程序(例如inetd)处理网络情况下,web服务器可以减少到只有 cat "文件名”发送到stdout。当然,困难将提取部分文件名的HTTP请求字符串:任何一个Bash脚本无法轻易做到。

脚本

我们的脚本应该像其他任何脚本一样,加上一些定义:

#!/bin/bash
base=/var/www


inetd将从远程主机接收到的数据传递给我们的脚本,第一行是标准的HTTP请求,后跟零个或更多的头文件。我们记录下请求,并退出休眠:

read request

while /bin/true; do
  read header
  [ "$header" == $'\r' ] && break;
done

最麻烦的部分:从请求的数据中提取URL并在本地文件中找到对应文件:

url="${request#GET }"
url="${url% HTTP/*}"
filename="$base$url"

返回含有头部信息的文件内容。

if [ -f "$filename" ]; then
  echo -e "HTTP/1.1 200 OK\r"
  echo -e "Content-Type: `/usr/bin/file -bi \"$filename\"`\r"
  echo -e "\r"
  cat "$filename"
  echo -e "\r"
else
  echo -e "HTTP/1.1 404 Not Found\r"
  echo -e "Content-Type: text/html\r"
  echo -e "\r"
  echo -e "404 Not Found\r"
  echo -e "Not Found
           The requested resource was not found\r"
  echo -e "\r"
fi

好了,脚本完了。

安装

为了使它工作,你必须添加以下行到/etc/inetd.conf文件:

www stream tcp nowait nobody /usr/local/bin/webd webd

webd就是你刚刚创建的脚本名称。

使用/etc/init.d/inetd restart使脚本生效后,就可以测试它了。在/var/www下放一些HTML文件,打开你最喜欢的Web浏览器的输入以下地址测试:http://www.php.cn/

请注意,如果你的电脑连接这一个不安全的网络,这个脚本可能不算一个聪明的事,因为谁都可以通过80端口访问你硬盘上的文件。一个更好的办法是使用 tcpd 来保证只允许本地连接。我会写一些相关的信息,发挥你的想象力去干吧!

什么是CGI

就像这个,WEB服务器是没什么用处的,它什么都做不到,而且你可以用其他方法来访问你的文件。我们需要CGI的支持(哪怕是很简单的)。

理论:不通过网络发送一个文本文件,我们运行一个可执行文件,并将其输出。在这之前,我们已经处理的HTTP请求的一步,建立一个 QUERY_STRING变量输出到可执行文件。

要做到这样,你只需要把第三步的代码替换成这个样子的就可以了。

url="${request#GET }"
url="${url% HTTP/*}"
query="${url#*\?}"
url="${url%%\?*}"

filename="$base$url"

if [ "$query" != "$url" -a -x "$filename" ]; then
  export QUERY_STRING="$query"
  echo -e "HTTP/1.1 200 OK\r"
  "$filename"
  echo -e "\r"
  exit 0
fi

当然,这个小玩意的性能无法与Apache相比,这只是一个小玩意。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Mar 14, 2024 pm 06:42 PM

Linux 시스템에서 .sh 파일을 실행하는 방법은 무엇입니까? Linux 시스템에서 .sh 파일은 일련의 명령을 실행하는 데 사용되는 셸 스크립트라는 파일입니다. .sh 파일 실행은 매우 일반적인 작업입니다. 이 기사에서는 Linux 시스템에서 .sh 파일을 실행하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 방법 1: 절대 경로를 사용하여 .sh 파일을 실행합니다. Linux 시스템에서 .sh 파일을 실행하려면 절대 경로를 사용하여 파일 위치를 지정할 수 있습니다. 구체적인 단계는 다음과 같습니다. 터미널을 엽니다.

ESD 파일을 ISO 형식으로 변환하는 방법 ESD 파일을 ISO 형식으로 변환하는 방법 Feb 19, 2024 am 08:37 AM

esd 파일은 Windows 운영 체제에서 사용되는 압축 형식이고, ISO 파일은 디스크 복사본이나 가상 광학 드라이브를 만드는 데 사용되는 디스크 이미지 파일입니다. esd 파일을 iso 파일로 변환해야 하는 경우 ISO 파일이 더 일반적으로 사용되고 사용하기 쉽기 때문일 수 있습니다. 다음은 이 변환 프로세스를 완료하는 몇 가지 일반적인 방법을 소개합니다. 방법 1: ESDDecrypter 사용 ESDDecrypter는 esd 파일을 해독하고 iso 파일로 변환하는 데 특별히 사용되는 프로그램입니다.

Linux 루트 파일 시스템의 비밀 Linux 루트 파일 시스템의 비밀 Feb 15, 2024 pm 01:42 PM

Linux는 서버, 데스크탑, 임베디드 장치 등 다양한 분야에서 널리 사용되는 오픈 소스, 이식성 및 사용자 정의 가능한 운영 체제입니다. 리눅스의 핵심은 하드웨어 자원을 관리하고 기본적인 서비스를 제공하는 커널이다. 그러나 커널은 독립적인 개체가 아니며 다양한 데이터와 프로그램을 저장하고 액세스하려면 파일 시스템이 필요합니다. 파일 시스템은 파일의 이름, 위치, 속성, 권한 및 기타 정보를 정의하고 구성하는 방법입니다. Linux에는 ext4, xfs, btrfs 등과 같은 다양한 유형의 파일 시스템이 있으며 각각 고유한 특성과 장점을 가지고 있습니다. 그러나 모든 파일 시스템 중에는 리눅스 시스템의 근간이자 핵심이 되는 특별한 파일 시스템이 있는데,

Windows 7에서 bat 파일을 실행할 수 없는 이유는 무엇입니까? Windows 7에서 bat 파일을 실행할 수 없는 이유는 무엇입니까? Feb 19, 2024 pm 03:19 PM

win7에서 bat 파일을 실행할 수 없는 이유는 무엇입니까? 최근 Windows7 운영 체제를 사용하는 많은 사용자가 .bat 파일을 실행할 수 없다고 보고했습니다. 이는 광범위한 논의와 혼란을 불러일으켰습니다. 잘 작동하는 운영 체제에서 간단한 .bat 파일을 실행할 수 없는 이유는 무엇입니까? 먼저 .bat 파일의 배경을 이해해야 합니다. 배치 파일이라고도 하는 .bat 파일은 Windows 명령 해석기(cmd.ex)에서 사용할 수 있는 일련의 명령이 포함된 일반 텍스트 파일입니다.

PowerShell을 사용하여 작업을 자동화하는 방법 PowerShell을 사용하여 작업을 자동화하는 방법 Feb 20, 2024 pm 01:51 PM

IT 관리자이거나 기술 전문가라면 자동화의 중요성을 인식해야 합니다. 특히 Windows 사용자의 경우 Microsoft PowerShell은 최고의 자동화 도구 중 하나입니다. Microsoft는 타사 응용 프로그램을 설치할 필요 없이 자동화 요구 사항에 맞는 다양한 도구를 제공합니다. 이 가이드에서는 PowerShell을 활용하여 작업을 자동화하는 방법을 자세히 설명합니다. PowerShell 스크립트란 무엇입니까? PowerShell을 사용한 경험이 있다면 명령을 사용하여 운영 체제를 구성했을 수 있습니다. 스크립트는 .ps1 파일에 있는 이러한 명령의 모음입니다. .ps1 파일에는 기본 Get-Help와 같이 PowerShell에서 실행되는 스크립트가 포함되어 있습니다.

초보자를 위한 Windows PowerShell 스크립팅 자습서 초보자를 위한 Windows PowerShell 스크립팅 자습서 Mar 13, 2024 pm 10:55 PM

우리는 기술 애호가이든 스크립팅 기술을 향상시키려는 전문가이든 초보자를 위해 이 Windows PowerShell 스크립팅 자습서를 디자인했습니다. PowerShell 스크립팅에 대한 사전 지식이 없는 경우 이 문서는 기본 사항부터 시작하여 귀하에게 맞게 조정됩니다. PowerShell 환경의 설치 단계를 익히는 데 도움을 주고 PowerShell 스크립트의 주요 개념과 기능을 안내해 드립니다. PowerShell 스크립팅에 대해 더 자세히 알아볼 준비가 되었다면 이 흥미로운 학습 여정을 함께 시작해 보세요! WindowsPowerShell이란 무엇입니까? PowerShell은 Microsoft에서 개발한 하이브리드 명령 시스템입니다.

URL 파일을 여는 방법 URL 파일을 여는 방법 Mar 28, 2024 pm 06:27 PM

URL 파일을 사용하여 인터넷 리소스를 여는 방법에는 두 번 클릭하여 웹 브라우저를 사용하여 여는 방법이 있습니다. 텍스트 편집기로 열고 링크 주소를 복사하여 브라우저 주소 표시줄에 붙여넣습니다. 명령줄을 통해 "start" 또는 "open" 명령을 사용하여 URL 파일 경로를 지정합니다. URL 파일을 여는 명령이 포함된 스크립트 파일을 만듭니다.

Linux 성능 분석 도구 요약 Linux 성능 분석 도구 요약 Feb 15, 2024 pm 03:57 PM

Linux 운영 체제에 대한 관심과 낮은 수준의 지식에 대한 열망으로 인해 이 기사를 편집했습니다. 기본 지식을 확인하는 역할을 하며 시스템의 모든 측면을 다룹니다. 컴퓨터 시스템, 네트워크 및 운영 체제에 대한 완전한 지식이 없으면 설명서에 있는 도구를 완전히 익힐 수 없습니다. 또한 시스템 성능 분석 및 최적화는 장기적인 시리즈입니다. 본 문서는 주로 Linux 전문가이자 Netflix 수석 성능 설계자인 Brendan Gregg의 업데이트된 Linux 성능 튜닝 도구 블로그 게시물을 결합하고 Linux 시스템 성능 최적화와 관련된 기사를 모아 정리한 포괄적인 기사입니다. 주로 블로그 게시물과 관련된 원리와 성능 테스트 도구를 설명합니다. 배경 지식: 성능 문제를 분석할 때,

See all articles