【Xiao MuがPythonを学ぶ】各種Webサーバーまとめ(Python、Node.js、PHP、httpd、Nginx)

1. Webサーバー

Web サーバーという用語は、ハードウェアまたはソフトウェア、または連携して動作するそれらの全体を指す場合があります。

ここに画像の説明を挿入します
基本的に、ブラウザが Web サーバー上でホストされているファイルを必要とする場合、ブラウザは HTTP 経由でファイルを要求します。リクエストが正しい Web サーバー (ハードウェア) に到達すると、HTTP サーバー (ソフトウェア) がリクエストを受信し、リクエストされたドキュメントを検索し (ドキュメントが存在しない場合は 404 応答が返されます)、HTTP 経由でドキュメントを送信します。ブラウザ。

Web サーバーは、HTTP (ハイパーテキスト転送プロトコル、ハイパーテキスト転送プロトコル) サポートを提供します。その名前が示すように、HTTP は 2 台のコンピュータ間でハイパーテキスト (リンクされた Web ドキュメント) を転送する方法を明示的に提案しています。

プロトコルは、2 台のコンピューター間の通信のための一連のルールです。HTTP はテキスト形式のステートレス プロトコルです。

2、パイソン

2.1 はじめに

https://www.python.org/

Python は、動的データ型を備えたインタープリタ型のオブジェクト指向の高レベル プログラミング言語です。

  • Python はインタープリタ型言語です。これは、開発プロセスにコンパイル部分がないことを意味します。PHP や Perl 言語に似ています。
  • Python は対話型言語です。これは、Python プロンプト >>> の直後にコードを実行できることを意味します。
  • Python はオブジェクト指向言語です。これは、Python がオブジェクト指向スタイル、つまりコードをオブジェクトにカプセル化するプログラミング手法をサポートしていることを意味します。
    ここに画像の説明を挿入します

2.2 インストール

https://www.python.org/downloads/windows/

ここに画像の説明を挿入します

2.3 使用方法

2.3.1 http.server(コマンド)

Python には、サービスを簡単に開くことができるシンプルなサーバー プログラムが付属しています。
python3では、元のSimpleHTTPServerコマンドをhttp.serverに変更する 使用方法は以下の通りです。

cd test
python -m http.server

# 如果不使用默认端口,可在开启时附带端口参数
python -m http.server 8001

# (-b 绑定ip,不指定的话默认是本机ip)
python -m http.server -b 127.0.0.1 

# 下面的命令使用一个特定的目录:
python -m http.server --directory /tmp/

コマンドラインの実行は次のとおりです。

http://127.0.0.1:8000

正常に有効化されると、「Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...」が出力され、ローカル マシンのポート 8000 でサービスが有効化されていることを示します。
ここに画像の説明を挿入します

ブラウザからのアクセスは次のとおりです:
http://127.0.0.1:8000/ を使用すると、www ディレクトリ内の Web ページ ファイルが表示されます (index.html がない場合は、ディレクトリ内のファイルが表示されます)。

http://127.0.0.1:8000

ここに画像の説明を挿入します
バックグラウンドで実行する必要がある場合は、次のようにコマンドの後に「&」記号を追加できます。Ctrl+C を押してもサービスは終了しません。

python -m http.server &

サービスを維持したい場合は、次のようにコマンドの前に nohup を追加して、すべてのハングアップ信号を無視します。

nohup python -m http.server 8001

2.3.2 ソケットサーバー

import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
  • コードは次のように実行されます。
    ここに画像の説明を挿入します
  • ブラウザからのアクセスは以下の通りです。
http://127.0.0.1:8000

ここに画像の説明を挿入します

2.3.3 フラスコ

Flask は、Python で書かれた軽量の Web アプリケーション フレームワークです。WSGI ツールボックスは Werkzeug を使用し、テンプレート エンジンは Jinja2 を使用します。Flask は BSD ライセンスを使用します。
Flask は、単純なコアを使用し、拡張機能を使用して他の機能を追加するため、「マイクロフレームワーク」とも呼ばれます。Flask にはデフォルトのデータベースやフォーム検証ツールがありません。

