Drupal adalah salah satu platform CMS open source yang populer di seluruh dunia. Drupal ditulis dalam PHP dan dapat digunakan untuk membangun berbagai jenis situs web mulai dari blog pribadi skala kecil hingga situs besar untuk skala perusahaan dan pemerintahan.

Dalam tutorial ini, kami akan menunjukkan kepada Anda bagaimana menginstal Drupal 8.6 pada mesin Ubuntu 18.04. Ada beberapa cara untuk menginstal Drupal. Tutorial ini mencakup langkah-langkah yang diperlukan untuk menginstal Drupal 8.6 menggunakan template composer untuk proyek Drupal yang disebut drupal-project.

Kami akan menggunakan Nginx sebagai web server, PHP 7.2, dan MySQL / MariaDB sebagai server basis data.

Prasyarat

Pastikan Anda telah memenuhi prasyarat berikut sebelum melanjutkan dengan tutorial ini:

  • Anda memiliki nama domain yang menunjuk ke IP server publik. Kami akan menggunakan contoh domain example.com
  • Anda telah menginstal Nginx dengan mengikuti instruksi ini.
  • Anda memiliki sertifikat SSL yang diinstal untuk domain Anda. Anda dapat menginstal sertifikat SSL gratis dari Let’s Encrypt dengan mengikuti instruksi ini.

Sebelum memulai

Perbarui indeks paket dan paket sistem ke versi terbaru:

sudo apt update && sudo apt upgrade

1. Buat Database MySQL

Jika Anda sudah menginstal MySQL atau MariaDB di server, Anda dapat melewati langkah instalasi ini, jika masih belum, Anda dapat menginstal paket server MySQL 5.7 dari repositori default Ubuntu dengan mengetik:

sudo apt install mysql-server

Untuk instalasi MySQL baru, disarankan untuk menjalankan perintah mysql_secure_installation untuk meningkatkan keamanan MySQL server.

Sekarang kita perlu login ke shell MySQL untuk membuat database baru, akun pengguna dan memberi pengguna izin akses yang sesuai.

Untuk masuk ke shell MySQL ketik perintah berikut dan masukkan kata sandi ketika diminta:

mysql -u root -p

Sebagai contoh kita akan membuat database bernama drupal, pengguna bernama userdrupal dan untuk memberikan izin yang diperlukan kepada pengguna menjalankan perintah berikut:

CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal.* TO 'userdrupal'@'localhost' IDENTIFIED BY 'ganti-dengan-password-anda';

2. Instal PHP

PHP 7.2 yang merupakan versi PHP default di Ubuntu 18.04 yang sepenuhnya didukung dan direkomendasikan untuk Drupal 8.6. Karena kita akan menggunakan Nginx sebagai web server, kita juga akan menginstal PHP-FPM.

Untuk menginstal semua modul PHP yang diperlukan, jalankan perintah berikut:

sudo apt install php7.2-cli php7.2-fpm php7.2-mysql php7.2-json php7.2-opcache php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl

Layanan PHP-FPM akan secara otomatis dimulai setelah proses instalasi selesai, Anda dapat memverifikasinya dengan mencetak status layanan PHP dengan mengetik perintah :

systemctl status php7.2-fpm

Output berikut menunjukkan bahwa layanan fpm yang aktif dan berjalan.

● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-05-19 19:54:13 UTC; 9h ago
     Docs: man:php-fpm7.2(8)
 Main PID: 17781 (php-fpm7.2)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 507)
   CGroup: /system.slice/php7.2-fpm.service
           ├─17781 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
           ├─17796 php-fpm: pool www
           └─17797 php-fpm: pool www

3. Install Composer

Composer adalah manajer dependensi untuk PHP dan kita akan menggunakannya untuk mengunduh template Drupal dan menginstal semua komponen Drupal yang diperlukan.

Untuk menginstal Composer secara global, unduh installer Composer dengan curl dan pindahkan file ke direktori /usr/local/bin:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Verifikasi pemasangan dengan mencetak versi komposer:

composer --version

Outputnya akan terlihat seperti ini:

Composer version 1.6.5 2018-05-04 11:44:59

4. Install Drupal

Sekarang kita telah menginstal Composer, kita dapat melanjutkan proses dan membuat proyek Drupal baru menggunakan template composer di dalam direktori /var/www/web_drupal:

sudo composer create-project drupal-composer/drupal-project:8.x-dev /var/www/web_drupal --stability dev --no-interaction

Perintah di atas akan mengunduh template, mengambil semua paket php yang diperlukan dan menjalankan beberapa skrip untuk mempersiapkan proyek drupal untuk instalasi. Prosesnya mungkin memakan waktu beberapa menit dan jika berhasil, hasil akhir akan terlihat seperti berikut

Create a sites/default/settings.php file with chmod 0666
Create a sites/default/files directory with chmod 0777

Langkah selanjutnya adalah menginstal Drupal menggunakan Drush. Pada perintah di bawah ini, kita  meneruskan database MySQL dan informasi pengguna yang dibuat pada langkah 1:

cd /var/www/web_drupal 

sudo vendor/bin/drush site-install --db-url=mysql://drupaluser:ganti_dengan_password@localhost/drupal

Pemasang akan meminta Anda dengan pesan berikut, cukup tekan enter untuk melanjutkan.

You are about to DROP all tables in your 'drupal' database. Do you want to continue? (yes/no) [yes]:

