GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Drupal 8.1 dengan Nginx, PHP-FPM dan SSL di Ubuntu 16.04

Drupal adalah sistem manajemen konten sumber terbuka yang terkenal berdasarkan PHP. Ini tersedia secara gratis dan dirilis di bawah Lisensi Publik Umum GNU. Drupal dapat digunakan untuk semua ukuran situs web, dari situs web internasional besar hingga blog pribadi dan situs perusahaan atau pemerintah. Bagian inti drupal bernama "Drupal Core", berisi sistem manajemen konten dasar, manajemen pengguna, manajemen menu, penyesuaian tata letak, dan administrasi sistem. Drupal Core dapat diperluas dengan plugin, hingga saat ini komunitas drupal telah menyediakan lebih dari 31.000 modul untuk Drupal.

Dalam tutorial ini, kita akan menginstal Drupal 8.1.10 dengan server web Nginx, MariaDB 10 sebagai server database dan PHP-FPM (PHP 7.0) untuk menangani permintaan PHP. Saya juga akan menunjukkan cara memasang Sertifikat SSL untuk mengamankan situs web Drupal.

Prasyarat

  • Ubuntu 16.04 - versi 64bit.
  • Hak istimewa root.

Langkah 1 - Perbarui sistem Ubuntu

Masuk ke server ubuntu dengan ssh, lalu menjadi pengguna root dan perbarui repositori ubuntu:

sudo su
sudo apt-get update

Langkah 2 - Instal Nginx dan PHP-FPM

Nginx atau "engine-x" adalah server HTTP cepat yang berfokus pada kinerja tinggi dengan penggunaan memori/RAM yang rendah. Kita dapat menggunakan Nginx juga sebagai proxy terbalik, untuk protokol HTTP, HTTPS, POP3 dan IMAP. Dalam tutorial ini, kita akan menggunakan Nginx sebagai server HTTP berkemampuan SSL.

Instal Nginx dengan perintah apt berikut sebagai pengguna sudo/root:

sudo apt-get install nginx -y

Selanjutnya install php7.0-fpm dengan ekstensi php-gd yang dibutuhkan oleh drupal core:

sudo apt-get install php7.0-fpm php7.0-cli php7.0-gd php7.0-mysql php7.0-xml -y

Pada langkah selanjutnya, kita akan mengkonfigurasi Nginx.

Langkah 3 - Konfigurasi Nginx dan PHP-FPM

Pada langkah ini, kita akan mengkonfigurasi Nginx untuk menggunakan php-fpm untuk melayani permintaan HTTP untuk halaman PHP. Buka direktori php-fpm "/etc/php/7.0/fpm" dan edit file "php.ini":

cd /etc/php/7.0/fpm/
vim php.ini

Daring 761 , batalkan komentar pada baris cgi.fix_pathinfo dan ubah nilainya menjadi "0 ".

cgi.fix_pathinfo=0

Simpan file dan keluar dari editor.

Sekarang kita memodifikasi konfigurasi default virtual host Nginx. Edit file "default" dan aktifkan direktif php-fpm.

cd /etc/nginx/sites-available/
vim default

Batalkan komentar pada baris 51 - 58 untuk menggunakan php-fpm dengan nginx.

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

Simpan file dan keluar.

Kemudian uji konfigurasi Nginx dengan perintah "nginx -t " untuk memastikan validitasnya:

nginx -t

Jika tidak ada kesalahan, restart nginx dan layanan php-fpm:

systemctl restart nginx
systemctl restart php7.0-fpm

Selanjutnya, uji apakah php-fpm berfungsi dengan baik dengan nginx dengan membuat file info php baru di direktori web "/var/www/html".

cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php

Kunjungi file info.php di IP server (dalam kasus saya http://192.168.1.4/info.php)  di peramban web. Hasilnya akan seperti screenshot di bawah ini.

Langkah 4 - Instal dan Konfigurasi MariaDB

MariaDB adalah garpu server basis data dari sistem manajemen basis data relasional MYSQL, yang menawarkan fungsionalitas pengganti drop-in untuk MySQL.

Instal MariaDB versi terbaru dengan perintah apt-get:

sudo apt-get install mariadb-client mariadb-server -y

Ketika instalasi telah selesai, mulai MariaDB:

systemctl start mysql

Nama layanan MariaDB adalah "mysql", itu sebabnya perintah systemctl menggunakan kata mysql di sini.

Sekarang kita akan mengkonfigurasi username dan password MariaDB dengan perintah di bawah ini:

mysql_secure_installation
mysql_secure_installation

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] Y
 ... Success!