https://flask.net.cn/
ここに画像の説明を挿入します

  • インストールライブラリ
pip install flask
  • app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, World!'

if __name__ == '__main__':
	app.run()
  • スクリプトコードは次のように実行されます。

ここに画像の説明を挿入します

  • ブラウザからのアクセスは以下の通りです。
http://127.0.0.1:5000

ここに画像の説明を挿入します
または、次のコマンドを使用してスクリプト ファイル app.py を実行します。

flask run

ここに画像の説明を挿入します

2.3.4 ファスナー内

FastAPI は、Python 3.6 以降を使用し、標準の Python 型ヒントに基づいて API を構築するための最新の高速 (高性能) Web フレームワークです。
FastAPI は、NodeJS や Go と同等の非常に高いパフォーマンスを発揮します (Starlette と Pydantic のおかげで)。
FastAPI フレームワーク、高性能、習得が簡単、効率的なコーディング、実稼働対応

https://fastapi.tiangolo.com/zh/
ここに画像の説明を挿入します

  • インストールライブラリ
pip install fastapi
pip install fastapi[all]
pip install uvicorn 
  • main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {
    
    "Hello": "World"}

次のコマンドを使用してスクリプト ファイルを実行します。

uvicorn main:app --reload

実行結果は以下の通りです。
ここに画像の説明を挿入します
ブラウザアクセスは以下の通りです。

http://127.0.0.1:8000

ここに画像の説明を挿入します

3、NodeJS

ここに画像の説明を挿入します

3.1 はじめに

https://nodejs.org/zh-cn

Node.js は、2009 年 5 月にリリースされ、Ryan Dahl によって開発されました。これは、Chrome V8 エンジンに基づく JavaScript 実行環境です。イベント駆動型のノンブロッキング I/O モデルを使用して、サーバー上で JavaScript を実行できます。サイド開発プラットフォーム: JavaScript を、PHP、Python、Perl、Ruby などのサーバーサイド言語と同等のスクリプト言語にします。

Node.js は、いくつかの特別な使用例を最適化し、ブラウザ以外の環境で V8 の実行を向上させるための代替 API を提供します。V8 エンジンは、JavaScript を非常に高速に実行し、非常に優れたパフォーマンスを発揮します。これは、Chrome JavaScript ランタイム上に構築されたプラットフォームです。高速な応答性と容易な拡張性を備えたネットワーク アプリケーションを構築します。
ここに画像の説明を挿入します

3.2 インストール

https://nodejs.org/zh-cn
ここに画像の説明を挿入します

3.3 使用方法

3.3.1 http-server(コマンド)

http サーバーは、構成不要のシンプルなコマンド ライン静的 http サーバーです。運用環境での使用には十分強力ですが、テスト、ローカル開発、学習には十分シンプルでハッキング可能です。

http-server の利点: 静的リソース ファイルの任意のディレクトリをサーバーのディレクトリに作成できるため、バックグラウンドでの重い作業を完全に放棄して、目的のコードを直接実行できます。

  • ノードのバージョンを確認する
node -v
npm -v

ここに画像の説明を挿入します

  • http-server ライブラリをインストールする
npm install -g http-server
# npm install --global http-server

ここに画像の説明を挿入します

cd test
http-server -p 8081
# http-server -a 0.0.0.0 -p 8000

ここに画像の説明を挿入します
ローカル サーバーが起動していることがわかり、cmd ウィンドウで Ctrl + C を入力してサーバーを終了できます。
グローバル インストール後、cmd でその情報を表示できます。

npm view http-server
npm info http-server
// or 
npm -v hs

ここに画像の説明を挿入します

  • http-server で使用可能なパラメータ:
