While I was planning to update my front-end skills I was contacted to review my experience using Drupal. The truth is that I did a template a long time ago and I needed to refresh how it works. This blog post is the result, I hope it helps!
- Guide to install Drupal locally – Dev environment https://www.drupal.org/docs/official_docs/en/_local_development_guide.html Requires: Docker / DDEV – an open source tool for launching local web development environments in minutes. It supports PHP, Node.js, and Python (experimental). https://ddev.readthedocs.io/en/latest/
- Other: Linux development environments https://www.drupal.org/docs/develop/local-server-setup/linux-development-environments Note: They suggest using docker instead.
- Options https://www.drupal.org/docs/develop/local-server-setup/docker-development-environments/docker-solutions-overview
DDEV doc Install https://ddev.com/get-started/
- Docker Community Edition.
- DDEV install.
You can follow these instructions: https://ddev.readthedocs.io/en/latest/
On my local computer, I had docker podman already installed, so I skipped the docker installation to install DDEV directly. Install this script
Using the command
curl -L https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh | bash
[XXX]$ curl -L https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 7223 100 7223 0 0 33679 0 --:--:-- --:--:-- --:--:-- 33752 ddev_linux-amd64.v1.21.6.tar.gz: OK Download verified. Ready to place ddev and mkcert in your /usr/local/bin. Running "sudo mv -f ddev mkcert macos_ddev_nfs_setup.sh /usr/local/bin/" Please enter your password if prompted. Running mkcert -install, which may request your sudo password.'. The local CA is already installed in the system trust store! ? The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! ? ddev is now installed. Run "ddev" and "ddev --version" to verify your installation and see usage.
Config local environment
# Replace my-site-name! export SITE_NAME=my-site-name mkdir $SITE_NAME cd $SITE_NAME ddev config --docroot web --project-name $SITE_NAME --project-type drupal10 --create-docroot
Note: I chose tico-libros as my site.
This failed, probably because I was using Podman. Message:
[XXX@XXX-Alienware-17-R4 tico-libros]$ ddev config --docroot web --project-name $SITE_NAME --project-type drupal10 --create-docroot FATA Unable to get docker context: unable to run 'docker context inspect' - please make sure docker client is in path and up-to-date: exit status 125
I removed podman
apt remove podman
I installed docker following these instructions: https://docs.docker.com/engine/install/ubuntu/
Then try to run the DDEV install and config process again.
Install, got this message:
[XXX@XXX-Alienware-17-R4 Downloads]$ curl -L https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 7223 100 7223 0 0 14100 0 --:--:-- --:--:-- --:--:-- 14107 ddev_linux-amd64.v1.21.6.tar.gz: OK Download verified. Ready to place ddev and mkcert in your /usr/local/bin. Running "sudo mv -f ddev mkcert macos_ddev_nfs_setup.sh /usr/local/bin/" Please enter your password if prompted. [sudo] password for XXX: Running mkcert -install, which may request your sudo password.'. The local CA is already installed in the system trust store! ? The local CA is already installed in the Firefox and/or Chrome/Chromium trust store! ? ddev is now installed. Run "ddev" and "ddev --version" to verify your installation and see usage.
Conffig, again, I’m calling my testing side “tico-libros”
export SITE_NAME=**tico-libros** mkdir $SITE_NAME cd $SITE_NAME ddev config --docroot web --project-name $SITE_NAME --project-type drupal10 --create-docroot
Got this message
[XXX@XXX-Alienware-17-R4 tico-libros]$ ddev config --docroot web --project-name $SITE_NAME --project-type drupal10 --create-docroot Could not connect to a docker provider. Please start or install a docker provider. For install help go to: <https://ddev.readthedocs.io/en/latest/users/install/>
docker start didn’t work, This requires some options and a container.
Check this one instead https://ddev.readthedocs.io/en/latest/users/install/ddev-installation/ to install DDEV according to current documentation. Same result.
It requires an image, so I used this command to check the existing images on my computer
docker ps -a
I guess I should pull the Ubuntu image, and then run it?
docker pull ubuntu
[XXX@XXX-Alienware-17-R4 tico-libros]$ sudo docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu dbf6a9befcde: Pull complete Digest: sha256:dfd64a3b4296d8c9b62aa3309984f8620b98d87e47492599ee20739e8eb54fbf Status: Downloaded newer image for ubuntu:latest docker.io/library/ubuntu:latest
Now let’s try to run Ubuntu
sudo docker run ubuntu:latest
Okay! seems to be there, now I need to know how to use it to config DDEV
DDEV doc indicates that we need to include our user in the docker group, also that we shouldn’t use sudo to run docker or DDEV (Except for the hostname command in DDEV)
sudo usermod -aG docker $USER
Re-star user group setup
Check if everything works without sudo
docker run hello-world
Automatically start docker on startup
sudo systemctl enable docker.service sudo systemctl enable containerd.service
To disable that
sudo systemctl disable docker.service sudo systemctl disable containerd.service
We can have some issues with disk space and dockers logs, so we need to setup logging
How to sample
docker run \\ --log-driver json-file --log-opt max-size=10m \\ alpine echo hello world
Finally, this worked
ddev config so I gave Drupal’s instructions a try again.
ddev config --docroot web --project-name $SITE_NAME --project-type drupal10 --create-docroot
And it worked
Creating a new ddev project config in the current directory (/repos/tico-libros/tico-libros) Once completed, your configuration will be written to /repos/tico-libros/tico-libros/.ddev/config.yaml Created docroot at /repos/tico-libros/tico-libros/web You have specified a project type of drupal10 but no project of that type is found in /repos/tico-libros/tico-libros/web stable: Pulling from library/busybox 2123501b93d4: Pull complete Digest: sha256:05a79c7279f71f86a2a0d05eb72fcb56ea36139150f0a75cd87e80a4272e4e39 Status: Downloaded newer image for busybox:stable docker.io/library/busybox:stable No settings.php file exists, creating one Configuration complete. You may now run 'ddev start'.
Then ddev start / Output
Network ddev_default created It looks like you have a new ddev release. May we send anonymous ddev usage statistics and errors? To know what we will see please take a look at <https://ddev.readthedocs.io/en/stable/users/details/opting-in> Permission to beam up? [Y/n] (yes):
I choose N
Then, it started downloading everything… but got into a new issue
Failed to start tico-libros: Unable to listen on required ports, port 80 is already in use, Troubleshooting suggestions at <https://ddev.readthedocs.io/en/stable/users/basics/troubleshooting/#unable-listen>
We need to stop any docker containers running right now and restart
ddev poweroff && docker rm -f $(docker ps -aq)
Container ddev-tico-libros-dba Removed Container ddev-tico-libros-db Removed Container ddev-tico-libros-web Removed Network ddev-tico-libros_default Removed Project tico-libros has been stopped. The ddev-ssh-agent container has been removed. When you start it again you will have to use 'ddev auth ssh' to provide key authentication again. bc75ac3b7642 bd85331eddad 05da50347b22
I also try to check if it was a port conflict (due to the error message) using this information: https://ddev.readthedocs.io/en/stable/users/usage/troubleshooting/#web-server-ports-already-occupied
sudo gedit .ddev/config.yaml
Adjusting port 80 to 8080, and 43 to 8443
After stopping docker it required to authenticate again by running
ddev auth ssh
Network ddev_default created Container ddev-ssh-agent Started ssh-agent container is running: If you want to add authentication to the ssh-agent container, run 'ddev auth ssh' to enable your keys. Enter passphrase for bitbucket: Identity added: bitbucket (firstname.lastname@example.org) Identity added: github (email@example.com)
[XXX@XXX-Alienware-17-R4 tico-libros]$ ddev start Starting tico-libros... Network ddev-tico-libros_default Created Container ddev-tico-libros-dba Started Container ddev-tico-libros-web Started Container ddev-tico-libros-db Started Container ddev-router Started
Got “403 Forbidden”, quick research shows that it could be that the
ROOT is not mounted or the project is mounted but there is no
index.html in the docroot (or it is misconfigured).
According to the documentation is an expected behavior when is empty https://ddev.readthedocs.io/en/latest/users/usage/faq/#performance-troubleshooting
Tip! Want to check the ddev root folder?
ddev ssh you sort of “connect” to that server file system, you can logout with
After adding a
index.php to the
/web folder it worked.
To execute the command, we should always use composer.
ddev composer create "drupal/recommended-project"
ddev composer require drush/drush
Use dush to install Drupal, adjust the password
ddev drush site:install --account-name=admin --account-pass=my-password
Note: During the installation, you will find warnings letting you know that the tables are going to be removed, and so on. This shouldn’t be a concern if you are creating a Drupal site for the first time.
Launch the new Drupal and login
Want to check the URL of your site?
Clearly, this installation requires hardening.
- ddev basic commands https://ddev.readthedocs.io/en/latest/users/usage/cli/
- Drupal doc: https://www.drupal.org/docs/user_guide/en/index.html
- Community Chat Drupal: https://www.drupal.org/community/contributor-guide/reference-information/talk