GNU/Linux >> Belajar Linux >  >> Debian

Cara Instal Drupal dengan Nginx dan Mari Enkripsi SSL di Debian 11

Drupal adalah sistem manajemen konten sumber terbuka yang memungkinkan Anda membangun, mengelola, dan memelihara konten situs web Anda tanpa pengetahuan coding yang diperlukan.

Ada banyak solusi manajemen konten yang berbeda untuk dipilih, tetapi tidak semuanya tepat untuk setiap proyek. Jika Anda ingin membangun atau membangun kembali situs web Anda dengan sesuatu yang fleksibel dan kuat, tidak perlu mencari yang lain selain Drupal.

Jika Anda belum memiliki hosting web untuk mengembangkan situs web Drupal, kami sarankan untuk menginstalnya di mesin Debian atau VPS lokal Anda.

Di sini, kita akan menginstal Drupal dengan Nginx dan Let's Encrypt SSL di Debian 11.

Prasyarat

Instal LEMP Stack

Ikuti tautan di bawah ini untuk menginstal LEMP stack pada sistem Debian Anda untuk instalasi Drupal.

Instal EMP (Nginx, MariaDB, dan PHP) di Debian 11

Instal Ekstensi PHP untuk Drupal

Gunakan apt perintah untuk menginstal ekstensi PHP untuk instalasi Drupal.

sudo apt update

sudo apt install -y php-mysql php-gd php-dom php-curl php-imagick php-zip php-xml php-mbstring php-json php-pdo php-cli php-apcu

sudo apt install --no-install-recommends -y php-uploadprogress

Setup Nginx Virtual Host untuk Drupal

Kita akan mulai dengan membuat virtual host untuk instalasi Drupal. Anda dapat menemukan semua file konfigurasi virtual host Nginx di bawah /etc/nginx/conf.d direktori.

Biasanya, file host virtual berisi nama domain, nomor port, root dokumen, lokasi log, CGI cepat, dll.

Saya berasumsi sebagai berikut,

Nama domain:itzgeek.net, www.itzgeek.net
No Port:80
Akar dokumen:/usr/share/nginx/www.itzgeek.net/html
Log:/usr/share/nginx/www.itzgeek.net/logs

Pertama, buat file konfigurasi host virtual.

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Kemudian, tempatkan konten berikut ke dalam file konfigurasi di atas. Anda perlu mengubah server_name sesuai kebutuhan Anda.

server {
	server_name itzgeek.net www.itzgeek.net;
	root /usr/share/nginx/www.itzgeek.net/html;
	
	index index.php index.html;
	
	access_log /usr/share/nginx/www.itzgeek.net/logs/access.log;
	error_log /usr/share/nginx/www.itzgeek.net/logs/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 ~* \.(txt|log)$ {
        deny all;
    }

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

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

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

    # Allow "Well-Known URIs" as per RFC 5785
    location ~* ^/.well-known/ {
        allow 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; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^ /index.php; # For Drupal >= 7
    }

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

    # Protect files and directories from prying eyes.
    location ~* \.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$ {
        deny all;
        return 404;
    }

    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        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:/var/run/php/php7.4-fpm.sock;
    }

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

    # Fighting with Styles? This little gem is amazing.
    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;
    }

    # Enforce clean URLs
    # Removes index.php from urls like www.example.com/index.php/my-page --> www.example.com/my-page
    # Could be done with 301 for permanent or other redirect codes.
    if ($request_uri ~* "^(.*/)index\.php/(.*)") {
        return 307 $1$2;
    }
}

Buat direktori untuk menempatkan file Drupal dan log Nginx.

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/html/

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/logs/

Verifikasi file konfigurasi Nginx dengan perintah di bawah ini.

sudo nginx -t

Jika Anda mendapatkan yang berikut, itu berarti konfigurasi virtual host sudah benar.

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

Mulai ulang layanan Nginx dan PHP-FPM.

sudo systemctl reload nginx php7.4-fpm

Instal Let's Encrypt SSL Certificate

Buat Data DNS

Buka pencatat domain Anda dan buat catatan A dan CNAME (opsional jika Anda tidak ingin menggunakan subdomain www) untuk domain Anda.

  1. Nama Domain Non-www (Misalnya itzgeek.net)>> A rekam titik ke IP server Anda
  2. www Nama Domain (Mis. www.itzgeek.net)>> CNAME catat titik ke itzgeek.net

Untuk demo ini, saya akan membuat dua record agar website Drupal saya bisa diakses di www.itzgeek.net.

Instal klien Certbot

Klien Certbot, yang membantu kami membuat dan menginstal sertifikat SSL Let's Encrypt di Nginx, sekarang tersedia sebagai paket snap untuk Debian. Jadi, pertama, instal snapd daemon di sistem Anda.

sudo apt update

sudo apt install -y snapd

Kemudian, perbarui snapd ke versi terbaru.

sudo snap install core && sudo snap refresh core

