GNU/Linux >> Belajar Linux >  >> Cent OS

Instal dan Konfigurasi Drupal 8 dengan Nginx dan Mari Enkripsi di CentOS 8

Drupal adalah sistem manajemen konten gratis, sumber terbuka, dan skalabel yang dapat digunakan oleh individu untuk membuat dan mengelola semua jenis situs web. Itu ditulis dalam PHP dan menggunakan MySQL/MariaDB untuk menyimpan datanya. Drupal menyediakan serangkaian fitur yang kaya yang dapat diperluas dengan ribuan add-on. Drupal mendukung banyak server web termasuk, Apache, Nginx, IIS, Lighttpd dan database MySQL, MariaDB, MongoDB, SQLite, PostgreSQL, dan server MS SQL. Drupal hadir dengan UI web yang sederhana dan ramah pengguna yang memungkinkan Anda membuat situs web tanpa pengetahuan coding apa pun.

Dalam tutorial ini, kami akan menunjukkan cara menginstal Drupal 8 di server CentOS 8 dan mengamankannya dengan Let's Encrypt SSL gratis.

Persyaratan

  • Server yang menjalankan CentOS 8.
  • Nama domain valid yang ditunjukkan dengan IP server Anda
  • Kata sandi root dikonfigurasi di server.

Instal Nginx, MariaDB dan PHP

Sebelum memulai, Anda perlu menginstal server LEMP di server Anda. Anda dapat menginstalnya dengan menjalankan perintah berikut:

dnf install nginx mariadb-server php php-fpm php-cli php-mbstring php-gd php-xml php-curl php-mysqlnd php-pdo php-json php-opcache -y

Setelah terinstal, mulai layanan Nginx, MariaDB dan php-fpm dan aktifkan untuk memulai setelah sistem reboot menggunakan perintah berikut:

systemctl start nginx
systemctl start php-fpm
systemctl start mariadb
systemctl enable nginx
systemctl enable php-fpm
systemctl enable mariadb

Konfigurasi Basis Data

Secara default, MariaDB tidak diamankan sehingga Anda harus mengamankannya. Anda dapat mengamankannya dengan menjalankan perintah berikut:

mysql_secure_installation

Jawab semua pertanyaan seperti yang ditunjukkan di bawah ini:

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Setelah selesai, masuk ke shell MariaDB dengan perintah berikut:

mysql -u root -p

Berikan kata sandi root Anda saat diminta kemudian buat database dan pengguna untuk Drupal dengan perintah berikut:

MariaDB [(none)]> CREATE DATABASE drupaldb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> CREATE USER [email protected] IDENTIFIED BY "password";

Selanjutnya, berikan semua hak istimewa ke drupaldb dengan perintah berikut:

MariaDB [(none)]> GRANT ALL ON drupaldb.* TO [email protected] IDENTIFIED BY "password";

Selanjutnya, flush hak istimewa dan keluar dari shell MariaDB dengan perintah berikut:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Unduh Drupal

Pertama, Anda perlu mengunduh Drupal versi terbaru dari situs resminya. Anda dapat mengunduhnya dengan perintah berikut:

wget https://ftp.drupal.org/files/projects/drupal-8.7.10.tar.gz

Setelah diunduh, ekstrak file yang diunduh dengan perintah berikut:

tar -xvzf drupal-8.7.10.tar.gz

Selanjutnya, pindahkan direktori hasil ekstrak ke direktori root web Nginx dengan perintah berikut:

mv drupal-8.7.10 /var/www/html/drupal

Selanjutnya buat direktori untuk menyimpan file website dan rename file default.settings.php seperti gambar di bawah ini:

mkdir /var/www/html/drupal/sites/default/files
cp /var/www/html/drupal/sites/default/default.settings.php /var/www/html/drupal/sites/default/settings.php

Selanjutnya, ubah kepemilikan direktori Drupal menjadi nginx seperti gambar di bawah ini:

chown -R nginx:nginx /var/www/html/drupal/

Konfigurasi Nginx untuk Drupal

Pertama, buat file konfigurasi php-fpm untuk Drupal dengan perintah berikut:

nano /etc/php-fpm.d/drupal.conf

Tambahkan baris berikut:

[drupal]
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen = /run/php-fpm/drupal.sock
pm = ondemand
pm.max_children =  50
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /

