From 826bc6808f4c0e2d42afa518f2ae49d33b823c30 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Mon, 9 Mar 2020 01:58:45 +0000 Subject: [PATCH] Update Symfony server post --- ...unning-drupal-with-symfony-local-server.md | 85 ++++++++++++++---- .../terminal.png | Bin 2 files changed, 66 insertions(+), 19 deletions(-) rename source/images/blog/{drupal-symfony-server => running-drupal-with-symfony-local-server}/terminal.png (100%) diff --git a/source/_posts/running-drupal-with-symfony-local-server.md b/source/_posts/running-drupal-with-symfony-local-server.md index 256a7c02..a44fe1d7 100644 --- a/source/_posts/running-drupal-with-symfony-local-server.md +++ b/source/_posts/running-drupal-with-symfony-local-server.md @@ -1,5 +1,6 @@ --- title: Running Drupal 8.8 with the Symfony Local Server +excerpt: Running Drupal 8.8 with the Symfony Local Server date: ~ tags: - drupal @@ -8,12 +9,12 @@ tags: draft: true --- -https://symfony.com/doc/current/setup/symfony_server.html - -![](/iimages/blog/drupal-symfony-server/terminal.png) +![A screenshot of a terminal window running a Drupal project with the Symfony local server](/images/blog/running-drupal-with-symfony-local-server/terminal.png) ## Installation +https://symfony.com/doc/current/setup/symfony_server.html + The Symfony server is bundled as part of the `symfony` binary that is available to download from . @@ -23,21 +24,54 @@ To install it, run this command: curl -sS https://get.symfony.com/cli/installer | bash ``` -It works with any project, not just Symfony. +Even though it’s by Symfony, the local webserver works with any type of +project - including Drupal 8 and Drupal 7. + +## Getting started + +```bash +# Alias for server:start, starts the server +symfony serve + +# Run the server in daemon mode (in the background) +symfony serve -d + +# Display the status of the server +symfony server:status + +# Stop the server +symfony server:stop +``` + +`web` and `docroot` directories are automatically used as the document root for +the server, so files are served from there if you run the `serve` command within +the project’s root directory. ## Different PHP Versions One of the most useful features of the Symfony server is that it [supports multiple versions of PHP](https://symfony.com/doc/current/setup/symfony_server.html#different-php-settings-per-project) -if you have them installed (e.g. via Homebrew on macOS), and a different version -can be selected per directory. +if you have them installed, and a different version can be selected per +directory. -This is done simply by adding a `.php-version` file to the root of the project -that contains the PHP version to use - e.g. `7.3`. +This is done by adding a `.php-version` file to the root of the project that +contains the PHP version to use. For example: + +```bash +echo "7.3" > .php-version +``` Next time the server is started, this file will be read and the correct version of PHP will be used. +If you’re using macOS and want to install another version of PHP, you can do it +using Homebrew: + +```bash +# Install PHP 7.3 +brew install php@7.3 +``` + [Further PHP customisations can be made per project](https://symfony.com/doc/current/setup/symfony_server.html#overriding-php-config-options-per-project) by adding a `php.ini` file. @@ -46,16 +80,17 @@ by adding a `php.ini` file. The Symfony server allows for serving sites via HTTPS by installing its own local certificate authority. -To install it, run this command: +If it’s not installed automatically, run this command to install it: ``` symfony server:ca:install ``` -Any HTTP traffic will be automatically redirected to HTTPS. +Now any site will be served via HTTPS by default, and any HTTP requests will be +automatically redirected to HTTPS. -If you then need to run a site with just HTTP, add the `--no-tls` option to the -`server:start` command. +If you need to run a site with just HTTP, add the `--no-tls` option to the +`serve` command. ## Adding Databases with Docker @@ -86,7 +121,7 @@ automatically creates environment variables prefixed with `DATABASE_`. A list of all the environment variables can be seen by running `symfony var:export` (add `| tr " " "\n"` if you want to view each one on a new -line): +line, and `| sort` if you want to list them alphabetically): ```dotenv DATABASE_DATABASE=main @@ -110,8 +145,6 @@ Drupal to connect to the database service. ```php // web/sites/default/settings.php -// ... - if ($_SERVER['SYMFONY_DOCKER_ENV']) { $databases['default']['default'] = [ 'driver' => $_SERVER['DATABASE_DRIVER'], @@ -129,14 +162,26 @@ if ($_SERVER['SYMFONY_DOCKER_ENV']) { ## Installing Drupal -`../vendor/bin/drush site-install`: +Drush is added as a dependency via Composer. + +```bash +../vendor/bin/drush site-install +``` + +However, this will cause an error like this because Drupal cannot connect to the +database. > Error: Class 'Drush\Sql\Sql' not found in Drush\Sql\SqlBase::getInstance() -`symfony php ../vendor/bin/drush st` +To fix this, ensure that the command is prefixed with `symfony php`. This will +ensure that the correct PHP version and configuration is used, and that the +appropriate environment variables are available. -This will ensure that the correct PHP version and configuration is used, and -that the appropriate environment variables are available. +```bash +symfony php ../vendor/bin/drush site-install +``` + +This also applies to all other Drush commands. ## Custom Domain Names @@ -144,6 +189,8 @@ Good for multisites. https://symfony.com/doc/current/setup/symfony_server.html#local-domain-names +TODO: add proxy image + ``` cp web/sites/default web/sites/umami ``` diff --git a/source/images/blog/drupal-symfony-server/terminal.png b/source/images/blog/running-drupal-with-symfony-local-server/terminal.png similarity index 100% rename from source/images/blog/drupal-symfony-server/terminal.png rename to source/images/blog/running-drupal-with-symfony-local-server/terminal.png