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

Cara Menginstal Drupal di CentOS 7

Drupal adalah salah satu platform CMS open-source terkemuka di seluruh dunia. Ini fleksibel, terukur, dan dapat digunakan untuk membangun berbagai jenis situs web mulai dari blog pribadi kecil hingga situs perusahaan, politik, dan pemerintah besar.

Dalam tutorial ini, kami akan menjelaskan cara menginstal Drupal 8.6 di CentOS 7.

Ada beberapa cara untuk menginstal Drupal. Panduan ini mencakup langkah-langkah yang diperlukan untuk menginstal Drupal 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 #

Sebelum Anda memulai instalasi, pastikan Anda telah memenuhi prasyarat berikut:

  • Memiliki nama domain yang menunjuk ke IP server publik Anda. Kami akan menggunakan example.com .
  • Sudah menginstal Nginx.
  • Pastikan sertifikat SSL untuk domain Anda. Anda dapat memasang sertifikat SSL Let's Encrypt gratis dengan mengikuti petunjuk berikut.
  • Masuk sebagai pengguna dengan hak istimewa sudo.

Buat database MySQL #

Langkah pertama adalah membuat database dan akun pengguna baru dan memberikan izin yang sesuai kepada pengguna.

Jika MySQL atau MariaDBis sudah terinstal di server Anda, Anda dapat melewati langkah ini, jika belum Anda dapat menginstal paket server MariaDB 5.5 dari repositori default CentOS dengan mengetik:

sudo yum install mariadb-server
Untuk instalasi MariaDB/MySQL baru, disarankan untuk menjalankan mysql_secure_installation perintah untuk meningkatkan keamanan server database Anda.

Masuk ke shell MySQL dengan mengetikkan 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';

Instal PHP #

CentOS 7 dikirimkan dengan PHP versi5.4, yang sudah usang dan tidak lagi didukung. Versi PHP yang direkomendasikan untuk Drupal adalah PHP 7.2.

Untuk menginstal PHP 7.2 di CentOS 7, pertama-tama kita harus mengaktifkan repositori EPELand Remi:

sudo yum install epel-release yum-utilssudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpmsudo yum-config-manager --enable remi-php72

Setelah repositori diaktifkan untuk menginstal PHP 7.2 dan semua ekstensi PHP yang diperlukan, jalankan perintah berikut:

sudo yum install php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl git

Kami menginstal PHP FPM karena kami akan menggunakan Nginx sebagai server web.

Secara default PHP FPM akan berjalan sebagai pengguna apache pada port 9000. Kami akan mengubah pengguna menjadi nginx dan beralih dari soket TCP ke soket Unix. Untuk melakukannya buka /etc/php-fpm.d/www.conf file dan edit baris yang disorot dengan warna kuning:

/etc/php-fpm.d/www.conf
...
user = nginx
...
group = nginx
...
listen = /run/php-fpm/www.sock
...
listen.owner = nginx
listen.group = nginx

Pastikan /var/lib/php direktori memiliki kepemilikan yang benar menggunakan perintah chown berikut:

sudo chown -R root:nginx /var/lib/php

Terakhir, aktifkan dan mulai layanan PHP FPM:

sudo systemctl enable php-fpmsudo systemctl start php-fpm

Instal Komposer #

Komposer adalah manajer ketergantungan untuk PHP. Kami akan mengunduh template Drupal dan menginstal semua komponen Drupal yang diperlukan dengan composer.

Perintah berikut akan menginstal composerglobally dengan mendownload installer 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 menjalankan perintah berikut yang akan mencetak versi komposer:

composer --version

Outputnya akan terlihat seperti ini:

Composer version 1.8.4 2019-02-11 10:52:10

Instal Drupal #

Sekarang komposer telah diinstal, buat proyek Drupal baru menggunakan template Drupal di dalam /var/www/my_drupal direktori:

sudo /usr/local/bin/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 skrip yang diperlukan untuk menyiapkan proyek untuk instalasi. Prosesnya mungkin memakan waktu beberapa menit dan jika berhasil akhir dari output akan terlihat seperti ini:

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 kami melewati database MySQL dan informasi pengguna yang kami buat di bagian pertama:

cd /var/www/my_drupalsudo 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.
[success] Installation complete.  User name: admin  User password: frxka2Db5v

Terakhir, atur izin yang benar sehingga server web dapat memiliki akses penuh ke file dan direktori situs:

sudo chown -R nginx: /var/www/my_drupal

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/conf.d/example.com
/etc/nginx/conf.d/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-fpm/www.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.

Sebelum memulai ulang layanan Nginx, lakukan tes untuk memastikan tidak ada kesalahan sintaks:

sudo nginx -t

Mulai ulang layanan Nginx agar perubahan diterapkan dengan mengetik:

sudo systemctl restart nginx

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.

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:

cd /var/www/my_drupalsudo -u nginx /usr/local/bin/composer require drupal/pathauto
Dengan menambahkan sudo -u nginx kita menjalankan perintah sebagai pengguna nginx
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.

Perbarui Drupal Core #

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_drupalvendor/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 nginx /usr/local/bin/composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies

Cent OS
  1. Cara Menginstal PHP 7.4 / 7.3 / 7.2 di CentOS 7 / RHEL 7 &CentOS 6 / RHEL 6

  2. Cara Menginstal PHP 7.4 / 7.3 Pada CentOS 8 / RHEL 8

  3. Cara Menginstal PHP 5.5 di CentOS

  1. Cara Menginstal PHP 5.6 di CentOS 7

  2. Cara Menginstal PHP 7.3 di CentOS 8

  3. Cara Menginstal PHP 8 di CentOS 7

  1. Cara Menginstal PHP 8 di CentOS 8

  2. Cara Menginstal PHP 7.4 di CentOS 7

  3. Cara Menginstal PHP 7.2 di CentOS 7