Disallow root login remotely? [Y/n] Y
 ... Success!

Remove test database and access to it? [Y/n] Y
 ... Success!

Reload privilege tables now? [Y/n] Y
 ... Success!

Masuk ke shell MariaDB dengan sandi Anda dan buat database baru untuk drupal yang disebut "drupaldb " dan buat pengguna MariaDB/MySQL baru "drupaluser " dengan sandi "[email protected] " dan terakhir berikan izin kepada pengguna ke database. Harap pilih sandi yang aman alih-alih "[dilindungi email]" untuk penginstalan Anda!

mysql -u root -p


create database drupaldb;
create user [email protected] identified by '[email protected]';
grant all privileges on drupaldb.* to [email protected] identified by '[email protected]';
flush privileges;
\q

Basis Data "drupaldb " dengan pengguna "drupaluser " telah dibuat.

Langkah 5 - Buat Sertifikat SSL yang Ditandatangani Sendiri

Buka /etc/nginx direktori dan buat direktori baru dengan nama "ssl" untuk file konfigurasi SSL.

mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl

Kemudian buat sertifikat SSL baru yang ditandatangani sendiri dengan perintah openssl di bawah ini:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/drupal.key -out /etc/nginx/ssl/drupal.crt

Isi informasi yang diminta. File sertifikat SSL telah dibuat, sekarang ubah izin file kunci pribadi "drupal.key" menjadi 600:

chmod 600 drupal.key

Langkah 6 - Konfigurasikan VirtualHost untuk Drupal

Kami akan menginstal Drupal 8 di direktori "/var/www/drupal8" dengan nama domain "drupal8.me". Silakan ganti nama domain di instalasi Anda dengan nama domain situs web yang ingin Anda gunakan untuk instalasi drupal ini. Jadi mari kita buat direktorinya:

mkdir -p /var/www/drupal8

Kemudian masuk ke direktori virtualhost Nginx "/etc/nginx/sites-available/" dan buat file baru "drupal8" dengan editor vim:

cd /etc/nginx/sites-available/
vim drupal8

Rekatkan konfigurasi Nginx untuk drupal di bawah ini ke dalam file drupal8:

