Retservo por HTML aŭ JSON dum dek minutoj
Mi scivolis kiom longe mi bezonis por krei retservo de mia unua ideo ĝis kiam mi povas vidi ĝin en mia retumilo. 10 minutoj estis la respondo kaj mi metis kiel suben.
Antaŭpreparado: Mi uzas Docker por kelkaj retpaĝoj kiujn mi gastigas, do mi jam havas la bazstrukturo por tio. Ĝi ekzemplo uzos la Sinatra etkadro en Ruby kaj la JSON-a kromprogramo.
En dosiero nomita Dockerfile
FROM ruby:2.2.1
RUN apt-get update && \
apt-get install -y net-tools && \
rm -rf /var/lib/apt/lists/*
# Instali gems
ENV PROGRAMA_HEJMO /app
RUN mkdir $PROGRAMA_HEJMO
WORKDIR $PROGRAMA_HEJMO
COPY Gemfile* $PROGRAMA_HEJMO/
RUN bundle install
# Alŝuti fonton
COPY . $PROGRAMA_HEJMO
# Starti servilon
ENV PORT 80
EXPOSE 80
CMD ["ruby", "saluton.rb"]
En dosiero nomita saluton.rb
require 'sinatra'
require 'sinatra/json'
set :bind, '0.0.0.0'
set :port, 80
get '/' do
"Saluton #{params[:nomo]}".strip
end
get '/index.json' do
json { nuna_tempo: Time.new }
end
Por konstrui la aufs-a kopio:
$ docker build -t uzantnomo/saluton .
kaj puŝi ĝin al Dockerhub
$ docker push uzantnomo/saluton
Mi instalis la imagon je Docker servilon kaj alidirektis DNS al la nova servilo. Por kontroli mi uzis Restclient en Emakso:
GET http://servilo.com/index.json
{
"nuna_tempo": "2016-03-21 13:58:57 +0000"
}
GET http://servilo.com/
Saluton
GET http://servilo.com/?nomo=Zamenhof
Saluton Zamenhof
De tie Sinatra estas malgranda kadraĵo por komenci projekton. Se la projekto estos pli granda eble Rails estus pli bona, sed oni bezonas pli da antaŭpreparado. Iukaze, mi nun havas kadron por krei retservon rubenan kaj meti ĝin surrete publike dum 5 minutoj.