In this post we will share our experience in installing a Drupal 8 application on an Amazon EC2 server with latest Ubuntu 18.04 LTS.
Installing Drupal with composer greatly simplify system maintenance and further update.
AWS image
First you will need to create EC2 instance with proper AMI from Amazon Web Service. You can find the AMI from the locator.
We will not cover in detail this part, as we assume this is already covered by many other blogs and tutorials.
We pick latest 18.04 LTS version of Ubuntu to comply with requirements of Drupal 8 with PHP 7.2.
Composer
Once your server is running, the next step is to install composer.
Once again, we will not go too much into details as composer installation is also widely covered.
In our case we followed similar procedure as the one described here.
Drupal
For actual installatin of Drupal with composer, there is a guide at drupal.org with 3 options. We picked the option A.
The repository is a composer template for Drupal projects with pretty good usage guide. The latest version will install Drupal 8.6.1.
We run the command:
git clone https://github.com/drupal-composer/drupal-project.git <MyAppName>
(note: the code will be copied within the folder "MyAppName" within your current folder location. For instance if you are in /var/www, the application will be in /var/www/MyAppName)
At this point we edited the composer.json file to match our desired folder configuration. You need to edit manually the installer path here before installing the application or if you prefer, keep the default paths.
"installer-paths": {
"web/core": ["type:drupal-core"],
"web/libraries/{$name}": ["type:drupal-library"],
"web/modules/contrib/{$name}": ["type:drupal-module"],
"web/profiles/contrib/{$name}": ["type:drupal-profile"],
"web/themes/contrib/{$name}": ["type:drupal-theme"],
"drush/Commands/{$name}": ["type:drupal-drush"]
},
To edit, run command:
Sudo nano MyAppName/composer.json
and edit "installer-paths". In our case we changed to:
Once your have the desired folder configuration, you can run actual installation command:
composer -vvv install
(note: -vvv option is optional)
This will install Drupal site.
Custom application
One of the purpose of using composer installation is to merge other composer files and install custom plugins and applications.
To be able to merge composer files, you need to install the composer-merge-plugin first with command:
composer require wikimedia/composer-merge-plugin
then run:
composer update --lock
You can now add additional plugins with their specific composer installer. In our case, we install our own application EK Management tools suite with the following command:
composer require arreasystem/ek:"dev-8.x-dev"
This will install custom application.
You can merge composer.json paths as "extra" option in main composer.json:
Sudo nano MyAppName/composer.json
For instance add the custom plugins paths:
"extra": {
"merge-plugin": {
"include": [
"modules/contrib/ek/ek_admin/composer.json"
],
"recurse": true,
"replace": false,
"merge-extra": false
},
And run:
composer update --lock
This will for instance install following libraries:
You may encounter error with composer when updating with an out of memory error. This will happen with low specification EC2 instances. To solve this problem, add swap memory on Ubuntu server.
Create swap file:
sudo dd if=/dev/zero of=/swapfile bs=2M count=2048
(this will create a 4M memory swap);
Enable file:
sudo chmod 600 /swapfile
Allocate:
sudo mkswap /swapfile
Start:
sudo swapon /swapfile
With this installation, you will just have to run
composer update
to update your installation version. This comes also with Drush and Drupal Console installed. Don't forget to run update.php after core update if necessary.
We hope this short post has been useful. Feel free to add comment or questions.
Add new comment