Simpan dan tutup file setelah Anda selesai. Kemudian, buat file konfigurasi virtual host Nginx untuk Drupal:

nano /etc/nginx/conf.d/drupal.conf

Tambahkan baris berikut:

server {
    listen 80;
    server_name example.com;

    root /var/www/html/drupal;

    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;
    }
    location ~ (^|/)\. {
        return 403;
    }

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

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }
    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-fpm/drupal.sock;
    }
    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;
    }
}

Simpan dan tutup file. Kemudian, restart php-fpm dan layanan Nginx untuk menerapkan perubahan:

systemctl restart php-fpm
systemctl restart nginx

Konfigurasi SELinux dan Firewall

Secara default, SELinux diaktifkan di CentOS 8. Jadi, Anda perlu mengonfigurasi SELinux agar Drupal berfungsi dengan benar.

Pertama, izinkan Drupal untuk menulis ke direktori file publik dan pribadi dengan perintah berikut:

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/drupal(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/drupal/sites/default/settings.php'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/drupal/sites/default/files'
restorecon -Rv /var/www/html/drupal
restorecon -v /var/www/html/drupal/sites/default/settings.php
restorecon -Rv /var/www/html/drupal/sites/default/files

Selanjutnya, izinkan Drupal untuk mengirim email keluar dengan perintah berikut:

setsebool -P httpd_can_sendmail on

Selanjutnya, Anda perlu membuat aturan firewall untuk mengizinkan layanan HTTP dan HTTPS dari jaringan eksternal. Anda dapat mengizinkannya dengan perintah berikut:

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Amankan Drupal dengan Let's Encrypt SSL

Drupal sekarang diinstal dan dikonfigurasi. Saatnya mengamankannya dengan Let's Encrypt SSL gratis.

Untuk melakukannya, Anda perlu mengunduh klien certbot di server Anda. Anda dapat mengunduh dan mengatur izin yang benar dengan menjalankan perintah berikut:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Sekarang, jalankan perintah berikut untuk mendapatkan dan menginstal sertifikat SSL untuk situs web Drupal Anda.

certbot-auto --nginx -d example.com

Perintah di atas pertama-tama akan menginstal semua dependensi yang diperlukan di server Anda. Setelah terinstal, Anda akan diminta untuk memberikan alamat email dan menerima persyaratan layanan seperti yang ditunjukkan di bawah ini:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y 


Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/drupal.conf

Selanjutnya, Anda harus memilih apakah akan mengarahkan ulang lalu lintas HTTP ke HTTPS seperti yang ditunjukkan di bawah ini:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Ketik 2 dan tekan Enter untuk melanjutkan. Setelah instalasi selesai, Anda akan melihat output berikut:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/drupal.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-03-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Akses Situs Web Drupal

Sekarang, buka browser web Anda dan ketik URL https://example.com . Anda akan diarahkan ke halaman berikut:

Pilih bahasa yang Anda inginkan dan klik Simpan dan lanjutkan tombol. Anda akan melihat halaman berikut:

Pilih profil pemasangan Anda dan klik Simpan dan lanjutkan tombol. Anda akan melihat halaman berikut:

Berikan detail basis data Anda dan klik Simpan dan lanjutkan tombol. Anda akan melihat halaman berikut:

Berikan nama situs Anda, nama pengguna admin, kata sandi dan klik Simpan dan lanjutkan tombol. Anda akan melihat dasbor Drupal Anda di halaman berikut:

Selamat! Anda telah berhasil menginstal dan mengamankan Drupal di server CentOS 8.


Cent OS
  1. Cara Menginstal dan Mengkonfigurasi Nginx di CentOS 7

  2. Amankan Nginx dengan Lets Encrypt di CentOS 7

  3. Amankan Apache dengan Lets Encrypt di CentOS 7

  1. Cara Menginstal dan Mengonfigurasi Askbot dengan Nginx di CentOS 7

  2. Cara Menginstal OwnCloud 8 dengan Nginx dan MariaDB di CentOS 7

  3. Cara Menginstal Shopware dengan NGINX dan Mengenkripsi di CentOS 7

  1. Cara Menginstal WonderCMS dengan Nginx dan Mengenkripsi SSL di CentOS 7

  2. Cara Instal Pico CMS dengan Nginx dan Lets Encrypt di CentOS 7

  3. Instal Automad CMS dengan Nginx dan Mari Enkripsi SSL di CentOS 7