পাইথনের http.server (বা সিম্পিএলটিটিপিএসবার) এর দ্রুত বিকল্প কী?


300

পাইথনের http.server (বা পাইথন 2 এর জন্য সিম্পিএলটিটিপিএস সার্ভার) কমান্ড লাইন থেকে বর্তমান ডিরেক্টরিতে থাকা সামগ্রীর পরিবেশন করার দুর্দান্ত উপায়:

python -m http.server

যাইহোক, ওয়েব সার্ভারগুলি যতদূর যায়, এটি খুব স্লুওউও ...

এটি এমনভাবে আচরণ করে যেন এটি একক থ্রেডেড থাকে এবং জাভা স্ক্রিপ্ট এএমডি মডিউলগুলি প্রয়োজনীয় জেএস ব্যবহার করে লোড করার সময় মাঝেমধ্যে সময়সীমা ত্রুটি ঘটায়। কোনও চিত্র ছাড়াই একটি সাধারণ পৃষ্ঠা লোড করতে এটি পাঁচ থেকে দশ সেকেন্ড সময় নিতে পারে।

ঠিক তত সুবিধাজনক একটি দ্রুত বিকল্প কী?


17
এই থ্রেড সবেমাত্র আমার বিচক্ষণতা পুনরুদ্ধার। আমি সিম্পিএলটিটিপিএসবার ব্যবহার করছিলাম এবং প্রয়োজনীয় জেএসের সাথে এলোমেলো ত্রুটি পেয়ে যা আমাকে বাদাম চালাচ্ছিল! নোডের এইচটিসি-সার্ভার মনোযোগের মতো কাজ করছে। ধন্যবাদ!
ডেভ কেডওয়াল্লাদার

4
@ ক্রিসএফ, আমি এই গাইডলাইন অনুযায়ী প্রশ্নটি আরও ব্যাকরণগতভাবে প্রতিবিম্বিত করার জন্য সম্পাদনা করেছি যে এটি আসলে একটি উত্তরযোগ্য প্রশ্ন। আমি যে সমস্যার মুখোমুখি হয়েছি তার ব্যাখ্যা করেছি (যথা, সময়সীমা এবং সময় নষ্ট), এবং আমি সমস্যাটি সমাধানের জন্য আমি কী করেছিলাম তা তালিকাভুক্ত করতে পারলাম না কারণ আমি কোনও বিকল্প জানি না। আমি মনে করি না যে এই প্রশ্নটি "আপনার প্রিয় কী ___" আকারের সাথে খাপ খায়, কারণ মাপদণ্ড পরিষ্কারভাবে সংজ্ঞায়িত করা হয়েছে। বিভিন্ন দর্শনার্থী বিভিন্ন উত্তর আরও দরকারী খুঁজে পেতে পারে এবং উত্তরগুলি প্রদত্ত মানদণ্ডের সাথে খাপ খায় না।
ড্রয় নোকস

26
লোকজনের প্রিয় প্রশ্নগুলি বন্ধ করার কীভাবে তার অভ্যাস আছে তা ভালবাসুন…
আইসোমর্ফিস্মস

4
এই প্রশ্নটি কেবল কার্যকর নয়, এটি যে বিবরণের জন্য এটি বন্ধ হচ্ছে তাও তার সাথে মেলে না। কমপক্ষে গবেষণাটি ইতিমধ্যে সম্পন্ন হয়েছে ...
ব্রায়ান লারসন

3
আর একটি বিকল্প, যদি আপনি গিট রেপো পরিবেশন করতে চান তবে তা git instaweb
ড্রয় নোকস

উত্তর:


394

HTTP সার্ভারনোড.জেএস এর জন্য খুব সুবিধাজনক এবং পাইথনের সিম্পল চেয়ে অনেক দ্রুত is এটি মূলত কারণ এটি অনুরোধগুলির ক্রমবর্ধমান হ্যান্ডলিংয়ের জন্য অ্যাসিক্রোনাস আইও ব্যবহার করে, অনুরোধগুলি ক্রমিক পরিবর্তনের পরিবর্তে।

স্থাপন

