Installing Ruby and Sinatra with Nginx as reverse proxy

Den hälsosamme ekonomisten, torsdag 19 oktober, 2017
Bild: 2017-09/dsc01062.jpg

My usual readers may skip this post. I'm writing this as a guide to solve a problem that I have found no complete comprehensive instruction to tackle on the net - partly for myself as a reference. But by combining a number of sources I have found a good way of installing Ruby, Sinatra and Nginx as a reverse proxy on Ubuntu (17.04). This is basically a long list of commands where the end result is a complete installation for using Sinatra in the wild.

The steps are in turn:

1) Installing Ruby

2) Installing Sinatra

3) Installing Nginx as a reverse proxy, using either Puma or Webbrick.

The first step: Installing Ruby

sudo apt-get update
sudo apt-get update sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev nodejs
sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm rvm
install 2.4.2
rvm use 2.4.2 --default
ruby -v
gem install bundler

You may have to replace python-software-properties above with another package. There may also be problems with the gpg keyserver. There might be clues in the error messages.

Next step is to install Sinatra. 

sudo apt-get update
sudo apt-get install ruby-dev build-essential
sudo apt-get update
gem install sinatra

Then we begin installing Nginx

sudo apt-get install nginx

To configure Nginx to be used as a reverse proxy you have to change the file /etc/nginx/sites-enabled/default

The block which starts with "location / {" should be changed to

location / {
proxy_pass http://localhost:4567;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

Port 4567 is the default port of Sinatra servers, if this port is set to something else the setting must be changed accordingly. To start the app you just write:

sudo service nginx restart
ruby myapp.rb

This assumes you have created a Ruby app named myapp.rb with something like:

require 'sinatra'
get '/frank-says' do
'Put this in your pipe & smoke it!'
end

If you want to run the app on Google Compute Engine or any other virtual server in production you will need to keep the app running even when the terminal window is closed. To make this possible, install screen if its not already installed. And don't forget to open the relevant ports.

sudo apt-get install screen

You can then start a new screen-session with

screen -S "My App"

And when the new window opens you just write

ruby myapp.rb

to run the app. The window is then closed by pressing ctrl+a and then w.

If you want to stop the app you will have to use "ps aux", look up the process "ruby" and then kill it with "kill -15 <process number>".

You should now have access to the app on the port you have chosen, e g 80. Write http://xx.xx.xx.xx/frank-says to test the setup, where you replace the xx with the ip-adress of the virtual server. The answer should be "Put this in your pipe & smoke it!".

submit to reddit

Kanariefågeln i kolgruvan

Den hälsosamme ekonomisten
Det talas om att en sättning på bostadsmarknaden är på väg. Men hur ser man om processen är på väg att accelerera till något mer än en sättning? Aktiemarknaden är en tidig indikator, eftersom … Läs mer!

Den talande tystnaden

Den hälsosamme ekonomisten
En så kallad  gärningsman , som är aktiv i medievärlden och en ledande opinionsbildare, anklagas för att ha betett sig illa mot kvinnor. I gammelmedierna är tidningsmannen ännu anonym och händelserna … Läs mer!

Nästa KFÖ kommer att äga rum i VR

Den hälsosamme ekonomisten
Har varit på VR-meetup i kväll. Stor uppslutning, med drygt 150 deltagare och flera nya svenska applikationer. Omnifinity är visserligen inte en svensk uppfinning, men kommer säkert med tiden att få omfattande användning av svenska aktörer - som försvaret och MSB. Företaget tillverkar ett slags plattform som gör att det går att röra sig trots … Läs mer!

Vad försöker Morgan Johansson dölja?

Den hälsosamme ekonomisten
Justitieminister Morgan Johansson anklagar i en tweet bredbandsleverantören Bahnhof för att inte hjälpa polisen att jaga brottslingar. Karlung, ditt bolag vill inte hjälpa polisen att klara upp bl a mycket grova barnpornografibrott. Är du stolt över det? — Morgan Johansson (@johanssonmorgan) 14 oktober 2017 Detta är dock inte … Läs mer!

Hur man curlar i Ruby

Den hälsosamme ekonomisten
Har ägnat större delen av helgen åt programmering och börjar få den första applikationen färdig. Har bland annat lärt mig att curla i Ruby, vilket är väldigt användbart om man vill skicka förfrågningar om olika saker till andra servrar. Använder ett särskilt tillägg till Ruby och Sinatra som kallas Typhoeus . I det här fallet handlar det om … Läs mer!

20 år sedan Land för hoppfulla

Den hälsosamme ekonomisten
Fick tag på ett exemplar av det legendariska idéprogrammet Land för hoppfulla . Eftersom det blev så utskällt tänkte jag läsa igenom det för att se vari förgripligheterna bestod.  Det första som slår mig är att det gått några år sedan 1997. Sättet som vi ser på verkligheten har förändrats under 20 år.  Det andra som blir uppenbart är … Läs mer!

Google compute engine rekommenderas

Den hälsosamme ekonomisten
Har under en tid kört Google Compute Engine  och upplever det som ett väldigt enkelt och användarvänligt sätt att köra en dator i molnet. Ofta vill man inte behöva sätta upp en riktig dator bara för att göra ett experiment eller för att sätta upp en app. Själv använder jag molndatorn för  Sinatra, som är en applikation i Ruby som gör det … Läs mer!

Ministrarna som gör sitt jobb

Den hälsosamme ekonomisten
I medierna är det av naturliga skäl stort fokus på ministrar och andra politiker som gör bort sig. Detta är dock inte normaltillståndet, även om man ibland börjar undra. Både i den här regeringen och den förra finns det ministrar som gnetar på, gör sitt jobb och faktiskt bidrar till att förbättra samhället. Miljöpartisten Peter Eriksson har gått … Läs mer!
För några dagar sedan skrev Emma Gerin och Daniel Suhonen på DN-debatt att "Högern vill försvaga välfärden med integrationen som tillhygge". De får svar på tal av Edward Hamilton,  som påtalar att den aktiva arbetsmarknadspolitiken lämnar mycket kvar att önska och att framgångarna för vänsterns integrationsmodell uteblivit. Tankesmedja… Läs mer!

Om bloggen

Den hälsosamme ekonomisten är en blogg som handlar om sjukvårdens organisation, incitament och klassisk liberalism - allt skrivet ur ett ekonomistiskt perspektiv. Webbplatsen använder tredjepartskakor (cookies) från Disqus, Piwik, Facebook, Google och Twitter för att anpassa innehållet och annonserna till användarna, tillhandahålla funktioner för sociala medier och analysera vår trafik. Vi vidarebefordrar information om din användning av vår webbplats till de sociala medier och annons- och analysföretag som vi samarbetar med. Du kan läsa mer om webbplatsens kakpolicy här. Denna sida drivs med webbverktyget Bolt. Av Mattias Lundbäck

VR och Minds

Den hälsosamme ekonomisten finns även tillgänglig i VR. Har man HTC Vive eller Occulus Rift når man hifi://ekonomism genom att först installera appen High Fidelity som ger tillgång till en stor mängd olika virtuella världar. Sedan skriver man bara "ekonomism" i Goto-fältet i HiFi. Fältet motsvarar adressraden i en vanlig webbläsare.

Gå med i Minds.com - ett alternativ till Facebook som bygger på Open Source.

Sociala medier

Den hälsosamme ekonomisten är en blogg för dig som är intresserad av ekonomi, politik och teknik. Följ mig på Twitter för regelbundna uppdateringar. Läs mer om Den hälsosamme ekonomisten och Mattias Lundbäck här.


Linkonomism
Googelkonomism
Feedkonomism