সাধারণ কমান্ড লাইন এইচটিটিপি সার্ভার


121

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা একটি দৈনিক প্রতিবেদন তৈরি করে যা আমি তথাকথিত সাধারণ জনগণের কাছে পরিবেশন করতে চাই। সমস্যাটি হ'ল আমি সমস্ত কনফিগারেশন এবং সুরক্ষা জড়িত কোনও HTTP সার্ভারের (যেমন অ্যাপাচি) আমার মাথাব্যথা রক্ষণাবেক্ষণে যুক্ত করতে চাই না।

পূর্ণ প্রস্ফুটিত HTTP সার্ভারটি কনফিগার করার প্রচেষ্টা ছাড়াই একটি ছোট HTML পৃষ্ঠা সরবরাহ করার জন্য কি কোনও মৃত সহজ সমাধান রয়েছে?



2
শুধু নেটকাট ব্যবহার করবেন না কেন?
ডিলান

প্রকৃতপক্ষে! এইচটিটিপি শেষ হওয়ার আগে ওয়ার্ল্ড ওয়াইড ওয়েবের মতো এফটিপি ব্যবহার করুন! (যদিও আমি মনে করি এটি 1990 এর দশকের গোড়ার দিকে বিশ্বব্যাপী যথেষ্ট ছিল না 😉)
মাইকেল শ্যাপার

1
পদ্ধতি বড় সংগ্রহ এই কম্পাইল করা হয়েছে সারকথা
davidcondrey

উত্তর:



158

সিম্পিএলটিটিপিএস সার্ভার চেষ্টা করুন :

python -m SimpleHTTPServer
# or the Python 3 equivalent
python3 -m http.server

এটা তোলে যাই হোক না কেন এর পরিবেশন করা হবে উচিত CWD (যেমন index.html) এ http://0.0.0.0:8000


11
আপনি ঐচ্ছিকভাবে এই মত একটি পোর্ট সংখ্যা নির্দিষ্ট করতে পারেন: python3 -m http.server 1337। আমি যতদূর বলতে পারি কোন আইপি যুক্ত করতে হবে তা আপনি নির্দিষ্ট করতে পারবেন না। দ্রষ্টব্য: 80 পোর্টটি শুনতে আপনার অবশ্যই রুট সুবিধাগুলি থাকতে হবে, যেমন:sudo python3 -m http.server 80
হুব্রো

1
এটি একটি দুর্দান্ত তবে এতে একটি URL রয়েছে যা একটি পিছনে স্ল্যাশ যুক্ত করে পুনর্নির্দেশের সাথে একটি সমস্যা রয়েছে। এজন্য আমি টুইস্টেড সংস্করণটিকেই পছন্দ করি:twistd -n web -p 8000 --path .
গ্রেগ ডুবিকি

--bind <address>পাইথন ৩.৪ যোগ করা হয়েছে ।
ড্রিউবেন

1
ডিফল্ট শোনার পোর্ট ৮০৮০ (পাইথন 2 সহ) অন্য কিছুতে পরিবর্তন করতে, কেবল একটি পোর্ট নম্বর পরে রাখুন:python -m SimpleHTTPServer 3000
মাকসিম লুজিক

44

পোস্ট স্ট্যাটিক সার্ভার ওয়ান-লাইনারের একটি বড় তালিকা রয়েছে :

এই তালিকাতে পেতে, একটি সমাধান অবশ্যই:

  1. আপনার বর্তমান ডিরেক্টরিটি (বা একটি নির্দিষ্ট ডিরেক্টরি) সার্ভারের মূল হিসাবে ব্যবহার করে স্থির ফাইলগুলি পরিবেশন করুন
  2. একটি একক, এক লাইন কমান্ড দিয়ে চালাতে সক্ষম হোন (যদি তারা এককালীন জিনিস হয় তবে নির্ভরতা ঠিক থাকে)
  3. যথাযথ মাইম প্রকারের সাথে বেসিক ফাইল প্রকারের (এইচটিএমএল, সিএসএস, জেএস, ইমেজ) পরিবেশন করুন, কমান্ডের বাইরে কোনও ফাইল (অন্য কোনও ফাইলের বা অন্য কোনও কাঠামোর প্রয়োজন নেই) (কোনও ফ্রেমওয়ার্ক-নির্দিষ্ট সার্ভার ইত্যাদি নয়)
  4. অগ্রভাগে অবশ্যই চলতে হবে বা এমন একটি মোড থাকতে হবে যেখানে এটি চলতে পারে (যেমন কোনও ডিমেন নয়)

উদাহরণ স্বরূপ:


43

node.jsদ্রুত এবং লাইটওয়েট ব্যবহার করুন ।

অথবা

