Symfony Cloud ist Symfony’s neuste „Platform as a Service“ (PaaS) Dienstleistung. Wie so viele geht nun auch Symfony mit einem eigenen Hosting an den Start, welches einfach per CLI gesteuert werden kann. Schauen wir doch mal rein…
Installation
Erstmal installieren wir die
curl -sS https://get.symfony.com/cli/installer | bash
mv /home/micha/.symfony/bin/symfony /usr/local/bin/symfony
Mit dem mv Befehl habt Ihr den Befehl symfony direkt global verfügbar.
The Symfony CLI v4.4.3 was installed successfully!
Wenn Ihr nun symfony in die Konsole tackert kommt folgendes:
Login
Für das erste nutzen müsste Ihr aktuell glaube ich noch im Early Access Program sein – Ihr könnt es natürlich mit eurem Symfony Connect Account probieren, aber keine Garantie das es funktioniert.
symfony login
Nun müsst Ihr euren Namen wählen, einen SSH Key setzen oder bereits bekannten Key nutzen und dann gehts auch schon los.
Projekt erstellen
Für das erste Projekt nehmen wir einfach mal eine demo.
symfony new --demo /var/www/symfonycloud/demo1
Error: The requested PHP extension ext-pdo_sqlite * is missing from your system. Install or enable PHP’s pdo_sqlite extension.
Euch fehlt hier einfach nur die sqlite extension (sudo apt-get install php7.2-sqlite3) – danach sollte es funktionieren.
Danach gehen wir in das Projekt Docroot und konfigurieren alles:
cd /var/www/symfonycloud/demo1
symfony project:init
Das ganze erzeugt dann 4 Dateien:
- /var/www/symfonycloud/demo1/.symfony.cloud.yaml
- /var/www/symfonycloud/demo1/.symfony/services.yaml
- /var/www/symfonycloud/demo1/.symfony/routes.yaml
- /var/www/symfonycloud/demo1/php.ini
Ich habe hier zu Testzwecken erstmal nur die PHP Version von 7.1 auf 7.2 geändert und zwar in der .symfony.cloud.yaml Datei. Danach müsste Ihr alle Dateien adden und commiten
git add .symfony.cloud.yaml .symfony/services.yaml .symfony/routes.yaml php.ini
git commit -m "Add SymfonyCloud configuration"
Zahlungsdaten hinterlegen
Ich musste erst nochmal die E-Mail prüfen um sicher zu gehen, dass ich keine Spam/Scam Mail erhalten haben und mir nun jemand über die CLI meine KK Daten abzwackt. Aber ja, die müsst Ihr leider hinterlegen, auch für den ersten Monat Trial. Nervig, denn auch wenn man erstmal nur testen möchte, hat direkt Stripe deine Zahlungsdaten… Aber was man nicht alles opfert für einen Blogartikel 😉
Beliebter Fehler: Deployment failed: Command failed
Ihr habt vermutlich vergessen eure config Dateien zu adden und zu commiten.
Deployen
Jetzt nur noch alles konfigurierte deployen und euer Projekt sollte stehen:
symfony deploy
Error
Leider bricht bei mir aktuell die Installation ab:
error @symfony/webpack-encore@0.26.0: The engine "node" is incompatible with this module. Expected version ">=8.0.0". Got "6.16.0"
Feedback -> warte aktuell noch auf Feedback von Symfony. Keep you updated.
EDIT 17.04.2019:
Besten Dank an dden schnellen Support von Symfony, die Übergangslösung hier ist in der .symfony..cloud.yaml den hook anzupassen:
hooks:
build: |
set -x -e
curl -s https://get.symfony.com/cloud/configurator | (>&2 bash)
unset NPM_CONFIG_PREFIX
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | dash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm current
# adapt the following line to install the version you want
nvm install 9.5.0
(>&2 symfony-build)
Sauber! Nun läuft das deployment durch und wir haben ein Frontend und Backend unter https://master-7rqtwti-x6honzsdsseos.eu.s5y.io/de (vermutlich beim lesen bereits wieder offline 😉 ) zur Verfügung.
Lokal entwickeln
Natürlich wollt Ihr auch vorab euren Code testen und lokal entwickeln. Das geht ebenfalls einfach mit dem symfony Befehl
symfony serve
Und schon läuft wie üblich alles unter http://127.0.0.1:8000
Fazit
Schickes Tool für kleinere Projekte oder Mockups die man Kunden schnell zur Verfügung stellen möchte. Ohne großes aufsetzen von Servern kommt man hier schnell online. Ob es das richtige für echtes Hosting ist wird die Zeit zeigen.
Edit 16.05.2019
Symfony hat inzwischen das Problem gefixt – hier der Changelog zu neusten Version:
Update notes:
v4.5.4:
- Fix panic in relationships decoding when database has no credentials
- Fix panic in `self:cleanup` when no previous version is present
- Fix reading SSH passphrase when redirecting stdin
- Switch MySQL/MariaDB charset from utf8 to utf8mb4
- Add support for running `symfony phpdbg`
- Add support for Kafka services (for SymfonyCloud and Docker)
- Make variable project level by default for `var:delete` (and switched from `project-level` to `env-level` flag)
v4.5.3:
- Fix a panic in reloading proxy configuration
- Make really hard to create projects in non interactive environments
- Fix a race condition when running PHP commands
- Clean up `var/` sub-directories when empty
- Fix potential panic in relationships decoding
v4.5.2:
- Fix the auto-updater
v4.5.1:
- Allow to store `composer` under the PHP directory (even if the directory is not in `$PATH`)
v4.5.0:
- Add support for phpenv / Travis
v4.4.5:
- Fix broken Symfony WDT
- Make variable project level by default (and switched from `project-level` to `env-level` flag in `var:set`)
v4.4.4:
- Support MYSQL_ROOT_PASSWORD for Docker integration
- Fix Elasticsearch support for Docker integration
- Fix PKCS1 private key validation when adding certificate
- Fix linked environment is not used if branch has a remote upstream
- Fix panic when unable to parse a non-standard PHP version
- Fix panic when running `env:create` with no existing Cloud envs
- Fix `history last` does not watch activity
- Add a note about how to control PHP versions in `local:php:list`
Hello mate !
Discoverd your post and helped me a lot fixing the same issues.
Trying to make SymfonyCloud with something else than the demo and I have trouble making the database connection working.
Did you happen to configure a correct db connection ?
PS : I actually don’t speak germain, google translate helped me find out the solution for the „error @symfony/webpack-encore@0.26.0: The engine „node“ is incompatible with this module. Expected version „>=8.0.0“. Got „6.16.0“ issue