Terakhir, instal klien Certbot menggunakan perintah di bawah ini.

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Instal Sertifikat SSL

Gunakan perintah di bawah ini untuk membuat dan menginstal sertifikat Let's Encrypt SSL di server web Nginx.

sudo certbot --nginx
1. Masukkan alamat email untuk menerima pemberitahuan tentang pembaruan mendesak dan pemberitahuan keamanan
2. Ketik Y dan tekan Enter untuk mendaftar ke server ACME
3. Ketik Y atau T untuk menerima email tentang berita, kampanye, buletin EFF.
4. Certbot akan secara otomatis mendeteksi domain Drupal dan meminta Anda untuk mengaktifkan HTTPS untuk situs web Drupal Anda. Ketik 1 atau angka yang sesuai dipisahkan dengan koma jika Anda memiliki beberapa situs web.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: itzgeek.net
2: www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1,2

Tunggu hingga instalasi SSL selesai. Sekarang Anda dapat mengakses situs web dengan HTTPS.

Catatan: Jika Anda mengakses situs web sekarang, Anda akan mendapatkan 403 kesalahan terlarang karena Anda belum menempatkan file Drupal.

Arahkan permintaan HTTP non-www ke www HTTPS dengan Nginx

Anda perlu mengonfigurasi server Nginx untuk mengalihkan lalu lintas dari situs HTTP non-www ke situs HTTPS WWW, yaitu http://itzgeek.net>> https://www.itzgeek.net.

Perpanjang Otomatis Sertifikat SSL

Klien Certbot sekarang menyertakan pembaruan otomatis sertifikat SSL melalui systemd. Jadi, Anda tidak perlu memperbarui sertifikat secara manual.

Instal Drupal dengan Nginx

Membuat Basis Data untuk Drupal

Pertama, login ke server database MariaDB/MySQL.

sudo mysql -u root -p

Kemudian buat database untuk instalasi Drupal beserta user database dan passwordnya.

CREATE DATABASE drupaldb;

CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON drupaldb.* TO 'drupaluser'@'localhost';

EXIT

Unduh Paket Drupal

Unduh versi terbaru penginstal Drupal dengan menggunakan perintah berikut.

wget https://www.drupal.org/download-latest/tar.gz -O drupal-latest.tar.gz

Kemudian, ekstrak file yang diunduh.

tar -zxvf drupal-latest.tar.gz

Kemudian, pindahkan file ke direktori root dokumen situs web Anda.

sudo mv drupal-*/* /usr/share/nginx/www.itzgeek.net/html/

Perbarui kepemilikan dan grup direktori situs web Drupal.

sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/

Instal Drupal CMS

Buka browser Anda dan kunjungi domain Drupal Anda untuk melakukan instalasi Drupal.

https://situs-drupal-Anda

1. Pilih Bahasa untuk instalasi dan situs web Drupal Anda, lalu klik Simpan dan lanjutkan

2. Pilih profil pemasangan yang cocok untuk Anda lalu klik Simpan dan lanjutkan

3. Masukkan detail database Drupal di Konfigurasi database halaman lalu klik Simpan dan lanjutkan

4. Tunggu hingga instalasi Drupal selesai

5. Anda harus Mengonfigurasi situs dengan memasukkan Informasi Situs, Akun Pemeliharaan Situs, Pengaturan Wilayah, dan Pemberitahuan Pembaruan . Terakhir, klik Simpan dan lanjutkan

6. Setelah selesai, penginstal akan mengarahkan Anda ke back-end Drupal untuk mengelola penginstalan. Atau, Anda dapat mengakses back-end Drupal dengan membuka https://your-drupal-website/user/login

Akses Situs Web Drupal

Sekarang, Anda akan dapat mengakses situs dengan nama domain Anda.

https://situs-drupal-Anda

Tangkapan layar Back-End CMS Drupal:

Setelah penginstalan, aktifkan Trusted Host Settings untuk melindungi situs web Drupal Anda dari serangan HTTP HOST Header.

Kesimpulan

Itu saja. Saya harap Anda telah mempelajari cara menginstal Drupal dengan Nginx dan Let's Encrypt SSL di Debian 11.


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

  2. Instal Lets Encrypt dan Secure Nginx dengan SSL/TLS di Debian 9

  3. Cara Menginstal Let's Encrypt SSL di Ubuntu 18.04 dengan Nginx

  1. Cara Menginstal Drupal dengan Nginx dan Mengenkripsi SSL di Ubuntu 20.04 LTS

  2. Cara Menginstal Drupal 9 dengan Nginx dan Mengenkripsi SSL di Debian 10

  3. Cara Menginstal Drupal dengan Apache dan Mengenkripsi SSL di Debian 11

  1. Cara Menginstal AbanteCart dengan Nginx dan SSL di Debian 11

  2. Cara Memasang Forum Wacana dengan Nginx dan Lets Encrypt SSL Gratis di Debian 11

  3. Cara Instal Etherpad dengan Nginx dan SSL di Debian 11