ncএকটি পোর্টে দ্রুত ওয়েবসার্ভার শুরু করতে সার্ভারের প্রতিক্রিয়া শিরোনাম সহ কোনও ফাইলের বিষয়বস্তু পরিবেশন করতে কেবল সাধারণ নেটক্যাট কমান্ডটি ব্যবহার করুন।

উইকিপিডিয়া থেকে রেফারেন্স:

http://en.wikipedia.org/wiki/Netcat#Setting_up_a_one-shot_webserver_on_port_8080_to_present_the_content_of_a_file

{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat some.file; } | nc -l -p 8080
{ echo -ne "HTTP/1.0 200 OK\r\nContent-Length: $(wc -c <some.file)\r\n\r\n"; cat some.file; } | nc -l -p 8080

27
কেবলমাত্র ইন্টারেক্টিভ শেল চলমান একটি খালি নোড.জেএস প্রক্রিয়াটি র‌্যামের 15MB (7.5 ভাগ করা হয়) নেয়। এবং তারপরে আপনাকে এর মধ্যে এইচটিটিপি সার্ভার চালাতে হবে। মজার বিষয় যে লোকেরা এটিকে হালকা ওজনের হিসাবে দেখে। ;-)
জেপিসি

হ্যাঁ আমি এটিকে হালকা ওজন হিসাবে বিবেচনা করি, আপনি এত কম মেমরির পদক্ষেপের সাথে ভাল স্কেল করতে পারেন। দয়া করে thecodinghumanist.com/blog/archives/2011/5/6/… পড়ুন তবে, আপনি যদি নোড.জেএস ব্যবহার করা অসুবিধাজনক মনে করেন তবে সাধারণ নেটক্যাট ইউটিলিটি স্বল্পস্থায়ী উদ্দেশ্যকে ভালভাবে পরিবেশন করে।
নিখিল মুলি

1
আপনি অবশ্যই আপাচের সাথে নোডের সাথে তুলনা করলে ঠিকই আছেন তবে সিআরআইপি.টো / পাবলিকফিলিএইচটিএমএল বা এর অনুরূপ কোনও কিছুর সাথে তুলনা করলে নোড কেমন দেখাচ্ছে তা আমি মজাদার বলে মনে করি । :)
জেপিসি

hmmmmm .. ঠিক ;-)
নিখিল

8
ncভিত্তিক সমাধানের জন্য +1 :)। নোট করুন যে এর জন্য -neপতাকাগুলি echoপোর্টেবল printfনাও হতে পারে, পরিবর্তে কমান্ডটি ব্যবহার করা আরও ভাল বিকল্প হতে পারে।
হোয়াইটওয়ানটারওয়াল্ফ

29

সংস্করণ 5.4.0 থেকে পিএইচপি -তে একটি অন্তর্নির্মিত ওয়েব সার্ভার রয়েছে :

php -S localhost:8000

আপনি -tউদাহরণস্বরূপ ওয়েব সার্ভারের নথিপত্রগুলি উল্লেখ করতে পারেন :

php -S localhost:8000 -t /var/lib/www

আপনি যদি নেটওয়ার্কের মাধ্যমে সার্ভারটি অ্যাক্সেস করতে সক্ষম হতে চান তবে:

php -S 0.0.0.0:8000 -t /var/lib/www

বাহ যে সহজ এবং সহায়ক ছিল!
মাইকেল-ও

আপনি যদি স্থানীয়ভাবে পিএইচপি-স্ক্রিপ্টগুলি পরীক্ষা করতে চান তবে এটি সত্যিই দুর্দান্ত।
এরিক

15

নোডের একটি সহজ, দ্রুত, হালকা এইচটিটিপি সার্ভার মডিউল রয়েছে। স্থাপন করা:

sudo npm install http-server -g

(ধরে নিচ্ছি আপনি ইতিমধ্যে ইনস্টল করেছেন nodeএবং npmইনস্টল করেছেন))

এটি চালাতে, বর্তমান ডিরেক্টরিটি ওয়েবসাইটের মূল হিসাবে ব্যবহার করুন:

http-server

এটি একটি সার্ভার চালু করে http://0.0.0.0:8080/


এটা কাজ করে। আমার একটি ফ্রিবিএসডি মেশিনে একটি নোড প্রকল্প রয়েছে, আমি কেবলমাত্র npm install -D http-serverপ্রকল্পের ডিরেক্টরিতে চালাচ্ছি এবং তারপরে আমার package.jsonফাইলে নিম্নলিখিত লাইনগুলি যুক্ত করব : এইচটিটিপি সার্ভার শুরু করার "scripts": { "build": "webpack && cd src/public && http-server" },জন্য এখন আমার npm run buildপ্রজেক্ট ডিরেক্টরিতে চালানো দরকার , ডিফল্ট 8080 পোর্টে শুনছি।
ব্যবহারকারী3405291

