Applikationsserver für wenige Nutzer

Hinweis: In dem Thema Applikationsserver für wenige Nutzer gibt es 12 Antworten auf 2 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Sehr geehrte Mitglieder,


    ich habe neben dem Studium zwei private Projekte verfolgt die ich gerne für die Personaler der Unternehmen wo ich mich bewerben werde zugänglich machen möchte, um die praktischen Fähigkeiten unter Beweis zu stellen.


    Dafür benötige ich einen Server. Momentan habe ich die Projekte auf einem Laptop unter Suse laufen bzw in der welchen Entwicklung, welchen ich als Server auserkoren habe (aufgrund keiner anderen verfügbaren Mittel). Ich gehe von ungefähr 10 Zugriffen (maximaler Peak) und maximal drei gleichzeitig aus. D.h. der Rechner bleibt auch nur die Bewerbungsphase online, sprich maximal ein halbes Jahr, eher weniger.


    Die wichtigsten Bedindungen sind Performance zu keinen Kosten.


    Meine Fragen:
    1. Ist die Suse 12.3. dafür geeignet? Ich habe schon viel gelesen, bin aber nicht abschließend sicher.
    2. Was für Programme müssen dafür genutzt werden?


    Ich bin bereit mich gerne in tiefere Fragen einzuarbeiten. Ein gutes HowTo für Einrichtung auf einer reinen OpenSUSE OS wäre toll. Meist findet man nur SLES-Tutorials, dessen ich mir noch nicht zu leisten imstande bin.


    Vielen Dank,
    Inge

    Für den Inhalt des Beitrages 57653 haftet ausdrücklich der jeweilige Autor: Ingeborg

  • Und was soll dieser "Applikationserver" dann tun?


    Nur mittels eines Webservers ein paar Dokumente bereitstellen?
    Oder soll dort eine richtige Webapplikation laufen?
    Wenn ja, welche Sprache? php, python, asp, jsp? Oder andere Exoten?


    Prinzipiell kann das jedes Linux.
    Erst recht bei den marginalen Zugrifen.


    Beschreibe bitte präzise, was du erwartest.

    Für den Inhalt des Beitrages 57654 haftet ausdrücklich der jeweilige Autor: uhelp

  • Vielen Dank für die schnelle Antwort.


    Es handelt um zwei unter dem gleichen OS und der gleichen IDE (Qt4) geschriebene voneinander unabhängige Programme in C++. Die entsprechenden GUIs, sollen dabei bei Programmaufruf auf einer auf dem Server befindlichen Website angezeigt und auch voll genutzt werden können. Es handelt sich dabei um ein Bildverarbeitungsprogram und ein Algorithmenprogramm, welches Radarsignale in Bilder umwandelt.


    Wenn es noch auf Clientseite eine evtl vorhandene Webcam ansteuern kann, wäre das ganz großes Kino, ist aber nicht weiter notwendig. Eine Kommunikationsplattform via Email sollte auch enthalten sein, dass scheint mir aber jetzt nicht das Problem zu sein.


    Das Projekt ist momentan in einer Machbarkeits- und Denkphase. Ich hoffe die benötigten Infos reichen. Was Server angeht bin ich noch recht blutiger Anfänger.


    Vielen Dank nochmal,


    Inge

    Für den Inhalt des Beitrages 57657 haftet ausdrücklich der jeweilige Autor: Ingeborg

  • Hallo, danke für die Info


    QtWui scheint nicht unbedingt das richtige zu sein, da gewisse Qtklassen in der Webform (noch) nicht existieren die leider essentiell sind, aber vll lässt sich ja eine bestehende Applikation ja über Vererbungen mit einbinden lassen, ähnlich wie Qwt, nur umgekehrt, beispielsweise ein WebFrame worauf man dann die bestehende Applikation draufsetzt. Das Problem löse ich aber später, wobei ich mich frage, ob es nicht einfach möglich wäre, das Programm freizugeben um sodass jemand von außen damit Serverseitig was sehen kann, aber egal.


    Wie ist das mit Python? Soweit ich weiß kann man die Applikationen auch mit Qt4 in Python Code umhacken. Der müsste doch dann Browserfähig ein, oder?


    Momentan ist aber ersteinmal der Server wichtig. Ich habe hier ein Tutorial für debian gefunden.


    http://www.linux-home-server.de/


    Ich hörte aber, dass Debian recht starke Kenntnisse auf LinuxLowLevel Ebene vorraussetzt, wo ich mir aber zu unsicher bin. Man kann aber denke ich ganz gut ablesen, was wohl gebraucht wird. Ich habe auch gelesen, dass die hervorragende Yast Koordination der Pakete da auch sehr hilfreich ist.


    Wenn ich das richtig überblicke, benötige ich wohl den DNS-Server, WebServer Applikation wohl mit Apache , Samba und dann kann es losgehen.


    Grüße,
    Inge

    Für den Inhalt des Beitrages 57683 haftet ausdrücklich der jeweilige Autor: Ingeborg

  • QtWui scheint nicht unbedingt das richtige zu sein, da gewisse Qtklassen in der Webform (noch) nicht existieren die leider essentiell sind, aber vll lässt sich ja eine bestehende Applikation ja über Vererbungen mit einbinden lassen, ähnlich wie Qwt, nur umgekehrt, beispielsweise ein WebFrame worauf man dann die bestehende Applikation draufsetzt.

    Wie ich schon sagte: Das muss man alles erst mal programmieren.


    Zitat

    Das Problem löse ich aber später, wobei ich mich frage, ob es nicht einfach möglich wäre, das Programm freizugeben um sodass jemand von außen damit Serverseitig was sehen kann, aber egal.

    Was letztlich dasselbe Problem ist.

    Zitat

    Wie ist das mit Python? Soweit ich weiß kann man die Applikationen auch mit Qt4 in Python Code umhacken. Der müsste doch dann Browserfähig ein, oder?

    Es gibt für Python ein Modul, mit dem man für beliebige libs Wrapper erzeugen kann. Und natürlich gibt es Bindings für Qt. Aber auch das muss man erst programmieren.
    Trivial ist das alles nicht.


    Einfach so, ist kein python Programm einfach webfähig.
    Es gibt einige sehr ausgefeilte Frameworks, die einem beliebige Webserver bieten.
    Sogar hin bis zu Servern, die eigene Protokolle fahren.


    Aber, wie oben: Weder trivial, noch einfach so möglich.
    Auch hier viel Proggen und um die Desginfehler des Originalprogrammes herumschreiben.



    Zitat

    Momentan ist aber ersteinmal der Server wichtig. Ich habe hier ein Tutorial für debian gefunden.


    http://www.linux-home-server.de/


    Ich hörte aber, dass Debian recht starke Kenntnisse auf LinuxLowLevel Ebene vorraussetzt, wo ich mir aber zu unsicher bin. Man kann aber denke ich ganz gut ablesen, was wohl gebraucht wird. Ich habe auch gelesen, dass die hervorragende Yast Koordination der Pakete da auch sehr hilfreich ist.

    Die Linuxwelt teilt sich grob in zwei Hälften: Die einen verwenden deb Pakete. Das sind DEBian Pakete. Und der andere Teil verwendet RPM Pakete. (RedhatPackageManagement). Dazu gehört openSUSE mit seinem zypper/YaST. Letztlich wird überall mit Wasser gekocht. Keine Distribution bietet etwas, was die andere nicht auch könnte. Mehr oder weniger aufwendig.
    (Es gibt abseits dieser paketorientierten Softwareverwaltung auch Distris, die alles von der Pike auf kompilieren (Gentoo, Arch etc.)


    Aber unterm Strich kann jede, was jede andere auch kann.


    Zitat


    Wenn ich das richtig überblicke, benötige ich wohl den DNS-Server, WebServer Applikation wohl mit Apache , Samba und dann kann es losgehen.

    Einen DNS-Server brauchst du ganz sicher nicht. Einen Sambaserver für das Webprojekt auch nicht. Der ist nur dazu da, damit Windows Rechnern vorgespielt werden kann, dass sie Ressourcen eines Win-Servers (Datei/Druckerfreigabe und dergleichen) verwenden. (Samba == ServerMessageBlock == Microsoftnetzwerkprotokoll)


    Um das vernünftig einschätzen zu können, solltest du mal ein paar Screenshots zeigen, und Eckdaten nennen.
    Wieviel Power fordern die Graphikroutinen? Sind die Zeitkritisch?
    Ist die Funktionalität so gekapselt, dass man einen Wrapper leicht hinkriegen könnte?
    Welche UI Elemente werden verwendet?
    Und lassen die sich überhaupt auf irgendein XML für's Web abbilden?
    Viel zu viele Fragen, um auch nur annähernd irgendeinen Weg oder gar Framework empfehlen zu können.

    Für den Inhalt des Beitrages 57687 haftet ausdrücklich der jeweilige Autor: uhelp

  • Zitat

    Wie ich schon sagte: Das muss man alles erst mal programmieren.

    Ok, missverstanden.

    Ich bin in einer Lernphase. Mir macht es daher nichts aus, was Neues zu lernen. Ich werde wohl meinen C++ Code in Python umschreiben, da alle Libs die ich nutze auch in Python entweder direkt verfügbar oder bestimmt in anderer Form vorliegen. Jetzt besteht die Frage, ob die GUIs dann webfähig sind. Hier wäre ein Tipp für eine Serverlösung mit Qt4 sehr schön. Denn ich möchte nur ungern das einmal erdachte System mit einer neuen Lib umschmeißen. Client Seitig soll es angezeigt und Serverseitig soll gerechnet werden.

    Danke. Das hat etwas Licht ins Dunkel gebracht. Ich wusste nur, dass es Pakete waren.

    Zitat

    Einen DNS-Server brauchst du ganz sicher nicht. Einen Sambaserver für
    das Webprojekt auch nicht. Der ist nur dazu da, damit Windows Rechnern
    vorgespielt werden kann, dass sie Ressourcen eines Win-Servers
    (Datei/Druckerfreigabe und dergleichen) verwenden. (Samba ==
    ServerMessageBlock == Microsoftnetzwerkprotokoll)

    Alles klar, danke.

    Klassenhierarchisch betrachtet steht ganz oben und ganz alleine die Hauptklasse. So sieht die Nutzung in einem Mainfile aus.






    #include <QApplication>// Qt4 klasse
    #include "eamviewer.h" // Hauptklasse

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    EAMViewer w;
    w.show();


    return a.exec();
    }


    Ich habe null Erfahrung in dem Bereich, kann mir aber vorstellen, dass ein Wrapper machbar wäre, oder?


    Mach dir um Aufwand keinen Kopf. Wie ich schon schrieb, ich bin in einer Lernphase, wenn auch fortgeschritten. Da bevorzuge ich noch den einen oder anderen langen Weg um mein Ziel zu erreichen und beiß mich in Python rein, denn der Weg ist dabei auch das Ziel. Linux und Programmieren sind immer Arbeit. Ich bin das gewohnt und es macht Spaß wenn ewas funktioniert ^^ .


    Eckdaten:
    Distri bekannt.
    Rechner: i5 Quadcore 2,24 GHz 64 Bit, 4GB RAM, Grafikkarte, kann ich gerade nicht nachschauen, dürfte nicht unbedingt wichtig sein. Zugriff soll erst noch implementiert werden.


    Programme:
    Knapp 6000 Zeilen
    libs: die normalen C++
    iostream etc,
    vereinzelt Anleihen aus C
    STL,
    OpenCV,
    QLibs: ganze Menge
    Mainwindows, Widgets, Menubars, GraphicsView, Graphicsscenes, custom widgets...


    Ressourcenaufwand:
    - einiges, geht aber, RAM wird beim Laufen, auch der Videobearbeitung nur um wenige Prozente mehr beansprucht, Programm an sich auch. Bei der CPU sind auch nicht alle vier Kerne ausgelastet. Wenn überhaupt dann nur einer. Für drei parallele Abläufe sollte PLatz sein.


    Brauchst du noch mehr Eckdaten? Weiß gerade nicht, wofür du Screenshots brauchst.


    Grüße und Dank!
    Inge

    Für den Inhalt des Beitrages 57698 haftet ausdrücklich der jeweilige Autor: Ingeborg

  • Ein korrektes Design des Programms wäre da förderlich.
    Lese ein wenig über das MVC Paradigma. (ModelViewController)
    Damit ist die Funktionalität (Controller) vollständig separiert von der Darstellung (view).


    Dein Problem besteht wohl darin, dass sich eben Qt Widgets NICHT auf HTML (im allerweitesten Sinne) abbilden lassen.


    Wenn du dein Programm auf Python umschreiben willst, würde ich dir zu web2py raten.
    Ein Framework, dass sehr schnelle Entwicklung von Webseiten zulässt und dabei alles bietet, was das Herz begehrt.
    (z.B. kann man mit nur einer Zeile Code alle verwendeten DBs einfach in ein anderes DBMS konvertieren)
    Was aber das Desgin einer komplett neuen GUI voraussetzt.


    Willst du bei den QtWidgets bleiben, solltest du eher anders vorgehen:
    Trenne die Funktionalität komplett von der GUI.
    Und baue eine Zwischenschicht, die via irgendeines RPC-Mechanismus seine Dienste via Netz zur Verfügung stellt.


    Was da einfacher ist, lässt sich so nicht sagen.


    Ich selbst bin da voreingenommener Pythonista.
    Damit lässt sich alles erschlage.
    Und in manchen Belangen ist Python -obwohl eine Interpretersprache- schneller als C.
    Mag man kaum glauben, ist aber so.


    Hast du das auf Python migriert, kannst du dennoch mit PyQt leicht deine heißgeliebten Qt-Widgets verwenden.
    (Dran rumpfrimmeln wirst du dennoch müssen.)

    Für den Inhalt des Beitrages 57699 haftet ausdrücklich der jeweilige Autor: uhelp

  • Hey, das ging ja fix, danke!!


    Ich denke, dass ich ganz gut getrennt habe. Qt4 ist an sich ja auch nach dem MVC aufgebaut, erst recht, wenn man den Creator verwendet, in dem man sich die GUIs zusammenklickt. Unterteilt nach GUI und Imageprocessing (Slot)-Funktionen habe ich ohnehin weitestgehend. Ich denke, dass hat auch was mit gutem Stil zu tun.


    Wie gesagt, ein wenig Arbeit kommt noch hinzu.


    Am Wochenende werde ich mal meine ersten Servergehversuche machen. Dann schmeiße ich mich an die Anpassung der Programme ran.



    Btw: Das Python fix ist, ist mir nicht neu, immerhin sind in OpenCV die zeitkritischen Funktionen auch in Python ausgeführt, wass mich dazu fast bewegt alles umzuschmeißen. Ich denke, dass hat eben mit der vereinfachten Einbindung in Netzapplikationen zu tun. Ich kann mich aber auch täuschen. Im Kern ging es mir ohnehin nur darum, zu lernen. C++ war ein Ziel, weil es einfach alle Programmierparadigmen mehr oder weniger abdeckt. Python als Sprache fürs Netz, passt eigentlich ganz gut. Ich werde mich wohl mal auf die Schiene einarbeiten. Du schreibtest in einem Vorkommentar, dass noch nicht jedes jedes Python Programm gleich in Webprogramm ist. Mein wahrscheinlichster Weg ist wohl, dass ich den C++ Code mit Python mit PyQt umwandle. Alle Widgets sind dann in auch in Python durchführbar. Was wäre denn jetzt notwendig um diesen Code (-> mit klarer MVC Trennung) in eine Webpage umzuwandeln?


    Vielen Dank für die wertvollen Tipps!


    Grüße,
    Inge

    Einmal editiert, zuletzt von Ingeborg ()

    Für den Inhalt des Beitrages 57701 haftet ausdrücklich der jeweilige Autor: Ingeborg

  • Ich kenne Leute, die nur hochleistungsfähige Konsolentools mit Python schreiben.
    Und Leute, die nur bunt bewegte Spielchen damit coden.
    Beides geht gut.


    Dich wird das hier besonders interessieren.
    Mit diesen Bindingsgeneratoren wirst du schnell dein Vorhaben realisieren können.


    Für die einfache Netzwerkprogrammierung (im Sinne von einfach zu programmieren, nicht im Sinne von Hello-World-und-Schluß), dann solltest du dich auf jeden Fall mit twisted beschäftigen.
    Das ist ein Neztwerkframework komplett in Python geschrieben.
    Dort kannst du so ziemlich jedes Netzprotokoll einfach verwenden, und falls es das doch noch nicht geben sollte, einfach selbst implementieren.
    Hier kannst du ein wenig nachlesen, und es natürlich auch in den openSUSE Repos.
    Schreibst du damit deinen Netzwekcode, solltest du deine Programme unabhängig von jedem OS und Browser vollumfänglich hinkriegen.


    Für Webprogrammierung bevorzuge ich "web2py".
    Es ist von Haus aus gegen alle gängigen Angriffsszenarien immun, Websiten lassen sich damit irre schnell coden, die Anwendungen laufen auch auf Googles Appengine und noch vieles mehr.
    Alternativ dazu kannst du auch mal nach "Django" gucken.
    Das ist in manchen Belangen schneller, aber dafür nicht so sicher. Und es ist nicht voll rückwärtskompatibel.
    web2py garantiert, dass auf JEDER neuen Version auch noch Apps von Version annodunnenmals laufen.

    Für den Inhalt des Beitrages 57704 haftet ausdrücklich der jeweilige Autor: uhelp