Laravel auf einem Webhosting?

  • Moin und einen hoffentlich angenehmen und wunderschönen kühlen Samstag euch allen!

    Ich denke mal, dass es der halbwegs richtige Bereich ist, in dem ich mich für dieses Anliegen befinde. Einen anderen habe ich jetzt nicht ausmachen können.

    Folgende Frage stellt sich mir aktuell in den Raum:
    Ist es möglich bei einem Webhosting-Paket Laravel laufen zu lassen, das bedeutet mit allen Instanzen zum npm compilen und sogar das pushen aus github heraus oder bietet Netcup es in dieser Form nicht für die hier angebotenen Webhosting-Pakete an? Müsste man hier alternativ auf Selfhosting umsteigen, also bsp. auf einem eigenen VPS die nötigen Dinge einrichten?

    Ich hoffe ihr könnt mir weiterhelfen!

    Viele Grüße
    Ray

  • Wenn man das meiste schon vorher macht, z.B. mit einer CI in GitLab, muss der Server nichts mehr compilieren, etc. Was nicht geht sind Queues, da man hier einen Prozess haben muss, der immer läuft. Dafür sind die Webhostingpakete nicht vorgesehen.

  • Nach meinen Erkenntnissen aus den Laravel Docs gibt es zumindest eine entscheidende Servereinstellung, ohne die die Laravel App nicht laufen wird.


    Standardmäßig wird beim Seitenaufruf die Datei httpdocs/index.php geladen. Bein einer Laravel App ist der Pfad zur Datei jedoch httpdocs/public/index.php. Kann mir jemand sagen, ob und wie ich diesen Dokumentenstamm serverseitig anpassen kann?


    Die anderen genannten Punkte wie Caching / Queues sind optionale Features und nicht verfügbar beim Shared Hosting. Die App sollte aber auch ohne diese Features laufen. Wichtig ist demnach die Anpassung des Dokumentenstamms.


    Cheers


    Tom

    Electrical engineer by profession, web dev by passion, musician at night.

  • Ich habe bei mir auf dem Shared Hosting eine Laravel Anwendung laufen (Snipe-IT), ich habs einfach so installiert wie in den Docs bei denen beschrieben.


    Wichtig ist in den PHP-Einstellungen das open_basedir auf {WEBSAPCEROOT}{/}..... umzustellen (also non standart) anders läufen die Anwendungen bei mir jedenfalls nicht.


    Viele Grüße,

    Nicholas


  • Ich habe den Pfad zur index.php angepasst (httpdocs/public/). Platziere ich dort eine einfache statische Seite zu Testzwecken, wird diese beim Aufruf der Domain korrekt angezeigt.


    Nun habe ich mein Laravel-Projekt hochgeladen, allerdings wird beim Aufruf meiner Seite(n) eine weiße Seite angezeigt und der Konsole zufolge kommt es beim ersten GET meine-domain.com bereits einen Server Fehler (Status 500).


    Ich schätze, es könnte mit den Umgebungsvariablen bzw. der Datei .env zusammenhängen.


    Erinnerst du dich, was man hierbei noch beachten muss und welche Schritte zusätzlich erforderlich sind?


    Danke und Grüße


    Tom

    Electrical engineer by profession, web dev by passion, musician at night.

  • Ich kann mich sonst an nichts spezielles erinnern. Webspace Root auf /public und entsprechende URL ohne /public in der .env unter APP_URL eintragen.

    Das sollte es gewesen sein. Die Weiße Seite bzw. 500 lagen bei mir an dem open_basedir danach lief eigendlich alles gut.

  • Ich kann mich sonst an nichts spezielles erinnern. Webspace Root auf /public und entsprechende URL ohne /public in der .env unter APP_URL eintragen.

    Das sollte es gewesen sein. Die Weiße Seite bzw. 500 lagen bei mir an dem open_basedir danach lief eigendlich alles gut.

    Es funktioniert jetzt bei mir!


    Ich hatte zuvor die gesamte Laravel App im Ordner httpdocs platziert und als Root den Pfad httpdocs/public angegeben. Nun habe ich es App eine Verzeichnisebene nach oben verschoben und httpdocs gelöscht und es hat geklappt.


    Cheers


    Tom

    Electrical engineer by profession, web dev by passion, musician at night.

  • Damit wird es möglich sein! PHP und SSH steht allen Webhosting Paketen zur Verfügung. Damit habe ich es im Webhosting 2000 Paket zum Laufen bekommen.


    Viel Erfolg!


    Tom

    Electrical engineer by profession, web dev by passion, musician at night.

  • Hallo zusammen,


    ich kämpfe aktuell daran mein Laravel Projekt (um genau zu sein mit Splade) auf einem Webhosting 8000 zum laufen zu bekommen.


    Die Dateien sind direkt im Domainverzeichnis hinterlegt und der Dokumentenstamm zeigt auch auf das /public Verzeichnis. Allerdings bekomme ich dennoch ein HTTP-Code 500 zurückgeliefert, wenn ich die Seite aufrufe.

    In den PHP-Einstellungen habe ich für open_basedir die Einstellung "{WEBSPACEROOT}{/}{:}{TMP}{/}{:}{/}var{/}lib{/}php{/}sessions" eingetragen.


    Schaue ich mir jedoch die phpinfo() Seite an, ist für den open_basedir folgender Pfad hinterlegt: /var/www/vhosts/[mein Account]/:/tmp/:/var/lib/php/sessions

    Hier fehlt nach meinem Verständnis nach noch das Domain-Verzeichnis.


    Hinterlege ich für den open_basedir die Standardkonfiguration, wird natürlich der Pfad bis zum Dokumentenstamm (/var/www/vhosts/[mein Account]/mein-domain.de/public) angegeben und ich bekomme den folgenden Fehler angezeigt:

    Code
    Warning: file_exists(): open_basedir restriction in effect. File(/var/www/vhosts/[mein Account]/mein-domain.de/public/../storage/framework/maintenance.php) is not within the allowed path(s)


    Eine Info noch: Dem Paket Webhosting 8000 sind mehrere Domains zugeordnet.


    Habt Ihr vielleicht eine Idee, wo der Fehler bei mir liegen kann?


    Und vielleicht kann jemand noch einen Tipp geben, wie ich den Pfad für die auf Plesk angebotene Composer-Anwendung konfigurieren kann. So müsste ich nicht den Umweg über die extra heruntergeladene composer.phar Datei und SSH gehen.


    Besten Dank Vorab

  • p4rad0xus Du kannst nichts Anderes auswählen, als die beiden vorgegeben Einträge. Es gibt nur den Docroot oder Webspaceroot als Auswahl, ein Mittelding gibt es beim Webhosting nicht. Du benötigst anhand der gezeigten Ausgabe somit die Einstellung mit Webspaceroot.


    Falls es Dir darum geht, dass unterschiedliche Domains garantiert getrennt sind: Dafür reicht der open_basedir sowieso nicht. Solange Funktionen wie z.B. exec() u.ä. aktiv sind, kann ein Angreifer problemlos auf den ganzen Webspace zugreifen, wenn er über eine Sicherheitslücke in das System rein kommt. Diese Einstellung kann man zwar über den Support anpassen lassen, aber das mögen manche PHP-Anwendungen nicht so gern. Eine 100% Trennung erreicht man nur mit mehreren Webhosting Paketen oder einem eigenen (v)Server.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • p4rad0xus Du kannst nichts Anderes auswählen, als die beiden vorgegeben Einträge. Es gibt nur den Docroot oder Webspaceroot als Auswahl, ein Mittelding gibt es beim Webhosting nicht. Du benötigst anhand der gezeigten Ausgabe somit die Einstellung mit Webspaceroot.

    Um zumindest versehentliche zerstörerische Zugriffe des einen Projekts auf andere Projekte im selben Webhosting etwas zu erschweren, könnte man allenfalls noch versuchen, bei open_basedir den Webspaceroot anzugeben - was hier ja wohl sowieso notwendig ist - und dann gezielt open_basedir durch .user.ini-Dateien weiter einzuschränken.


    Das habe ich selbst noch nie so gemacht, die Idee kam mir aber angelegentlich einer ähnlichen Anfrage hier mal, sollte eigentlich laut PHP-Doku möglich sein. Man sollte also open_basedir in einer .user.ini weiter einschränken können, allerdings kann man so keinen Zugriff auf weitere Verzeichnisse erlauben.


    Eine wirklich sichere Trennung ist das allerdings nicht, wie KB19 ja bereits geschrieben hat.

  • KB19  tab danke für die Hinweise. Ich werde mir das mal anschauen.


    In den PHP-Einstellungen wird für den Webspaceroot folgende Info angegeben:

    Zitat

    {WEBSPACEROOT} für das Dokumentstammverzeichnis der primären Website des Abonnements.

    Wisst ihr eventuell, ob und wenn ja man eine bestimmte Domain als primäre Domain/Wenseite einstellen kann? Das könnte mein Problem lösen, auch wenn es dann bei den anderen Domains dann noch bestehen könnte.