2
প্রথমে আমি " python3 -m http.server" চেষ্টা করেছি , তবে এটি একক থ্রেডযুক্ত এবং কেবল 1 জন ক্লায়েন্ট একবারে ডাউনলোড করতে পারে, অন্যরা অপেক্ষা করতে হবে। নোড.জেএস সহ এই দ্রবণটি নোডের অ্যাসিঙ্ক প্রকৃতির কারণে আরও ভাল কাজ করে। আপনি যদি বেশ কয়েকটি ব্যক্তির সাথে কোনও ফাইল ভাগ করতে চান তবে এটি ব্যবহার করুন।
জাববা

6

SimpleHTTPServerপাইথনে ব্যবহার করার চেষ্টা করুন ।

mkdir ~/public_html
command_to_generate_output > ~/public_html/output.txt

(cd ~/public_html; python -c 'import SimpleHTTPServer,BaseHTTPServer; BaseHTTPServer.HTTPServer(("", 8080), SimpleHTTPServer.SimpleHTTPRequestHandler).serve_forever()')

প্রথম দুটি লাইন ওয়েব সার্ভারের জন্য সেটআপ করা হয়। শেষ লাইনটি 8080 পোর্টে খোলা একটি সাধারণ ওয়েব সার্ভার তৈরি করে, যা কেবলমাত্র ফাইলগুলি সরবরাহ করে ~/public_html। যদি শুধুমাত্র এক যে ফাইলটি ডিরেক্টরির মধ্যে হয়, তাহলে শুধু তাই উদ্ভাসিত হয়: http://localhost:8080/output.txt


এটিই আমি ব্যবহার করি, কেবল সর্বশেষ লাইনটি অনুলিপি করুন এবং এটি একটি .pyফাইলে পেস্ট করুন, তারপরে এটি চালান python(বা এটি কার্যকর করতে সক্ষম করুন)। মনে রাখবেন যে আপনাকে পাইথন ২.x ইন্টারপ্রেটার দিয়ে চালাতে হবে।
হানান এন।

3

আপনি ফিরে পিগি করতে xinetd । নিম্নলিখিত কনফিগারেশন ফাইলটিকে /etc/xinetd.d/ এবং পরিষেবা xinetd পুনরায় লোডে রাখুন :

service http
{
  flags = REUSE IPv4
  protocol = tcp
  socket_type = stream
  port = 80
  wait = no
  user = nobody
  server = /bin/echo
  server_args = -e HTTP/1.0 301 Moved Permanently\nContent-Length: 0\nLocation: https://goo.gl/\n\n
  disable = no
}

আমার পুনঃনির্দেশক উদ্দেশ্যে কাজ করে:

# wget 127.0.0.1
--2016-04-04 22:56:20--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://goo.gl/ [following]
...

2

ওল্ডস্কুল রুবি ওয়েব্রিক এইচটিটিপি সার্ভার:

#!/usr/bin/env ruby

require 'webrick'
server = WEBrick::HTTPServer.new(:Port => 8000,
                                 :DocumentRoot => '~/webrickroot')

# stop server with Ctrl-C
trap('INT') { server.stop }
server.start

DocumentRootআপনার সেটআপটির জন্য পরিবর্তনটি নিশ্চিত করুন। আরও দেখুন এই


2

আর একটি বিকল্প হ'ল লাইটটিপিডি ইনস্টল করা। নীচে একটি আনবুন্টু 12.04 এলটিএসে লাইটটিপিডি ইনস্টল করার পদক্ষেপগুলির পরামর্শ দেওয়া হচ্ছে।

apt-get update
apt-get upgrade --show-upgraded
apt-get install lighttpd
ifconfig
http://[your-ip-address]:80
/etc/lighttpd/lighttpd.conf (Edit to add server.port)
server.port = "8080"

দ্রষ্টব্য: ডকুমেন্টরোট হ'ল সমস্ত ওয়েব অ্যাক্সেসযোগ্য ফাইলের জায়গা। অবস্থানটি / var / wwww

উপরের পদক্ষেপটি একটি বেসিক লাইটটিপিডি ওয়েব সার্ভার ইনস্টল করবে। আরও তথ্যের জন্য নিম্নলিখিত রেফারেন্স পড়ুন

তথ্যসূত্র:



2

./devd -o -a -P devd:devd .

  • -o ব্রাউজারে url খুলবে
  • সমস্ত ইন্টারফেসের জন্য
  • -পি লেখক ব্যবহারকারী / পাস
  • । একই ডিরেক্টরিতে ফাইল পরিবেশন

https://github.com/cortesi/devd/releases


2

সরল ফিক্স / বর্ধিত কিছুটা অন্যায়ভাবে (imho) নিচে ভোট দেওয়া উত্তরটিও কার্যকর হতে পারে। প্রথমে এইচটিএমএল ফাইল সেট আপ করা যাক ...

