Come faccio a configurare la mia API Sinatra REST su un server?

5

Sono principalmente uno sviluppatore iOS. Nella creazione della mia app corrente, avevo bisogno di un server con un'API REST con un paio di richieste GET. Ho passato un po 'di tempo a imparare Ruby e sono arrivato ad usare Sinatra, un semplice framework web. Posso eseguire il mio script server e accedervi da un browser in localhost:4567 , con una richiesta che è localhost:4567/hello , ad esempio.

Ecco dove mi sento fuori dalla mia profondità. Ho installato un droplet Ubuntu su DigitalOcean e ho sentito come impostare tutti gli strumenti necessari tramite la riga di comando, finché non avessi potuto eseguire nuovamente il mio server, ora su questa droplet.

Il problema quindi è che non potevo accedere al mio server tramite droplet.ip.address:4567 , e un po 'di ricerca mi ha portato a scoprire che ho bisogno di Passenger e di un server HTTP Apache da configurare, e non con semplici istruzioni .

Sono molto in testa qui, e non mi sento a mio agio. Deve esserci un modo migliore per farmi portare il mio piccolo gruppo di file ruby ed eseguirlo su un server, rispetto a me. Ma non ho idea di cosa sto facendo.

Qualsiasi aiuto o consiglio sarebbe molto apprezzato.

    
posta Andrew 06.01.2016 - 03:50
fonte

1 risposta

1

Il problema è che il default di Sinatra si lega a "localhost" che è accessibile solo dallo stesso "ip". Se provi ad accedere dall'esterno del droplet, dovresti associarlo a < strong> 0.0.0.0 . Naturalmente, la mia risposta è valida solo per ambienti di sviluppo. Se configuri come ambiente produttivo, le istruzioni che hai citato devono essere seguite.

Per sapere come configurare bing su 0.0.0.0, puoi trovare maggiori informazioni qui link .

:bind - server hostname or IP address String specifying the hostname or IP address of the interface to listen on when the :run setting is enabled. The default value in the development environment is 'localhost' which means the server is only available from the local machine. In other environments the default is '0.0.0.0', which causes the server to listen on all available interfaces.

To listen on all interfaces in the development environment (for example if you want to test from other computers in your local network) use:

set :bind, '0.0.0.0'

L'ho imparato nel modo più duro ma con Rails, ne ho scritto qui ( link ).

Poiché entrambi si basano su Rack, questo collegamento ha causato il cambiamento in Sinatra & Rails (e qualsiasi altro framework Web che dipende da Rack) per avere questo comportamento.

    
risposta data 06.01.2016 - 13:12
fonte

Leggi altre domande sui tag