আপনার যদি ইতিমধ্যে না থাকে তবে নোড.জেগুলি ইনস্টল করুন। তারপরে প্যাকেজটি npmইনস্টল করতে নোড প্যাকেজ ম্যানেজার ( ) ব্যবহার করুন এবং -gবিশ্বব্যাপী ইনস্টল করার বিকল্পটি ব্যবহার করুন । আপনি যদি উইন্ডোতে থাকেন তবে প্রশাসকের অনুমতি সহ আপনার একটি প্রম্পট দরকার হবে এবং লিনাক্স / ওএসএক্স-এ আপনি sudoকমান্ডটি চাইবেন :

npm install http-server -g

এটি কোনও প্রয়োজনীয় নির্ভরতা ডাউনলোড করে ইনস্টল করবে http-server

ব্যবহার

এখন, যে কোনও ডিরেক্টরি থেকে, আপনি টাইপ করতে পারেন:

http-server [path] [options]

পাথ alচ্ছিক ./public, এটি উপস্থিত থাকলে ডিফল্ট , অন্যথায় ./

বিকল্পগুলি [ডিফল্ট]:

  • -p শুনতে পোর্ট নম্বর [8080]
  • -a হোস্টের ঠিকানাটি [লোকালহোস্ট] এ আবদ্ধ করতে
  • -i ডিরেক্টরি সূচক পৃষ্ঠা প্রদর্শন করুন [সত্য]
  • -sবা --silentসাইলেন্ট মোড কনসোলে লগইন করবে না
  • -hবা --helpসহায়তা বার্তা প্রদর্শন করে এবং প্রস্থান করে

সুতরাং 8000 পোর্টে বর্তমান ডিরেক্টরি পরিবেশন করতে, টাইপ করুন:

http-server -p 8000

12
এটা সত্যিই দারুন!! এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ। স্ট্রিমিং অডিও / ভিডিও পরীক্ষা করার জন্য এটি দুর্দান্ত যা অজগর সার্ভারটি ভালভাবে পরিচালনা করছে বলে মনে হয় না।
gman

1
@ স্যালমনফেস, আপনি অবশ্যই -gঅপশনটি ব্যবহার করেছেন এবং আপনি কি নিশ্চিত করেছেন যে ইনস্টলেশনের সময় কোনও ত্রুটি মুদ্রিত হয়নি? এই ত্রুটিটির অর্থ হ'ল এটি ইনস্টলের পরে খুঁজে পাওয়া যাবে না, যা জিনিসগুলি ভালভাবে চালিত হলে অসম্ভব বলে মনে হয়। আপনি কোন প্ল্যাটফর্মে আছেন? নামের সাথে একটি ফাইল সন্ধান করতে আপনার ড্রাইভ জুড়ে একটি ফাইন্ড কমান্ড চালান http-server। আমি কয়েকটি সফলভাবে লিনাক্সের কয়েকটি ডিস্ট্রো এবং উইন্ডোজ সংস্করণে এটি সফলভাবে ব্যবহার করেছি।
ড্রয় নোকস

2
আমি কেবল নিশ্চিত করতে চাই যে এই সমাধানটি ব্যবহার করে আমার পৃষ্ঠা লোডের সময়কে 20 এর দশক থেকে 2 সেকেন্ডে উন্নত করেছে!
0leg

1
ঠিক আছে, প্রথমদিকে এটি অজগর সিম্পিচটিটিপিএসবারের তুলনায় আমার উন্নতি হয়েছিল যতক্ষণ না আমি স্মৃতি থেকে দূরে চলেছি। HTTP- সার্ভার বড় ফাইলগুলির জন্য প্রচুর পরিমাণে মেমরি গ্রহণ করে। Myserver.go প্রস্তাবটি অদলবদল করা শুরু করার আগে এবং সত্যিই ধীরগতিতে আসার আগে দ্রুত 5 গিগাবাইট মেমরির পরিবর্তে প্রায় 2 মেগাবাইট গ্রহণ করে।
ড্যানিয়েল

