ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
BeitragVerfasst: 30 Nov 2016, 15:40 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Eine letzte Frage habe ich noch. Ich stelle gerade eine Liste für die drei Frameworks Ruby on Rails, Sinatra und Padrino zusammen. Mir fehlt noch eine zuverlässige Liste der Software, die jeweils auf dem Server vorhanden sein muss, damit alles läuft. Kennt jemand Links auf Seiten, die zuverlässig sind?

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
BeitragVerfasst: 30 Nov 2016, 19:14 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
Naja, die Web-Frameworks sind ja alle Rack-basiert, insofern unterscheiden sich die Grundvoraussetzungen nicht maßgeblich. Du brauchst fürs Deployment in jedem Fall:

  • Einen Frontend-HTTP-Server (typischerweise Apache oder Nginx), der mit Reverse-Proxy-Funktion ausgestattet ist, alternativ mit Phusion Passenger („mod_rails“)
  • MRI Ruby > 2.1.0 oder RVM/rbenv/chruby oder Zugriff auf einen Paket-Manager
  • RubyGems
  • Den Gem bundler
  • Zugriff auf die Kommandozeile (typischerweise SSH), um mit Bundler deine Abhängigkeiten installieren zu können
  • Einen Datenbank-Server, typischerweise PostgreSQL oder MySQL. Je nach Art der Daten kann auch eine NoSQL-Datenbank in Frage kommen.
  • Eine wie auch immer gestaltete Möglichkeit, deine Anwendung beim Systemstart automatisch zu starten
  • Wenn du Bibliotheken mit C-Extensions einsetzt: einen C-Compiler
  • Wenn du regelmäßige Aufgaben erledigen musst: Cron

Speziell für Rails benötigst du neuerdings (seit Rails 4?) eine serverseitige JavaScript-Runtime. Dafür kommt typischerweise NodeJS zum Einsatz, allerdings kann man wohl auch drumherum arbeiten, indem man bestimmte Gems installiert (AFAIK therubyrunner).

Darüber hinaus kann man natürlich beliebig kompliziert werden und umfassendes Load-Balancing und Caching betreiben. Diesbezüglich würde mich einmal interessieren, ab wann man sowas eigentlich braucht und wie man sowas umsetzt. Das sollte aber besser Thema eines eigenen Threads sein.

Ein typisches, einfaches Rails-Deployment ohne viel Drumherum wird hier bei DigitalOcean beschrieben. Für Webanwendungen, die nicht Rails benutzen, aber dennoch auf Rack aufsetzen (= fast alle), kann man es praktisch identisch machen.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
BeitragVerfasst: 30 Nov 2016, 20:25 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Vielen Dank :D

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
BeitragVerfasst: 30 Nov 2016, 21:05 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
[OT]
Ich habe eine Idee, die nicht mit der obigen Sache zu tun hat, ausser vielleicht für Experimente, die mir aber für mein kleines Netz lokal ausgesprochen gefallen würde - nur weiss ich nicht, ob das Rechnerchen dafür ausreicht.

ich rede von einem Banana Pi Pro mit 125GB SSD im Wlan. Recht diese Hardware von der Leistung her aus um Rails samt Datenbank und Daten zu installieren und zu betreiben?
[/OT]

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
BeitragVerfasst: 01 Dez 2016, 11:23 
Offline
Lehrling

Registriert: 20 Feb 2006, 11:16
Beiträge: 81
Hi,

das geht schon, macht dann aber auch nicht wirklich Spaß. Die Hardware ist da einfach zu schwach. Kompilieren von C-Extensions dauert ewig, da noch ein MySql drauf laufen lassen ist auch nicht wirklich komfortabel.


Nach oben
 Profil  
 
BeitragVerfasst: 01 Dez 2016, 20:12 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
Zitat:
Einen Frontend-HTTP-Server (typischerweise Apache oder Nginx), der mit Reverse-Proxy-Funktion ausgestattet ist, alternativ mit Phusion Passenger („mod_rails“)


Ob man den braucht, kommt ganz auf den Anwendungsfall an. Im Prinzip braucht man erstmal keinen Frontend-Server. Man kann einfach Unicorn, Puma oder Thin auf Port 80 laufen lassen und fertig. Wenn man z.B. heroku nutzt startet man auch einfach nur den "Ruby-Server". Der Frontend Server spielt seine Vorteile aus, wenn man viele statische Inhalte hat, Ruby nicht auf Port 80 starten möchte, Loadbalancing braucht oder ein paar andere spezielle Anwendungsfälle hat. Es könnte auch ein Loadbalancer wie z.B. haproxy eine gute alternative zu Apache oder nginx sein. Leider unterstützen die Ruby-Server kein SSL. Dann brauchst du auf jeden Fall einen Frontend-HTTP-Server oder Loadbalancer mit SSL-Terminierung.