-p 要使用的端口(默认为8080)
-a 要使用的地址(默认为0.0.0.0)
-d 显示目录列表(默认为“True”)   true / false
-i 显示autoIndex(默认为“True”)
-g或--gzip启用时(默认为“False”),它将用于./public/some-file.js.gz代替./public/some-file.jsgzip压缩版本的文件,并且该请求接受gzip编码。
-e或--ext默认文件扩展名(如果没有提供)(默认为'html'-o 启动服务器后打开浏览器窗口
-c设置缓存控制max-age头的缓存时间(以秒为单位),例如-c10  10秒(默认为'3600')。要禁用缓存,请使用-c-1。

npm run を通じて http-server サーバーを起動することもできます。
npm init -y は、フォルダーにデフォルトの package.json ファイルを生成します。

npm init -y

package.json を次のように変更します。

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "awesome.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js",
    "start2": "http-server -a 0.0.0.0 -p 8888",
	"serve": "http-server -p 9090 dist/"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

次に、コマンド ボックスに「npm start」または「npm run start2」と入力します。

npm run start2

ここに画像の説明を挿入します

3.3.2 http

const http = require('http')

const PORT = 3000
const HOST = '127.0.0.1'

const server = http.createServer((req, res) => {
    
    
  res.statusCode = 200
  res.setHeader('Content-Type', 'text/plain')
  res.end('hello world, yxy!\n')
})

server.listen(PORT, () => {
    
    
  console.log(`服务器运行在 http://${
      
      HOST}:${
      
      PORT}/`)
})

または

const http = require('http');
http.createServer(function (request, response) {
    
    
    response.writeHead(200, {
    
    'Content-Type': 'text/plain; charset=UTF-8'});
    response.end('Hello World, yxy!\n');
}).listen(3000);
console.log('Server running at http://127.0.0.1:3000/');
//方式 1:
const http = require("http");
const server = http.createServer(function(req, res) {
    
    
  // ......
});
 
server.listen(3000);

//方式 2:
const http = require("http");
const server = http.createServer();
server.on("request", function(req, res) {
    
    
  // ......
});

server.listen(3000);
  • コードは次のように実行されます。
    ここに画像の説明を挿入します
  • ブラウザからのアクセスは以下の通りです。
http://127.0.0.1:3000/

ここに画像の説明を挿入します

3.3.3 急行

var express = require('express');
var app = express();
 
app.get('/', function (req, res) {
    
    
   res.send('Hello World, yxy!');
})
 
var server = app.listen(8081, function () {
    
    
 
  var host = server.address().address
  var port = server.address().port
 
  console.log("应用实例,访问地址为 http://%s:%s", host, port)
 
})
  • コードは次のように実行されます。
    ここに画像の説明を挿入します
  • ブラウザからのアクセスは以下の通りです。
    ここに画像の説明を挿入します

4、PHP

4.1 はじめに

人気のある汎用スクリプト言語で、特に Web 開発に適しています。
PHP は高速かつ柔軟で実用的で、ブログから世界で最も人気のある Web サイトまで、あらゆるものに力を与えています。

PHP は、動的でインタラクティブなサイトを作成するための強力なサーバーサイド スクリプト言語です。

PHP は無料で広く使用されています。同時に、Microsoft ASP などの競合他社にとって、PHP は間違いなくもう 1 つの効率的な選択肢です。
ここに画像の説明を挿入します

4.2 インストール

https://www.php.net/downloads
https://windows.php.net/downloads/releases/archives/
ここに画像の説明を挿入します

4.3 使用方法

https://www.php.net/manual/zh/features.commandline.webserver.php

この内蔵 Web サーバーは主にローカル開発に使用され、オンライン製品環境では使用できません。

-t パラメータを使用して別のディレクトリをカスタマイズしない限り、URI リクエストは、PHP が処理のために配置されている作業ディレクトリ (Working Directory) に送信されます。

リクエストで実行する PHP ファイルが指定されていない場合は、デフォルトでディレクトリ内の Index.php または Index.html が実行されます。どちらのファイルも存在しない場合、サーバーは 404 エラーを返します。

  • Webサーバーを起動します
php -S localhost:8000

# 启动时指定根目录
php -S localhost:8000 -t foo/
  • コマンドラインの実行は次のとおりです。
    ここに画像の説明を挿入します
    ブラウザのアクセスは次のとおりです。
http://localhost:8000/

ここに画像の説明を挿入します

5、アパッチ httpd

Apache HTTP サーバーは、広く使用されているほぼすべてのコンピューター プラットフォームで実行できるモジュール式 Web サーバーです。Apache は多くのモジュールをサポートし、安定したパフォーマンスを備えています。Apache 自体は静的解析であり、静的な HTML、画像などに適していますが、次の方法で拡張できます。スクリプト 、モジュールなどは動的ページなどをサポートします。

現在、最も主流の Web サーバーは Apache、Nginx、IIS の 3 つです。
ここに画像の説明を挿入します

5.1 はじめに

https://httpd.apache.org/

ここに画像の説明を挿入します
Apache HTTP Server プロジェクトは、UNIX や Windows などの最新のオペレーティング システム用のサーバー標準を開発および維持することを目的としています。プロジェクトの目標は、現在の HTTP と同期した HTTP サービスを提供する、安全で効率的で拡張可能なサーバー標準を提供することです。

Apache HTTP サーバー (「httpd」) は 1995 年に発表され、それ以来、インターネット上で最も人気のある Web サーバーとなっています。1996 年 25 月。

Apache HTTP Server は、Apache ソフトウェアのプロジェクト基盤です。

5.2 インストール

https://httpd.apache.org/download.cgi
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
は次のように解凍されます。
ここに画像の説明を挿入します

5.3 使用方法

  • (1) 以下のようにコマンドラインを直接実行します。
httpd

ここに画像の説明を挿入します
実行時にエラーが報告されます。これは、httpd.conf ファイル内で ServerRoot によって構成されたパスと実際のパスの間に不一致があることが原因です。問題を特定した後、httpd.conf を開き、「Define SRVROOT」を検索し、次のパスを変更します。後ろの二重引用符を Apache の実際のパスに置き換え、パスを解凍して保存するだけです。

  • httpd.conf
Define SRVROOT "C:\Users\tomcat\Desktop\httpd-2.4.55-o111s-x64-vs17\Apache24"
ServerRoot "${SRVROOT}"

ここに画像の説明を挿入します
ブラウザからのアクセスは以下の通りです。

http://127.0.0.1:80

ここに画像の説明を挿入します

  • (2) サービスとして実行することもできます。
    コマンドラインで Apache24 配下の bin ディレクトリに入力し、コマンド httpd -k install -n "サービス名" を実行します。
#安装apache服务
#注:若不使用特殊参数(如httpd.exe -k install),服务名称为Apache2.X,配置文件为conf\httpd.conf
httpd.exe -k install

#指定要安装的服务的名称(适用于电脑上有几个不同的Apache服务设施)
httpd.exe -k install -n "MyServiceName"

#指定服务配置文件的路径和名称
httpd.exe -k install -n "MyServiceName" -f "c:\files\my.conf"

#移除一个Apache服务
httpd.exe -k uninstall

#移除特定的Apache服务
httpd.exe -k uninstall -n "MyServiceName"

#启动已安装的apache服务
httpd.exe -k start

#停止已安装的Apache服务
httpd.exe -k stop || httpd.exe -k shutdown

#重启已安装的Apache服务(迫使服务重读配置文件,适用于修改配置文件后)
httpd.exe -k restart

#测试该服务的配置文件
httpd.exe -n "MyServiceName" –t

次のコマンドを実行して、どのプロセスがポート 443 を占有しているかを確認します。

netstat -ano|findstr "443"
tasklist|findstr "17208"
  • デフォルトのサイトフォルダーを構成する
    httpd.conf ファイルの DocumentRoot を変更する
    ここに画像の説明を挿入します

  • http port \Apache24\conf\httpd.conf ファイル
    の Listenを変更します。デフォルトは 80 です。

  • https port
    \Apache24\conf\extra\httpd-ahssl.conf ファイルを変更し、443 を指定したポートに置き換えます。

  • クロスドメイン
    \Apache24\conf\httpd.conf ファイルを設定し、次を追加します: Header set Access-Control-Allow-Origin *

<Directory />
    AllowOverride none
    Require all denied
	Header set Access-Control-Allow-Origin *
</Directory>

\Apache24\conf\httpd.conf ファイル内の LoadModule headers_module modules/mod_headers.so のコメントを解除します。

6、Nginx

Nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリバース プロキシ サーバーであり、IMAP、POP3、および SMTP プロキシ サーバーでもあり、主に高い同時接続のために使用されます。

6.1 はじめに

https://nginx.org/en/
Nginx は、ロシアで 2 番目にアクセス数の多いサイトである rambler.ru サイト用に lgor Sysoev によって設計および開発されました。2004 年のリリース以来、オープンソースの力によって、ほぼ成熟し、完璧になりました。

Nginxは機能が豊富で、HTTPサーバー、リバースプロキシサーバー、メールサーバーとして利用できます。FastCGI、SSL、仮想ホスト、URL リライト、Gzip などの機能をサポートします。また、多くのサードパーティ製モジュール拡張機能をサポートしています。
ここに画像の説明を挿入します

6.2 インストール

https://nginx.org/ja/download.html
ここに画像の説明を挿入します
解凍後のフォルダは以下の通りです。
ここに画像の説明を挿入します

6.3 使用方法

次のようにコマンドラインを直接実行します。

nginx
# start nginx

ブラウザからのアクセスは以下の通りです。

http://localhost:80

ここに画像の説明を挿入します
ここに画像の説明を挿入します

# 启动
nginx -s start
# 重新启动,热启动,修改配置重启不影响线上
nginx -s reload
# 关闭
nginx -s stop
nginx -s quit
taskkill /f /t /im nginx.exe
# 修改配置后,可以通过下面的命令测试是否有语法错误
nginx -t

nginx が正常に起動するかどうかを確認します。

tasklist /fi “imagename eq nginx.exe

ここに画像の説明を挿入します

  • 構成 nginx.conf ファイルを変更し
    、サーバーとルートのデフォルト HTML を html/dist に変更します。Nginx は dist でindex.html を見つけて開きます。
    ここに画像の説明を挿入します

変更が完了すると、nginx -s reload が再起動され
、ブラウザに「localhost:8090」と入力して、成功したかどうかを確認します。

7、マイクロソフトIIS

Microsoft IIS(インターネット インフォメーション サービス)
IIS は、「Internet Information Services」、すなわち「インターネット インフォメーション サービス」の英語略称で、「Microsoft Windows オペレーティング システム」の動作をベースにマイクロソフト社が提供する基本的なインターネット サービスです。
ここに画像の説明を挿入します

  • 「スタート」をクリックし、「コントロール パネル」をクリックします。
  • コントロール パネルで、[プログラム]をクリックします。
  • [プログラムと機能] で、[Windows の機能をオンまたはオフにする] をクリックします。
  • [Windows の機能] ダイアログ ボックスで、[インターネット インフォメーション サービス] を展開し、[すべての機能] を選択します。
  • そのカテゴリ内のすべての機能を選択するには、一部のカテゴリを展開する必要がある場合があります。
  • 「OK」をクリックします。

ここに画像の説明を挿入します

8、Apache Tomcat

Tomcat は Java アプリケーション サーバーであり、単なるサーブレット コンテナであり、Apache の拡張機能と考えることができますが、Apache とは独立して実行できます。

8.1 はじめに

https://tomcat.apache.org/

ここに画像の説明を挿入します
Tomcat サーバーは、無料のオープン ソース Web アプリケーション サーバーです。軽量のアプリケーション サーバーであり、中小規模のシステムや同時アクセス ユーザーがそれほど多くない状況でよく使用されます。JSP の開発とデバッグには最初の選択肢です。プログラム。初心者向けに、このことを次のように考えることができます。Apache サーバーがマシン上に設定されている場合、それを使用して HTML ページ アクセス リクエストに応答できます。実際、Tomcat は Apache サーバーの拡張機能ですが、実行時には独立して実行されるため、Tomcat を実行すると、実際には Apache とは別のプロセスとして実行されます。

ここに画像の説明を挿入します

8.2 インストール

https://tomcat.apache.org/download-10.cgi
ここに画像の説明を挿入します
解凍後のフォルダは以下の通りです。
ここに画像の説明を挿入します

ここに画像の説明を挿入します
システム変数列で、Tomcat の環境変数を構成します。

CATALINA_BASE=C:\Users\tomcat\Desktop\apache-tomcat-10.1.13
CATALINA_HOME=C:\Users\tomcat\Desktop\apache-tomcat-10.1.13
CATALINA_TMPDIR=C:\Users\tomcat\Desktop\apache-tomcat-10.1.13\temp
Path+=%CATALINA_HOME%\bin;%CATALINA_HOME%\lib;%JAVA_HOME%\bin;

ポップアップ ダイアログ ボックスに「cmd」と入力し、Enter キーを押します。次の図に示すように、コマンド プロンプト インターフェイスに「startup」と入力し、Enter キーを押して Tomcat を開きます。
ここに画像の説明を挿入します
実行時にエラーが報告され、Java SDK の環境変数が設定されていないことが判明しました。

JAVA_HOME=C:\Program Files\Java\jdk1.8.0_221

管理者権限でコマンド ライン ウィンドウを開き、次のコマンドを実行します。

startup.bat

ここに画像の説明を挿入します
Tomcat サービスが正常に開始されました。
ブラウザからのアクセスは以下の通りです。

http://127.0.0.1:8080/

ここに画像の説明を挿入します

9、ライトTPD

Lighttpd は、速度が重要なアプリケーション向けに設計された無料のオープンソース Web サーバーです。Apache や Nginx とは異なり、フットプリントが非常に小さく (1 MB 未満)、サーバー リソース (CPU 使用率など) の点で非常に経済的です。

9.1 はじめに

https://www.lighttpd.net/

Lighttpd は、ドイツの Jan Kneschke 氏の指導の下で開発された、BSD ライセンスに基づいたオープンソースの WEB サーバー ソフトウェアであり、その基本的な目的は、特に高パフォーマンスの Web サイトに安全で高速、互換性のある柔軟な Web サーバー環境を提供することです。メモリのオーバーヘッドが非常に低く、CPU 使用率が低く、パフォーマンスが良く、モジュールが豊富であるという特徴があります。Lighttpd は、数多くのオープンソースの軽量 Web サーバーの中でも優れたものの 1 つです。FastCGI、CGI、Auth、出力圧縮、URL 書き換え、エイリアス、その他の重要な機能をサポートします。

Lighttpd は BSD ライセンスに基づいて配布されており、Linux/Unix システム上でネイティブに実行されますが、Microsoft Windows にもインストールできます。シンプルさ、セットアップの容易さ、パフォーマンス、モジュールのサポートで人気があります。

Lighttpd のアーキテクチャは、高性能 Web アプリケーションにとって重要な多数の並列接続を処理できるように最適化されています。Web サーバーは、プログラムと Web サーバーのインターフェイスとして、FastCGI、CGI、および SCGI をサポートしています。また、PHP、Python、Perl、Ruby に特に注意を払って、複数のプログラミング言語で記述された Web アプリケーションもサポートします。

9.2 インストール

sudo apt-get update
sudo apt-get install lighttpd

ここに画像の説明を挿入します

結論

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

おすすめ

転載: blog.csdn.net/hhy321/article/details/133468841