2
নভেম্বরের 2019 পর্যন্ত দেখে মনে হচ্ছে উইন্ডোজ ব্যবহারকারীদের জন্য বেশ কয়েকটি মাস ধরে এইচটিপি-সার্ভারটি ভেঙে গেছে। এর অনেকগুলি নির্ভরশীলতা পুরানো। তাদের মধ্যে একটি এক্সট্যাটিক এখন পরিত্যক্ত তাই এটি কখন বা কখন ঠিক করা হবে তা পরিষ্কার নয় not আমি নিজেকে ফিক্সিংয়ের দিকে তাকিয়েছিলাম কিন্তু এটিও স্পষ্ট নয় যে ডেভগুলি পিআর নিবে কিনা। সুতরাং, আমি আমার নিজের প্রতিস্থাপন লিখেছি ।
gman

105

আমি প্রস্তাব দিই: পাকযুক্ত ( http://twistedmatrix.com )

পাইথনে একটি ইভেন্ট-চালিত নেটওয়ার্কিং ইঞ্জিন লিখিত এবং ওপেন সোর্স এমআইটি লাইসেন্সের আওতায় লাইসেন্সযুক্ত।

এটি ক্রস প্ল্যাটফর্ম এবং ওএস এক্স 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

"ওয়েব" একটি কমান্ড যা টুইস্টেড অ্যাসিঙ্ক ইঞ্জিনের উপরে একটি সাধারণ ওয়েব সার্ভার চালায়। এটি কমান্ড লাইন বিকল্পগুলিও গ্রহণ করে ("ওয়েব" কমান্ডের পরে - আরও 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)

ম্যাক ওএস-এক্স (10.5 - 10.12 এ ইনস্টল করা আসে, বা ম্যাকপোর্টে এবং পাইপের মাধ্যমে পাওয়া যায়)

sudo port install py-twisted

উইন্ডোজ

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

HTTPS দ্বারা

পাকযুক্ত সংযোগটি এনক্রিপ্ট করতে সুরক্ষা শংসাপত্রগুলিও ব্যবহার করতে পারে। এটি আপনার বিদ্যমান --pathএবং --port(সরল এইচটিটিপি জন্য) বিকল্পগুলির সাথে ব্যবহার করুন।

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

5
আপনার যদি ইতিমধ্যে নোড.জেএস সেট আপ না করা থাকে তবে আমি এটি সবচেয়ে সুবিধাজনক বলে মনে করেছি। ভাগ করে নেওয়ার জন্য ধন্যবাদ!
ক্রিস জে

3
উবুন্টুতে, আপনাকে sudo apt-get install python-twisted-webপ্রথমে করতে হবে। (এই উত্তরের জন্য ধন্যবাদ, এটি খুব সুবিধাজনক!)
nkorth

2
পাকানো ওয়ান লাইন সার্ভারের একটি বিশেষ সুবিধা, এটি পুনরায় শুরুযোগ্য ডাউনলোডগুলি (বাইট রেঞ্জ সমর্থন) সমর্থন করে এবং আপনি বড় ফাইল ডাউনলোড করার সময় এটির অবশ্যই একটি বৈশিষ্ট্য থাকতে হবে।
পঙ্কজ

7
নোড ব্যবহার করা আমার পক্ষে ভিডিও / অডিওটি সঠিকভাবে স্ট্রিম করেনি, টুইস্টড ব্যবহার করে দুর্দান্ত কাজ করে!
চঞ্চল

2
আপনি পোর্ট কনফিগার করতে পারেন এবং ব্যবহার করে অন্যান্য বিকল্পগুলি পেতে twistd --helpএবং twistd web --help। আমাকে কিছুটা সময় নিল
এহতেশ চৌধুরী

30

০.০ এর মধ্যে একটি http সার্ভার ও কয়েকটি লাইনের কোড যুক্ত ফাইল পরিবেশন করার জন্য ব্যবহার রয়েছে ।

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


দুর্দান্ত উত্তর। এটি সিম্পিএলটিটিপিএস সার্ভার এবং নোডেজ সমাধানের চেয়ে দ্রুত চলে। :) ডাউনলোডের সাথে ব্যবহারকারীর নাম এবং পাসওয়ার্ড যুক্ত করার কোনও উপায় আছে কি?
আজাক্স

21