Zitat:
Speziell für Rails benötigst du neuerdings (seit Rails 4?) eine serverseitige JavaScript-Runtime. Dafür kommt typischerweise NodeJS zum Einsatz, allerdings kann man wohl auch drumherum arbeiten, indem man bestimmte Gems installiert (AFAIK therubyrunner).


Das ist so halb Richtig. Das Teil wird für die Assets-Pipeline (genauer für ExecJS) benutzt, um aus Coffee-Script Javascript zu machen und für den uglifier. Du brauchst es nur im development mode und beim Asset-Precompile. Wenn du die Assets auf deinem development Rechner compilierst, dann brauchst du keine js-runtime auf dem Server.

Zitat:
Wenn du Bibliotheken mit C-Extensions einsetzt: einen C-Compiler


In diesem Fall braucht man auch die entprechenten dev-packages auf dem Server. Zum einen die von der benutzten Ruby-Version und dann noch die Abhängigkeiten der Bibliothek. Für nokogiri z.B. libxslt-dev libxml2-dev zlib1g-dev.

Wenn man mit Rails lang laufende Aktionen hat (z.B. Bilder scalieren, oder auch EMails senden), dann
sollte man dies nicht innerhalb des Request-Cycles machen. Einen extra Thread dafür auf zu machen ist auch nicht ganz optimal. Im Rails-Umfeld haben sich dafür Background-Jobs etabliert. Diese haben mit ActiveJob jetzt auch ihr zu Hause in Rails gefunden. Wenn man dafür Sidekiq einsetzt, dann braucht man noch eine Redis-DB.

Gut ist es auch, wenn du logrotate einrichten kannst. Rails schreibt ja seine eigenen Logfiles weg.
Besser ist es natürlich, wenn man mit syslog logged oder gleich logstash oder graylog2 nimmt. Aber ich denke in deinem Fall wäre das mit Kanonen auf Spatzen geschossen.

Weiterhin ist es eine Überlegung wert, ob man newrelic und/oder airbrake für das App-Monitoring nutzt. Man sollte aber im Hinterkopf bewahren, was man da an Daten raus gibt.

Ein typisches Rails Deployment besteht meist aus den Schritten, Code-Update, DB-Migration, Asset-Compilieren und Server mit neuer Version starten. Um dieses deployment zu automatisieren ist capistrano recht gut und es lohnt sich die Zeit für die Einarbeitung in dieses Tool.

_________________
Grüße
Jack


Nach oben
 Profil  
 
BeitragVerfasst: 01 Dez 2016, 23:08 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Manchotix hat geschrieben:
Sonst würde ich dir aber ganz gerne Padrino oder Sinatra ans herz legen wo die Doku richtig gut ist und das Framework nicht so groß ist, als auch weniger Magic drin versteckt ist.
Ich selber neheme es sehr gerne auch für meine Webseite oder kleine Webprojekte bis hin zu einer REST-Schnittstelle
http://www.sinatrarb.com/
http://padrinorb.com/

Es wird wohl auf eine dieser kleineren Lösungen hinauslaufen - falls überhaupt. Nachdem, was ich derzeit feststellen konnte, ist der überwiegende Teil des Ganzen statisch und die dynamischen Komponenten sollen auch nur von einer zentralen Position aus benutzt werden können. Ich weiss es deshalb noch nicht genauer, weil die Kommunikation eines Nicht-GUI-Entwicklers, der bisher auch höchstens ganz am Rande mit konsumierenden Endkunden zu tun hatte, mit den potentiellen Kunden ausgesprochen schwerfällig ist. Die denken halt in anderen Kategorien, die mehr mit Design und Suchmaschinenoptimierung in Bezug auf ihr Geschäft zu tun haben. Den Anblick von HTML finden sie eher erschreckend. Mir ist nicht klar, wie sie sich die Wartung und Pflege der Seiten vorstellen, denn das werde ich langfristig (siehe mein Alter) mit Sicherheit nicht machen. Ich schätze die ganze Linie hat in erster Linie mit HTML&CSS zu tun, speziell CSS.

ich warte jetzt erst mal ab, aber die andere Geschichte mit einem Banana Pi samt SSD sehe ich für mich als interessant an. Es würde sich ja letztendlich um einen Server handeln, auf dem sehr viele Dokumente, die überwiegende Mehrzahl pdf, bereitstehen, die jeweils über Schlagwörter gefunden und dann heruntergeladen und lokal bearbeitet werden. Die Nutzerschnittstelle dürfte dann ähnlich den Seiten der Badischen Landesbibliothek aussehen (siehe Bild). Dafür, und dass ein gleichzeitiger Zugriff von mehr als einem Nutzer sehr unwahrscheinlich ist, sollte solch ein Minirechner durchaus ausreichen


Dateianhänge:
Suchanfrage.png
Suchanfrage.png [ 55.91 KiB | 976-mal betrachtet ]

_________________
WoNáDo.set_state!(:retired)
Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: