Die folgende Anleitung beschreibt das Vorgehen, welches zur Installation des Symfony-Framework auf einer Synology-NAS notwendig ist.
Ausgangslage ist dabei eine DS918+.
Symfony wird dabei in einer virtuelen Ubuntu-Maschiene genutzt, welche innerhalb einer Qemu-VM läuft installiert.
In dieser Anleitung wird zunächst die Installation in einer virtuellen Maschiene beschrieben. Docker kommt dabei also nicht zum Einsatz. (Das habe ich trotz mehrere Versuche noch nicht hin bekommen… Ein entsprechendes Tutorial wird nachgereicht, sobald ich meinen Fehler gefunden habe.)
Basis für die Anleitung ist dabei eine Anleitung von tecadmin – diese ist jedoch nicht mehr ganz auf aktuellem Stand (PHP 5.6 etc.)
- Ausgangslage für das System ist ein cleanes System mit Ubuntu Server 18.04 LTS.
- Dabei wird der Benutzername synology-vm für das System verwendet.
- Als erstes sollte der Server abgesichert werden. Dies funktioniert bespilesweise über die Installation von fail2ban
- Installation von PHP über den Befehl
sudo apt-get install php
Dabei wird das zusätzliche Paket apache automatisch mitinstalliert. Jetzt solltet ihr unter der IP der VM (herauszufinden überip addr show
die Wilkommensseite von Apache sehen. - Nun sind noch zwei kleine PHP-Erweiterungen notwendig, die mit den folgenden Befehlen installiert werden können:
sudo apt-get install php-xml
sudo apt-get install php-zip
- Euer Benutzer „synology-vm“ benötigt Schreibrechte für den Ordner /var/www/html. Dies geht über folgende Befehle:
sudo groupadd www
sudo adduser BENUTZERNAME www
sudo chgrp www /var/www/html
sudo chmod g+w /var/www/html - Überprüfen könnt ihr das ganze, indem ihr beispielsweise in Filezilla eine Datei mit folgenden Inhalt in das html-Verzeichniss hochlädt:
<?php
phpinfo();
?> - Installation von mariaDB
sudo apt-get install mariadb-server
- Festlegen eines Passworts für die mariaDB-Installation:
- Öffnen der Konfiguration:
sudo mysql -u root -p
- Dort nacheinander folgende Befehle eingeben (‚geheim‘ muss durch ein sicheres Passwort ersetzt werden):
grant all on *.* to root@localhost identified by 'geheim' with grant option;
flush privileges;
quit; - Nun könnt ihr mit dem Benutzer root und dem Passwort „geheim“ bespielsweise über sequelPro auf die DB zugreifen.
- Öffnen der Konfiguration:
- Damit ihr die Datenbank auch über php nutzen könnt, müsst ihr das folgende Paket installieren:
php-mysql
- Installation von Composer:
sudo apt install composer
- Wechsel in das Verzeichnis des Webserver:
cd /var/www/html
- An dieser Stelle stellt sich die Frage, ob ihr ein neues Projekt anlegen wollt, oder ob ihr an einem bestehenden Projekt (z.B. aus GitHub weiter arbeiten wollt.
- Neues Projekt
- Anlegen eines neuen Projekts mit
composer create-project symfony/skeleton myproj
- Anlegen eines neuen Projekts mit
- Weiterarbeiten
git clone ...
composer Install
sudo apt install php-mysql
php bin/console doctrine:database:create
php bin/console doctrine:schema:update --force
- Neues Projekt
- Nun kommt es darauf an, ob die Installation als Entwicklungsumgebung, oder aber als Live-System laufen soll:
- Als Entwicklungsumgebung
- Die Installation des Symfony-eigenen Webserver wird mit folgenden Befehl gestartet:
composer require server --dev
- Um symfony zu starten (und zwar so, dass es auch von außerhalb der VM erreichbar ist) muss nun der folgende Befehl eingegeben werden:
php bin/console server:start 0.0.0.0:8000
Damit habt ihr soweit eure Entwicklungsumgebung aufgesetzt. - Zum Stoppen einfach folgendes eingeben:
php bin/console server:stop
- Die Installation des Symfony-eigenen Webserver wird mit folgenden Befehl gestartet:
- Als Live-Umgebung: Wollt ihr die Installation auch live im Internet freigeben, müsst ihr zudem die folgenden Schritte durchführen:
- Prüfen, ob alle Requirements erfüllt sind:
cd my-project/
php bin/symfony_requirements - Anpassen der Virtual Hosts
- aktivieren des Virtual Host
- Ermöglichen der URL-Umschreibung:
sudo a2enmod proxy_fcgi rewrite headers
- Anpassen der Nutzerrechte für das var/ Verzeichnis:
sudo chown -R www-data:www-data var/
- ggf. einrichten einer Port-Weiterleitung sowie DynDNS
- Prüfen, ob alle Requirements erfüllt sind:
- Als Entwicklungsumgebung
- Wenn ihr wollt, könnt ihr natürlich natürlich auch beide Umgebungen parallel nutzen – ihr habt in dem Fall beim aufruf der lokalen IP die Symfony-Eigene Fehlerausgabe
P.S.: Diese Anleitung ist evtl. noch nicht ganz korrekt. Die Nutzungsrechte zur Live-Freigabe reißen evtl. eine Sicherheitslücke auf? –> Siehe entsprechende Dokumentation