ব্যবহার করে দেখুন webfs , এটা অতি ক্ষুদ্র এবং node.js অথবা পাইথন ইনস্টল মত একটি প্ল্যাটফর্ম থাকার উপর নির্ভর করে না।


1
দেখে মনে হচ্ছে আপনি এটি সংকলন করতে হবে? ডাউনলোডের জন্য কোনও বাইনারি দেখেনি।
BrainSlugs83

2
হ্যাঁ, যদি না আপনার ডিস্ট্রো থাকে। ডেবিয়ান এবং উবুন্টু এটি পেয়েছেন:apt-get install webfs
হুডন

4
আমি brew install webfsআমার ম্যাকটিতে একটি করেছি যার ফলস্বরূপ 🍺 /usr/local/Cellar/webfs/1.21: 5 files, 96K, built in 15 seconds। এরপরে আমি ঠিক তেমনটি webfsd -F -p 3003 -r resources/public/ -f index.htmlঅর্জন করতে বলতে পারি twistd -no web -p 3003 --path=resources/public/। এটি কিছুটা স্পষ্টরকম তাই মনে রাখা সুস্পষ্ট নয় তবে টুইস্টড বা সিম্পলএইচটিটিপিএস সার্ভারের বিকল্প হিসাবে জানা ভাল।
onetom

অন্যান্য সমাধানগুলির চেয়ে অনেক ভাল। এটি খুব ছোট, খুব দ্রুত এবং একটি ওএস প্যাকেজ হিসাবে সরবরাহ করা হয়েছে। এটি এসএসএলকে সমর্থন করে এবং একটি সিস্টেম ডিমন হিসাবে চালাতে পারে।
ফেডেরিকো

14

আপনি যদি মার্চুরিয়াল ব্যবহার করেন তবে আপনি অন্তর্নির্মিত 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

11

এখানে অন্য একটি। এটি একটি ক্রোম এক্সটেনশন

একবার ইনস্টল হয়ে গেলে আপনি Chrome এ একটি নতুন ট্যাব তৈরি করে এবং উপরের বাম দিকে অ্যাপ্লিকেশন বোতামটি ক্লিক করে এটি চালাতে পারেন

এটি একটি সহজ gui আছে। নির্বাচন করুন ফোল্ডার ক্লিক করুন, তারপরে http://127.0.0.1:8887লিঙ্কটি ক্লিক করুন

এখানে চিত্র বর্ণনা লিখুন

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


8

যেতে যেতে লিখিত একটি ছোট ওয়েবসভারও বিবেচনা করুন । অনেক প্ল্যাটফর্মের জন্য বাইনারিগুলি এখানে উপলভ্য ।

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

এটি ছোট, দ্রুত এবং আপনার ফাইলগুলি পরিবর্তিত হলে লাইভ-লোডিংয়ের মতো কিছু আকর্ষণীয় optionচ্ছিক বৈশিষ্ট্য সরবরাহ করে।


7

আমি python -m http.serverঅবিশ্বস্ত পেয়েছি। কিছু প্রতিক্রিয়া কয়েক সেকেন্ড সময় নিতে পারে take

এখন আমি রান https://github.com/m3ng9i/ran নামে একটি সার্ভার ব্যবহার করি

রান: গোতে লিখিত একটি সাধারণ স্ট্যাটিক ওয়েব সার্ভার


5

প্যালেপটা চেষ্টা করে দেখুন ...

এনপিএম ইনস্টল -জি প্যালেপটা

তারপর তুমি পারো

polpetta ~ / ফোল্ডার

এবং আপনি যেতে প্রস্তুত :-)


1
আমাদের কীভাবে প্যালেপটা দেওয়ার চেষ্টা করা উচিত তা কি আপনি প্রসারিত করতে পারেন ?
ড্যান ড্যাসক্লেস্কু

3

সার্ভেজকে সার্ভার হিসাবে ব্যবহার করা হচ্ছে

  1. সার্ভেজ ডাউনলোড করুন
  2. এটি ইনস্টল করুন, এটি চালান
  3. পরিবেশন করতে ফোল্ডারটি চয়ন করুন
  4. "শুরু" চয়ন করুন
  5. যান http://localhost:8080বা "ব্রাউজার চালু করুন" বাছুন

