Deploment von der Neos Seite

Hallo,
Ich habe auf einem Entwicklungsserver eine Seite mit Neos gebastelt. Die läuft auch einwandfrei.
Jetzt soll sie auf den Liveserver, dieser hat aber weder composer noch git.

Also habe ich alle files in eine tar gepackt und rübergezogen, Datenbankinhalt ebenfalls eingespielt. So wie ich es bei anderen cms auch immer gemacht habe. Settings.yaml auf die neuen Datenbankinfos geändert.

Jetzt läuft die Seite aber nicht, weder Frontend noch Backend. Es kommt nur " Forbidden - You don’t have permission to access this resource." An den Zugriffsrechten liegt es nicht. Als ich dann nachgeschaut habe, habe ich gemerkt es gibt im Hauptverzeichnis weder Symlink, htaccess noch index Datei. Sowohl auf dev als auch live, aber auf der dev läuft das Ganze. Und jetzt bin ich irritiert.

Geht Deployment auf diese Art gar nicht? Muss ich noch einen Symlink oder so anlegen? Habe ich etwas vergessen?

Cache leeren und ./flow resource:publish habe ich probiert. Kein Erfolg. git / composer installieren ist nicht möglich.

Ich hab das Gefühl, ich hab was ganz Dummes vergessen :sweat_smile: Wäre für Hinweise dankbar

Hallo Kathrin,

grundsätzlich würde ich nicht empfehlen bei Neos/Flow ein Deployment auf einem solchen Weg durchzuführen, vor allem weil Neos einige Symlinks setzt und auch einige sonstige Tasks beim ausführen von composer install gesetzt werden. Beim manuellen deployen, wie du es machst, gibt es also gleich mehrere Probleme, die auftreten können. Gerade, wenn kein composer verfügbar ist.

Wir haben auf unseren Live-Systemen teilweise auch kein composer etc. im Einsatz. Dafür haben wir dann aber ein Deployment mit Surf aufgesetzt.
Surf baut dir lokal aus deinem aktuellen Stand das laufende Neos zusammen (inklusive composer install usw.) und überträgt es dann per rsync/ssh auf den Live-Server.
Zusätzlich hast du da noch den Vorteil, eines rudimentären Release-Systems. Es bleiben also vorherige Deployments/Resources und Configuration-Dateien vorhanden und werden nur verlinkt.

Surf kann man auch einfach lokal installieren und dann vom lokalen PC das Deployment starten (theoretisch auch zu verschiedenen Instanzen wie DEV/Staging/LIVE).
Wenn du eine CI/CD hast, gehts natürlich auch von dort.

Vielleicht ist das ja auch spannend für dich.
Surf-Repo: GitHub - TYPO3/Surf: Easy and powerful PHP deployment tool
(Alte) Vorlage: How to deploy Neos websites — Surf main documentation

Alternativ dazu habe ich auch schon mehrere Kollegen aus der Community mit Deployer arbeiten gesehen. Damit hab ich persönlich aber keine Erfahrungen bisher.

2 Likes

Hier noch ein auszug aus unserem Deployment-Script, was wir hier und da noch im Einsatz haben. Bin mir nicht sicher, ob es so für deinen Anwendungsfall funktioniert. Aber zumindestens schon mal ein Anhaltspunkt für dich, solltest du Surf nutzen wollen :slight_smile:

$domain = 'server-domain.de';
$sshUser = '<ssh-user>';
$gitRepoUrl = '<repo-url>';


$node = new \TYPO3\Surf\Domain\Model\Node('Neos');
$node
    ->setHostname($domain)
    ->setOption('username', $sshUser);

$application = new \TYPO3\Surf\Application\Neos\Neos($domain);
$application
    ->setOption('keepReleases', 0)
    ->setOption('composerCommandPath', 'composer')
    ->setOption('repositoryUrl', $gitRepoUrl)
    ->setOption('branch', 'master')
    ->setOption('updateMethod', null)
    ->setOption('baseUrl', 'https://' . $domain)
    ->setOption(
        'flushCacheList',
        [
            'Neos_Fusion_Content',
            'Neos_Neos_Fusion'
        ]
    )
    ->setDeploymentPath($webPath)
    ->addNode($node);