server {
    server_name drupal8.me;
    root /var/www/drupal8; ## <-- Your only path reference.

    listen 80;
    listen [::]:80;
    listen 443 default ssl;

    ssl_certificate      /etc/nginx/ssl/drupal.crt;
    ssl_certificate_key  /etc/nginx/ssl/drupal.key;

    # Redirect HTTP to HTTPS
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

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

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

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

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

    # 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 @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

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

    # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
    # such as update.php/selection. The rule we use is strict, and only allows this pattern
    # with the update.php front controller.  This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
    # any paths like that, then you might prefer to use a laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL pattern with front
    # controllers other than update.php in a future release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

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

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

Simpan file dan keluar dari editor.

File host virtual Drupal telah dibuat, sekarang kita harus mengaktifkannya dengan membuat symlink ke file di direktori "sites-enabled":

ln -s /etc/nginx/sites-available/drupal8 /etc/nginx/sites-enabled/

Uji konfigurasi Nginx dan mulai ulang Nginx:

nginx -t
systemctl restart nginx

Langkah 7 - Instal dan Konfigurasi Drupal

Kita harus menginstal git dan drush sebelum memulai instalasi Drupal. Drush adalah shell baris perintah dan antarmuka skrip Unix untuk Drupal. Instal dengan tepat perintah berikut:

sudo apt-get install git drush -y

Kemudian masuk ke direktori drupal8 yang telah kita buat tadi dan download Drupal dengan wget atau drush. Saya akan menggunakan wget di sini:

cd /var/www/drupal8
wget https://ftp.drupal.org/files/projects/drupal-8.1.10.tar.gz

Jika Anda ingin menggunakan drush, jalankan perintah di bawah ini sebagai gantinya:

drush dl drupal-8

Tunggu hingga unduhan selesai, lalu pindahkan semua file Drupal ke direktori utama:

tar -xzvf drupal-8.1.10.tar.gz
mv drupal-8.1.10/* .
rm -rf drupal-8.1.10

Pada langkah selanjutnya, kita akan mengkonfigurasi file pengaturan Drupal. Dari direktori utama Drupal, buka direktori "sites/default" dan salin dua file konfigurasi "settings.php " dan "services.yml ":

cd sites/default
cp default.settings.php settings.php
cp default.services.yml services.yml

Kemudian kita harus membuat direktori baru dengan nama "file " di dalam direktori "sites/default". Perintah "chmod" memastikan bahwa file konfigurasi dan direktori "files" dapat ditulis untuk instalasi Drupal:

mkdir files/
chmod a+w *

Sekarang kunjungi situs Drupal Anda (dalam kasus saya http://drupal8.me) dengan Web Browser, Anda akan diarahkan ke koneksi https secara otomatis dan halaman installer Drupal akan muncul.

Harap dicatat bahwa panduan ini baru saja diperbarui dari Drupal 8.1.8 ke 8.1.10 dalam perintah untuk menyertakan patch keamanan terbaru untuk Drupal yang dirilis hari ini, tangkapan layar masih menunjukkan nomor versi 8.1.8 karena antarmuka tidak berubah . Anda harus selalu menggunakan versi Drupal stabil terbaru untuk penginstalan Anda dan mengganti nomor versi pada perintah penginstalan di atas.

Pilih bahasa Anda, saya akan menggunakan "Bahasa Inggris" di sini.

Klik "Simpan dan lanjutkan" .

Sekarang pilih jenis instalasi. Anda dapat menggunakan tipe standar atau minimal. Saya akan menggunakan "Standar ".

Sekarang Anda akan ditampilkan halaman konfigurasi database. Isi detail database untuk database yang telah kita buat untuk Drupal.

Tunggu hingga penginstalan selesai.

Sekarang kita harus mengkonfigurasi pengaturan profil situs seperti nama situs, pengguna, dan kata sandi untuk admin, alamat email dll.

Sekarang Drupal diinstal. Anda akan diarahkan ke halaman beranda Drupal.

Anda mungkin melihat pesan kesalahan tentang izin file konfigurasi drupal "settings.php" dan "services.yml". Cukup ubah izin mereka dengan perintah berikut:

cd sites/default/
chmod 644 settings.php services.yml

Sekarang Drupal 8.1 diinstal dengan Nginx dan SSL di ubuntu 16.04.

Kesimpulan

Drupal adalah kerangka kerja manajemen konten sumber terbuka gratis berdasarkan PHP. Ini dapat digunakan untuk blog pribadi, beranda pribadi, atau situs web perusahaan. Drupal didistribusikan di bawah lisensi GNU-GPL. Komponen utama Drupal disebut sebagai "Drupal Core" dan hingga saat ini komunitas Drupal mengembangkan lebih dari 31.000 modul untuk memperluasnya. Versi stabil saat ini adalah 8.1.10. Drupal mudah dipasang dan dikonfigurasi, kita dapat menggunakan Nginx atau Apache sebagai server web dan PHP-FPM untuk menangani permintaan PHP di server Drupal.


Ubuntu
  1. Cara Instal Nginx Dengan PHP5 Dan MySQL Di Ubuntu 11.10

  2. Cara Menginstal dan mengatur PHP dan Nginx (LEMP) di Ubuntu 20.04

  3. Cara menginstal PHP 7.4 Dengan Nginx di Ubuntu 20.04

  1. Cara Menginstal PHP 7.4 dan 8.0 Di Ubuntu 18.04 atau 20.04

  2. Cara Menginstal Nextcloud dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

  3. Instal OwnCloud 7 dengan Nginx dan PHP-FPM di VPS Ubuntu

  1. Cara Menginstal Drupal 8 dengan Nginx, PHP-FPM dan SSL di Ubuntu 15.10

  2. Cara Instal Drupal 8 dengan Apache, MySQL dan SSL di Ubuntu 15.10

  3. Cara Menginstal OpenCart 2 dengan Nginx dan SSL di Ubuntu 15.10