echo '<html><head><title>My Test File</title></head><body><hi>OK!</h1></body></html>' > my_file.html

এখন আপনি এই ওয়ান-লাইনার দিয়ে এটি পরিবেশন করতে পারেন:

while true; do echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n" | cat - my_file.html  | nc -l -p 8080; done

এই মৌলিক ধারণাটি অন্যান্য কৌশলগুলিতে নিজেকে ঘৃণা করে যা আপনার জন্য অন্যান্য catবা সাব-শেল আইডিয়াগুলির মাধ্যমে যেমন কাজ করতে পারে :

while true; do echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nI think the date is $(date), Have a good day!" | nc -l -p 8080; done

0

বাশ স্ক্রিপ্টে রাখার জন্য সহজ নেটক্যাট উদাহরণ:

while true ; do nc -l 80 <index.html ; done 

11
এটি সম্পূর্ণরূপে এইচটিটিপি বলতে ব্যর্থ।
ডার্বোবার্ট

আমি চেষ্টা করেছি while [ 1=1 ] ; do echo "TEST" | nc -l 80; done- 127.0.0.1 এ গিয়ে প্রকৃতপক্ষে সামগ্রীটি ফেরত দেয়। যদিও আমি মূল হিসাবে এটি করতে হয়েছিল। সুতরাং অত্যন্ত অপরিশোধিত উপায়ে - এটি কাজটি করতে পারে এবং আমি এটি পছন্দ করি। ল্যানের অন্য একটি মেশিনে আমার-হোস্টনেম.লোকলে যাওয়ার চেষ্টা করেছি এবং এটি খুব কার্যকর হয়েছে।
আনফা

0

এখানে উল্লেখ করার মতো এসএফকে

http://stahlworks.com/dev/swiss-file-knife.html

কোনও নির্ভরতা ছাড়াই একটি দুর্দান্ত বহুমুখী সরঞ্জাম

উভয় দেব এবং আরপিএম স্বাদে উপলব্ধ

sfk httpserv -port 1234

বর্তমান ডিরেক্টরি পরিবেশন করা হবে

sfk httpserv -port 1234 -rw

ফাইল আপলোড করার অনুমতি দেবে


0

খাঁটি বাশ: শেল স্ক্রিপ্টে একটি ওয়েব সার্ভার

এছাড়াও, আপনার প্রয়োজন হবে যখন পোর্ট শুনতে এবং স্ক্রিপ্টটি চালাতে xinetd (আমি কোনও ডিস্ট্রোতে বিশ্বাস করি) এর প্রয়োজন হবে, যাতে আপনাকে বাশিতে টিসিপি স্ট্যাক ইত্যাদি কোডিং করতে হবে না।



0

আমি এই নির্দেশাবলী আমার সেন্টোস মেশিনে একটি ওয়েব সার্ভার ইনস্টল করতে sudo ব্যবহার বা কোনও সিস্টেম ফাইল স্পর্শ না করে ব্যবহার করেছি:

প্রথমে নোড ইনস্টল করুন:

$ cd ~
$ wget https://nodejs.org/download/release/latest/node-v8.6.0-linux-x64.tar.gz
$ tar node-v8.6.0-linux-x64.tar.gz

তারপরে HT-সার্ভারটি ইনস্টল করুন:

$ export PATH=~/node-v8.6.0-linux-x64/bin:$PATH
$ npm install http-server

তারপরে 12321 পোর্টে HT-সার্ভারটি চালান:

$ ~/node-v8.6.0-linux-x64/bin/node_modules/http-server/bin/http-server -p 12321

0

আমি ncসমাধানটি কিছুটা উন্নত করেছি তাই এটি:

  • filename=ইঙ্গিত যুক্ত করে ,
  • লুপ পর্যন্ত চলে Ctrl + C,
  • একটি পিআইডি সংরক্ষণ করে /tmp/serveFile-$PORTযাতে আপনি এটি পরে সহজেই মেরে ফেলতে পারেন।

#!/bin/bash

FILE=$1;
if [ "$FILE" == "" ] ; then echo "Usage: $0 <file-to-serve> [<port:7979>]"; exit; fi
PORT=${2:-7979}
echo Serving $FILE at $PORT, PID: $$
echo $$ > /tmp/serveFilePID-$PORT

while true; do 
    { echo -ne "HTTP/1.0 200 OK\r\nContent-Length: $(wc -c <$FILE)\r\nContent-Disposition: inline; filename=\"$(basename $FILE)\"\r\n\r\n"; cat $FILE; } | nc -l $PORT
    CODE=$?
    #echo "Code: $CODE";
    if [ $CODE -gt 128 ] ; then break; fi;
done;

rm /tmp/serveFilePID-$PORT

একটি ব্যবহার করতে পারে nc -k -l ...তবে এইভাবে আপনি পারেন

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