Drupal adalah salah satu platform CMS open-source paling populer di seluruh dunia. Ini ditulis dalam PHP dan dapat digunakan untuk membangun berbagai jenis situs web mulai dari blog pribadi kecil hingga situs perusahaan besar, politik, dan pemerintah.
Dalam tutorial ini, kami akan menunjukkan cara 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 server web, PHP 7.2 terbaru dan MySQL/MariaDB sebagai server database.
Prasyarat #
Pastikan Anda telah memenuhi prasyarat berikut sebelum melanjutkan dengan tutorial ini:
- Anda memiliki nama domain yang menunjuk ke IP server publik Anda. Kami akan menggunakan
example.com
. - Anda telah menginstal Nginx dengan mengikuti petunjuk berikut.
- Anda memiliki sertifikat SSL yang terpasang untuk domain Anda. Anda dapat memasang sertifikat SSL Let's Encrypt gratis dengan mengikuti petunjuk berikut.
Sebelum memulai #
Perbarui indeks paket dan paket sistem ke versi terbaru:
sudo apt update && sudo apt upgrade
1. Buat database MySQL #
Jika Anda telah menginstal MySQL atau MariaDB di server Anda, Anda dapat melewati langkah ini, jika tidak, 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 mysql_secure_installation
perintah untuk meningkatkan keamanan server MySQL Anda. Sekarang kita perlu login ke shell MySQL dan membuat database dan akun pengguna baru dan memberikan izin hibah yang sesuai kepada pengguna.
Untuk masuk ke shell MySQL ketik perintah berikut dan masukkan kata sandi saat diminta:
mysql -u root -p
Untuk membuat database bernama drupal
, pengguna bernama drupaluser
dan untuk memberikan izin yang diperlukan kepada pengguna, jalankan 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 'drupaluser'@'localhost' IDENTIFIED BY 'change-with-strong-password';
2. Instal PHP #
PHP 7.2 yang merupakan versi PHP default di Ubuntu 18.04 didukung penuh dan direkomendasikan untuk Drupal 8.6. Karena kami akan menggunakan Nginx sebagai server web, kami 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 otomatis dimulai setelah proses instalasi selesai, Anda dapat memverifikasinya dengan mencetak status layanan:
systemctl status php7.2-fpm
Outputnya harus menunjukkan bahwa layanan fpm 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. Instal Komposer #
Composer adalah manajer ketergantungan untuk PHP dan kami akan menggunakannya untuk mengunduh template Drupal dan menginstal semua komponen Drupal yang diperlukan.
Untuk menginstal composerglobal, unduh penginstal Composer dengan curl
dan pindahkan file ke /usr/local/bin
direktori:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Verifikasi instalasi dengan mencetak versi komposer:
composer --version
Outputnya akan terlihat seperti ini:
Composer version 1.6.5 2018-05-04 11:44:59
4. Instal Drupal #
Sekarang setelah composer terinstal, kita dapat melanjutkan dan membuat proyek Drupal baru menggunakan template composer di dalam /var/www/my_drupal
direktori:
sudo composer create-project drupal-composer/drupal-project:8.x-dev /var/www/my_drupal --stability dev --no-interaction
Perintah di atas akan mengunduh template, mengambil semua paket php yang diperlukan dan menjalankan beberapa skrip untuk mempersiapkan proyek kita 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 melewati database MySQL dan informasi pengguna yang dibuat pada langkah 1:
cd /var/www/my_drupal
sudo vendor/bin/drush site-install --db-url=mysql://drupaluser:change-with-strong-password@localhost/drupal
Penginstal 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. Baik Nginx dan PHP berjalan sebagai www-data
pengguna dan www-data
grup, jadi kita perlu mengeluarkan perintah berikut:
sudo chown -R www-data: /var/www/my_drupal
5. Konfigurasi Nginx #
Sekarang, Anda seharusnya sudah menginstal Nginx dengan sertifikat SSL di sistem Anda, jika belum periksa prasyarat untuk tutorial ini.
Untuk membuat blok server baru untuk proyek Drupal baru kami, kami akan menggunakan resep Nginx dari situs resmi Nginx.
Buka editor teks Anda dan buat file berikut:
sudo nano /etc/nginx/sites-available/example.com
/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/my_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 = /favicon.ico {
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 atur jalur yang benar ke file sertifikat SSL. Semua permintaan HTTP akan dialihkan ke HTTPS. Cuplikan yang digunakan dalam konfigurasi ini dibuat dalam panduan ini.
Aktifkan blok server dengan membuat tautan simbolis ke sites-enabled
direktori:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Sebelum memulai ulang layanan Nginx, lakukan tes untuk memastikan tidak ada kesalahan sintaks:
sudo nginx -t
Jika tidak ada kesalahan, outputnya 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. Uji Instalasi #
Buka browser Anda, ketik domain Anda dan dengan asumsi instalasi berhasil, layar yang mirip dengan berikut akan muncul:
Anda dapat masuk sebagai admin dan mulai menyesuaikan instalasi Drupal baru Anda.
7. Instal modul dan tema Drupal #
Sekarang setelah proyek Drupal Anda terinstal, Anda akan ingin menginstal beberapa modul dan tema. Modul dan tema Drupal dihosting di repositori komposer khusus, yang dikonfigurasikan proyek drupal untuk kami di luar kotak.
Untuk memasang modul atau tema, Anda hanya perlu cd
ke direktori proyek dan ketik composer require drupal/module_or_theme_name
. Misalnya, jika kita ingin menginstal Pathautomodule, kita perlu menjalankan perintah berikut:
Dengan menambahkancd /var/www/my_drupal
sudo -u www-data composer require drupal/pathauto
sudo -u www-data
kami 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 Anda lihat dari output di atas, komposer juga menginstal semua dependensi paket untuk kami.
8. Perbarui inti Drupal #
Sebelum memutakhirkan, selalu ada baiknya untuk membuat cadangan file dan basis data Anda. Anda dapat menggunakan Backup and Migratemodule atau secara manual mencadangkan database dan file Anda.
Untuk mencadangkan file instalasi, Anda dapat menggunakan perintah rsync berikut, tentu saja, Anda harus menggunakan jalur yang benar ke direktori instalasi:
sudo rsync -a /var/www/my_drupal/ /var/www/my_drupal_$(date +%F)
Untuk membuat cadangan database, kita dapat menggunakan mysqldump
standar perintah:
mysqldump -u root -p > /var/www/my_drupal_database_$(date +%F).sql
atau drush sql-dump
:
cd /var/www/my_drupal
vendor/bin/drush sql-dump > /var/www/my_drupal_database_$(date +%F).sql
Sekarang setelah kami membuat cadangan, kami 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