servez

দ্রষ্টব্য: আমি এটিকে একসাথে ছুঁড়ে ফেলেছি কারণ ক্রোমের জন্য ওয়েব সার্ভার ক্রমটি চলে যাচ্ছে যেহেতু ক্রোম অ্যাপ্লিকেশনগুলির জন্য সমর্থন সরিয়ে দিচ্ছে এবং কারণ আমি কলা শিক্ষার্থীদের সমর্থন করি যাদের কমান্ড লাইনের সাথে শূন্য অভিজ্ঞতা আছে support


আমি ওয়েবজিএল উদাহরণগুলি চালনার পক্ষে ভোট দিচ্ছি
ফিলিপ গুতেরেস

2

আমি লাইভ-সার্ভার পছন্দ করি । এটি দ্রুত এবং এতে একটি দুর্দান্ত লাইভ পুনরায় লোড বৈশিষ্ট্য রয়েছে, যা বিকাশের সময় খুব সুবিধাজনক।

ব্যবহার খুব সহজ:

cd ~/Sites/
live-server

ডিফল্টরূপে এটি আইপি 127.0.0.1 এবং পোর্ট 8080 সহ একটি সার্ভার তৈরি করে।

http://127.0.0.1:8080/

8080 বন্দরটি নিখরচায় না থাকলে এটি অন্য একটি বন্দর ব্যবহার করে:

http://127.0.0.1:52749/

http://127.0.0.1:52858/

যদি আপনার স্থানীয় নেটওয়ার্কের অন্যান্য মেশিনে ওয়েব সার্ভারটি দেখতে প্রয়োজন হয় তবে আপনি আপনার আইপি কী এবং তা ব্যবহার করতে পারেন তা পরীক্ষা করতে পারেন:

live-server --host=192.168.1.121

এবং এখানে একটি স্ক্রিপ্ট যা স্বয়ংক্রিয়ভাবে ডিফল্ট ইন্টারফেসের আইপি ঠিকানাটি দখল করে। এটি শুধুমাত্র ম্যাকোজে কাজ করে

আপনি যদি এটি রাখেন .bash_profile, live-serverকমান্ডটি স্বয়ংক্রিয়ভাবে সঠিক আইপি দিয়ে সার্ভারটি চালু করবে।

# **
# Get IP address of default interface
# *
function getIPofDefaultInterface()
{
    local  __resultvar=$1

    # Get default route interface
    if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
    if [ -n "$if" ]; then
            # Get IP of the default route interface
            local __IP=$( ipconfig getifaddr $if )
            eval $__resultvar="'$__IP'"
    else
        # Echo "No default route found"
        eval $__resultvar="'0.0.0.0'"
    fi
}

alias getIP='getIPofDefaultInterface IP; echo $IP'

# **
# live-server
# https://www.npmjs.com/package/live-server
# *
alias live-server='getIPofDefaultInterface IP && live-server --host=$IP'

1

আপনি যদি পিএইচপি ইনস্টল করে থাকেন তবে আপনি বিল্টিন সার্ভারটি ব্যবহার করতে পারেন।

php -S 0:8080

0

তবুও অন্য নোড ভিত্তিক সাধারণ কমান্ড লাইন সার্ভার

https://github.com/greggman/servez-cli

বিশেষত উইন্ডোতে সমস্যাযুক্ত HTTP- র জবাবে আংশিকভাবে লেখা।

স্থাপন

তখন নোড.জেএস ইনস্টল করুন

npm install -g servez

ব্যবহার

servez [options] [path]

কোনও পাথ ছাড়াই এটি বর্তমান ফোল্ডারটি পরিবেশন করে।

ডিফল্টরূপে index.htmlএটি উপস্থিত থাকলে ফোল্ডার পাথের জন্য কাজ করে । এটি অন্যথায় ফোল্ডারগুলির জন্য ডিরেক্টরি তালিকা সরবরাহ করে। এটি সিওআরএস হেডারও সরবরাহ করে। আপনি allyচ্ছিকভাবে এর সাথে বেসিক প্রমাণীকরণ চালু --username=somename --password=somepassকরতে পারেন এবং আপনি https পরিবেশন করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.