Setelah instalasi selesai, skrip akan mencetak nama pengguna dan kata sandi administratif. Outputnya akan terlihat seperti berikut:

[notice] Starting Drupal installation. This takes a while. Consider using the --notify global option.
[success] Installation complete.  User name: admin  User password: XRkC9Q5WN9

Terakhir, kita perlu mengatur izin yang benar sehingga server web dapat memiliki akses penuh ke file dan direktori situs. Nginx dan PHP berjalan sebagai pengguna www-data dan grup www-data, jadi kita perlu memberi perintah chown berikut:

sudo chown -R www-data: /var/www/web_drupal

5. Konfigurasi Nginx

Sekarang, Anda sudah menginstal Nginx dengan sertifikat SSL di sistem Anda, jika masih belum memiliki SSL, silahkan memeriksa prasyarat untuk tutorial ini.

Baca Juga :  Apa itu HTTPS dan Mengapa HTTPS Penting?

Untuk membuat  server block baru untuk proyek Drupal baru, kita akan menggunakan Nginx recipe  dari situs resmi Nginx.

Buka editor teks Anda dan buat file berikut:

sudo nano /etc/nginx/sites-available/example.com
# Redirect HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# Redirect WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    root /var/www/web_drupal/web;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location =https://cdn.linuxid.net/favicon.ico?x99223 {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to scripts in site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        try_files $uri /index.php?$query_string;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }


    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        include fastcgi_params;
        # Block httpoxy attacks. See https://httpoxy.org/.
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        try_files $uri @rewrite;
        expires max;
        log_not_found off;
    }

}

Jangan lupa untuk mengganti example.com dengan domain Drupal Anda dan setel jalur yang benar ke file sertifikat SSL. Snippets yang digunakan dalam konfigurasi ini (termasuk cara pembuatan key exchange) dibuat dalam panduan ini.

Aktifkan server block dengan membuat symbolic link ke direktori sites-enabled:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Sebelum restart layanan Nginx, lakukan tes untuk memastikan bahwa tidak ada kesalahan sintaksis:

sudo nginx -t

Jika tidak ada kesalahan, hasilnya akan terlihat seperti ini:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Terakhir, restart layanan Nginx dengan mengetik:

sudo systemctl restart nginx

6. Test konfigurasi Server dan Install Drupal

Buka browser Anda, ketikkan domain Anda dan jika instalasi berhasil, tampilan yang mirip dengan screenshot berikut ini akan muncul:

drupal

Anda dapat masuk sebagai admin dan mulai menyesuaikan instalasi Drupal baru Anda.

7. Pasang Modul dan Themes Drupal

Sekarang setelah proyek Drupal berhasil diinstal, sekarang saatnya untuk memasang beberapa modul dan tema. Modul dan tema Drupal di-host pada repositori composer khusus, yang dikonfigurasikan oleh proyek drupal untuk kita secara out of the box.

Untuk menginstal modul atau tema, yang perlu Anda lakukan adalah melakukan perintah cd ke direktori proyek dan mengetik composer require drupal/module_or_theme_name. Sebagai contoh, jika kita ingin menginstal modul Pathauto, kita perlu menjalankan perintah berikut:

cd /var/www/web_drupal

sudo -u www-data composer require drupal/pathauto

Dengan menggunakan perintah sudo -u www-data, yang artinya kita akan menjalankan perintah sebagai pengguna www-data

Using version ^1.3 for drupal/pathauto
./composer.json has been updated
> DrupalProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Installing drupal/token (1.5.0): Downloading (100%)         
  - Installing drupal/ctools (3.2.0): Downloading (100%)         
  - Installing drupal/pathauto (1.3.0): Downloading (100%)         
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files
> DrupalProject\composer\ScriptHandler::createRequiredFiles

Seperti yang dapat Anda lihat dari output di atas komposer juga menginstal semua dependensi paket secara otomatis.

8. Update Drupal core

Sebelum update/upgrade, ada baiknya untuk melakukan backup file dan database Anda. Anda dapat menggunakan modul backup dan Migrate yang dapat melakukan pekerjaan ini secara ringkas dan cepat, atau mencadangkan database dan file Anda secara manual.

Untuk mencadangkan file instalasi, Anda dapat menggunakan perintah rsync berikut, tentu saja, Anda harus mengetahui dengan pasti jalur yang benar ke direktori instalasi:

sudo rsync -a /var/www/web_drupal/  /var/www/web_drupal_$(date +%F)

Untuk membuat cadangan database kita bisa menggunakan perintah mysqldump:

mysqldump -u root -p > /var/www/web_drupal_database_$(date +%F).sql

atau dapat juga menggunakan drush sql-dump:

cd /var/www/web_drupal

vendor/bin/drush sql-dump > /var/www/web_drupal_database_$(date +%F).sql

Sekarang kita telah membuat cadangan dari situs drupal, kita  dapat melanjutkan dan memperbarui semua file inti Drupal dengan menjalankan perintah berikut:

sudo -u www-data composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies

Kesimpulan

Selamat, Anda telah berhasil menginstal Drupal 8 menggunakan komposer dan belajar cara memasang modul dan tema. Anda sekarang dapat mulai menyesuaikan situs Anda.

Panduan Pengguna Drupal 8 adalah tempat baik untuk mempelajari lebih lanjut tentang cara mengelola instalasi Drupal. Anda juga dapat mendapatkan informasi berharga dengan mengunjungi template project Drupal Composer di Github.