ホームページ 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

ビジュアル Web 開発ツール

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 の中核はカーネルであり、ハードウェア リソースの管理と基本サービスの提供を担当します。ただし、カーネルは独立したエンティティではなく、さまざまなデータやプログラムを保存しアクセスするためにファイル システムを必要とします。ファイル システムは、ファイルを整理および管理する方法であり、ファイルの名前、場所、属性、権限、およびその他の情報を定義します。 Linux には、ext4、xfs、btrfs など、さまざまな種類のファイル システムがあり、それぞれに独自の特徴と利点があります。ただし、すべてのファイル システムの中に、Linux システムの基盤および中核となる特別なファイル システムがあります。

Windows 7 で Bat ファイルを実行できないのはなぜですか? Windows 7 で Bat ファイルを実行できないのはなぜですか? Feb 19, 2024 pm 03:19 PM

win7 で butt ファイルを実行できないのはなぜですか? 最近、Windows7 オペレーティング システムを使用している多くのユーザーが .bat ファイルを実行できないと報告しています。これは広範な議論と混乱を引き起こしました。正常に機能するオペレーティング システムが単純な .bat ファイルを実行できないのはなぜですか?まず、.bat ファイルの背景を理解する必要があります。バッチ ファイルとも呼ばれる .bat ファイルは、Windows コマンド インタープリタ (cmd.ex) で使用できる一連のコマンドが含まれるプレーン テキスト ファイルです。

PowerShell を使用してタスクを自動化する方法 PowerShell を使用してタスクを自動化する方法 Feb 20, 2024 pm 01:51 PM

IT 管理者またはテクノロジーの専門家であれば、自動化の重要性を認識している必要があります。特に Windows ユーザーにとって、Microsoft PowerShell は最高の自動化ツールの 1 つです。 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 ファイルを使用してインターネット リソースを開く方法には、次のようなものがあります。 Web ブラウザを使用してダブルクリックして開きます。テキスト エディタで開き、リンク アドレスをコピーしてブラウザのアドレス バーに貼り付けます。コマンド ラインから、「start」または「open」コマンドを使用して URL ファイル パスを指定します。 URL ファイルを開くコマンドを含むスクリプト ファイルを作成します。

Linuxパフォーマンス分析ツールの概要 Linuxパフォーマンス分析ツールの概要 Feb 15, 2024 pm 03:57 PM

Linux オペレーティング システムに興味があり、低レベルの知識が必要なため、この記事をまとめました。基本的な知識のチェックとして機能し、システムのあらゆる側面をカバーします。コンピュータ システム、ネットワーク、オペレーティング システムに関する完全な知識がなければ、ドキュメントに記載されているツールを完全に使いこなすことはできません。さらに、システム パフォーマンスの分析と最適化は長期にわたるシリーズです。このドキュメントは主に、Linux の第一人者であり Netflix のシニア パフォーマンス アーキテクトである Brendan Gregg による更新された Linux パフォーマンス チューニング ツールのブログ投稿と、Linux システム パフォーマンスの最適化に関連する記事を集めてまとめられた包括的な記事です。主に、ブログ投稿に関連する原理とパフォーマンス テスト ツールについて説明します。背景知識: パフォーマンスの問題を分析する場合、

See all articles