sinatra HTTP-Server erstellen POST-Anfrage

HTTP-Server erstellen und POST-Anfragen mit Sinatra behandeln

Eine Notiz zum Erstellen eines HTTP-Servers mit Sinatra und zur Behandlung von POST-Anfragen. Ich war besorgt darüber, wie man einen Ruby-HTTP-Server erstellt, aber ich konnte es einfach durch Angabe der IP-Adresse mit Sinatra tun.

Vulpes
2 Min. Lesezeit
10. Okt. 2025

Dies ist eine Notiz zum Erstellen eines HTTP-Servers mit Sinatra und zur Behandlung von POST-Anfragen.

Ich entwickle normalerweise lokal, und ich war besorgt darüber, wie man einen global zugänglichen Ruby-HTTP-Server auf einem VPS oder ähnlichen Server mit zugewiesener IP erstellt, aber ich konnte es einfach durch Angabe der IP-Adresse mit Sinatra tun.

Zuerst habe ich es mit laufendem apache2 versucht.


# ruby app.rb -o 150.95.00.00 -p 80
Ignoring ffi-1.9.23 because its extensions are not built. Try: gem pristine ffi --version 1.9.23
Ignoring http_parser.rb-0.6.0 because its extensions are not built. Try: gem pristine http_parser.rb --version 0.6.0
== Sinatra (v2.0.3) has taken the stage on 80 for development with backup from Thin
Thin web server (v1.7.2 codename Bachmanity)
Maximum connections set to 1024
Listening on 150.95.00.00:80, CTRL+C to stop
Stopping ...
== Sinatra has ended his set (crowd applauds)
Traceback (most recent call last):
        11: from /root/gems/gems/sinatra-2.0.3/lib/sinatra/main.rb:26:in `block in <module:Sinatra>'
        10: from /root/gems/gems/sinatra-2.0.3/lib/sinatra/base.rb:1459:in `run!'
         9: from /root/gems/gems/sinatra-2.0.3/lib/sinatra/base.rb:1525:in `start_server'
         8: from /root/gems/gems/rack-2.0.5/lib/rack/handler/thin.rb:22:in `run'
         7: from /root/gems/gems/thin-1.7.2/lib/thin/server.rb:162:in `start'
         6: from /root/gems/gems/thin-1.7.2/lib/thin/backends/base.rb:73:in `start'
         5: from /root/gems/gems/eventmachine-1.2.5/lib/eventmachine.rb:194:in `run'
         4: from /root/gems/gems/eventmachine-1.2.5/lib/eventmachine.rb:194:in `run_machine'
         3: from /root/gems/gems/thin-1.7.2/lib/thin/backends/base.rb:63:in `block in start'
         2: from /root/gems/gems/thin-1.7.2/lib/thin/backends/tcp_server.rb:16:in `connect'
         1: from /root/gems/gems/eventmachine-1.2.5/lib/eventmachine.rb:530:in `start_server'
/root/gems/gems/eventmachine-1.2.5/lib/eventmachine.rb:530:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)

Nun, ein Fehler.

Apache stoppen und erneut ausführen.

/etc/init.d/apache2 stop

Es hat funktioniert.

# ruby app.rb -o 150.95.00.00 -p 80
Ignoring ffi-1.9.23 because its extensions are not built. Try: gem pristine ffi --version 1.9.23
Ignoring http_parser.rb-0.6.0 because its extensions are not built. Try: gem pristine http_parser.rb --version 0.6.0
== Sinatra (v2.0.3) has taken the stage on 80 for development with backup from Thin
Thin web server (v1.7.2 codename Bachmanity)
Maximum connections set to 1024
Listening on 150.95.00.00:80, CTRL+C to stop

Image

Wenn Sie eine POST-Anfrage mit curl wie folgt senden, werden die auf der Serverseite empfangenen Daten angezeigt.

curl http://150.95.00.00/ -X POST -d 'html=hogehogehoge'

Zusammenfassung

Dies war eine Notiz zum Erstellen eines HTTP-Servers mit Sinatra und zur Behandlung von POST-Anfragen. Das Problem ist, dass Sie einen Fehler erhalten, wenn Sie Sinatra starten, während apache2 läuft, sodass Sie apache2 stoppen müssen, bevor Sie Sinatra starten.

Das ist alles.

Diesen Artikel teilen