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.

Shou Arisaka
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

Shou Arisaka 10. Okt. 2025

🔗 Links kopieren