日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2024/9/30 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP服务器脚本实例,Shell脚本实现的一个简易Web服务器例子分享_linux shell 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章主要介紹了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相比,這只是一個小玩意。

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的PHP服务器脚本实例,Shell脚本实现的一个简易Web服务器例子分享_linux shell的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。