$deployment
    ->addApplication($application)
    ->onInitialize(
        function () use ($deployment, $application, $phpPath) {
            $deployment->getWorkflow()
                ->defineTask('kd:clearTemporary', \TYPO3\Surf\Task\ShellTask::class,
                             ['command' => 'rm -r {releasePath}/Data/Temporary && FLOW_CONTEXT=Production {releasePath}/flow flow:cache:flush']
                )->beforeStage('migrate', 'kd:clearTemporary')
        }
    );

Ansonsten hat @jonnitto auch mal ein bisschen Vorarbeit für Deployments mit Deployer geleistet. Vielleicht auch spannend. Wie gesagt, damit hab ich noch keine praktischen Erfahrungen gemacht, weil wir auch nach und nach vom klassischen Hosting weg und hin zu Cloud-Hosting wechseln.

2 Likes

Wir nutzen deployer bei den Projekten die auf klassischen linux Servern laufen. Kann ich empfehlen und das default recipe flow-framework das bei deployer mit dabei ist macht schon fast alles was man machen muss.

Wir integrieren zusätzlich dann zusätzlich einen lokalen build des frontends, und ggf notwendige cache-flush commands.

Vielen dank für eure Antworten :slight_smile:

Es ist schade, dass etwas, was bei anderen CMS so einfach ist hier so umständlich gemacht werden muss und auch noch mit Fremdsoftware :frowning:

Soweit ich gesehen habe, erwarten sowohl Deployer als auch Surf von Server A SSH Zugang zu Server B? Das wird bei mir nicht möglich sein.

Es ist eigentlich inzwischen eher üblich automatisiert zu deployen. Es lohnt sich sich mit den dazugehörigen Werkzeugen auseinanderzusetzen. Gerade Tools wie deployer haben den großen Vorteil das damit auch anderes Systeme (bei uns typo3 und shopware) deployed werden können.

Zusammen mit automatisierten tests hat das dafür gesorgt das Deployments für uns erfrischend langweilig geworden sind und wir inzwischen diskutieren ob freitags regulär deployed werden darf.

1 Like

Grundsätzlich MUSST du keine Deployment-Tools fürs Deployment verwenden. Es funktioniert auch das manuelle Deployment, indem du Dateien auf den Server lädst (oder per Git auscheckst) und dort ein paar Commands ausführst, wodurch dann z.B. Symlinks/Autoload-Dateien etc angelegt werden.
Deployment-Tools erleichtern die Arbeit nur ungemein und stellen auch sicher, dass sich keine Fehler, wie beim manuellen Deployment einschleichen. Daher ganz klare Empfehlung für ein Deployment-Tool.

Ohne einen SSH-Zugang zu dem Live-Server (egal von wo) ist es leider auch ohne Deployer oder Surf wirklich schwierig Neos zum laufen zu bekommen, weil dann doch mal ein composer install oder der ein oder andere Flow-Command zum Cache löschen oder bilden der richtigen Symlinks ausgeführt werden muss.

SSH-Zugang (oder andere Möglichkeiten einer Shell auf dem Hostsystem) ist meiner Anschicht nach ein MUSS für Neos-Hostings.

Leider bin ich auf manuelles Deployment angewiesen, da ich Deployer und ähnliches nicht verwenden darf / kann. SSH Zugang an sich ist vorhanden, das ist nicht das Problem.
Ich hatte eure Antworten so interpretiert, als wäre ich zwangsweise auf composer oder en Deploymenttool angewiesen. Das habe ich missverstanden, tut mir leid. Das wäre ziemlich umständlich geworden.

Hab es aber wie es scheint jetzt per manuellem Deployment ans Laufen gekriegt.
Vielen Dank @ndroste @martoro für eure Antworten :grinning: