Membuat template VPS dengan Drupal 9 bulan Centos 8

Kami terus memperluas pasar kami. Kami baru-baru ini berbicara tentang caranya membuat gambar Gitlab, dan minggu ini muncul di pasar kami Drupal.

Kami memberi tahu mengapa kami memilihnya dan bagaimana gambar itu dibuat.

Membuat template VPS dengan Drupal 9 bulan Centos 8

Drupal adalah platform yang nyaman dan kuat untuk membuat semua jenis situs: dari situs mikro dan blog hingga proyek sosial besar, yang juga digunakan sebagai dasar untuk aplikasi web, ditulis dalam PHP dan menggunakan database relasional sebagai penyimpanan data.

Drupal Versi 9 mencakup semua fitur yang diimplementasikan dalam versi 8.9. Perbedaan utama antara versi 9 dan versi 8 adalah platform akan terus menerima pembaruan dan patch keamanan setelah November 2021. Versi 9 juga menyederhanakan proses pembaruan, sehingga memudahkan peningkatan dari versi 8.

Persyaratan Server

Untuk digunakan Drupal Disarankan untuk menggunakan RAM 2 GB dan 2 inti CPU.

File utama Drupal Ruang penyimpanan yang dibutuhkan sekitar 100 MB, Anda juga memerlukan ruang untuk menyimpan gambar, basis data, tema, modul tambahan, dan cadangan, yang akan bergantung pada ukuran situs Anda.

Untuk Drupal 9 memerlukan PHP 7.4 atau lebih tinggi dengan batasan minimum (memory_limit) hingga memori 64 MB, jika menggunakan modul tambahan, disarankan untuk menginstal 128 MB.

Sebagai server web Drupal dapat menggunakan Apache atau Nginx, dan MySQL, PostgreSQL atau SQLite sebagai basis data.

Kami akan memasang Drupal menggunakan Nginx dan MySQL.

Instalasi

Perbarui paket yang diinstal ke versi terbaru:

sudo dnf update -y

Mari tambahkan izin permanen untuk lalu lintas masuk ke port http/80 dan https/443:

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

Terapkan aturan firewall baru:

sudo systemctl reload firewalld

Instal Nginx:

sudo dnf install nginx -y

Mari kita mulai dan aktifkan server Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Karena saat ini di repositori utama Centos PHP versi 7.2 digunakan, mari tambahkan repositori REMI dengan PHP 7.4 (versi minimum untuk Drupal 9).
Untuk melakukannya, tambahkan repositori EPEL (diperlukan oleh repositori REMI):

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Mari tambahkan repositori REMI:

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Aktifkan modul php:remi-7.4 untuk menginstal php 7.4:

sudo dnf module enable php:remi-7.4 -y

Instal php-fpm dan php-cli:

sudo dnf install -y php-fpm php-cli

Kami akan menginstal modul PHP yang dibutuhkan untuk pekerjaan ini. Drupal:

sudo dnf install -y php-mysqlnd php-date php-dom php-filter php-gd php-hash php-json php-pcre php-pdo php-session php-simplexml php-spl php-tokenizer php-xml

Kami juga akan menginstal modul PHP mbstring opcache yang direkomendasikan:

sudo dnf install -y php-mbstring php-opcache

Instal server MySQL:

sudo dnf install mysql-server -y

Aktifkan dan mulai server MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Karena kami membuat template untuk VDS, dan mungkin lambat, kami akan menambahkan penundaan mulai mysqld selama 30 detik, jika tidak, mungkin ada masalah saat memulai server saat boot sistem awal:

sudo sed -i '/Group=mysql/a 
ExecStartPre=/bin/sleep 30
' /usr/lib/systemd/system/mysqld.service

Mari kita ubah grup dan pengguna di mana nginx akan dijalankan dengan membuat perubahan pada /etc/php-fpm.d/www.conf:

sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf

Ubah pemilik direktori sesi PHP menjadi nginx:

sudo chown -R nginx. /var/lib/php/session

Mari kita hapus baris komentar dari file konfigurasi /etc/nginx/nginx.conf (agar tidak ada double hits untuk sed):

sudo sed -i -e '/^[ t]*#/d'  /etc/nginx/nginx.conf

Tambahkan pengaturan kompresi gzip ke /etc/nginx/nginx.conf

sudo sed -i '/types_hash_max_size 2048;/a 

    gzip on;
    gzip_static on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
    gzip_comp_level 9;
    gzip_proxied any;
    gzip_min_length 1000;
    gzip_disable "msie6";
    gzip_vary on; 
' /etc/nginx/nginx.conf

Mari tambahkan pengaturan file indeks index.php ke /etc/nginx/nginx.conf:

sudo sed -i '/        root         /usr/share/nginx/html;/a 
        index index.php index.html index.htm;
' /etc/nginx/nginx.conf

Mari tambahkan pengaturan untuk server default yang memproses php melalui soket php-fpm, nonaktifkan log untuk file statis, tambah waktu kedaluwarsa, nonaktifkan log akses dan kesalahan untuk favicon.ico dan robots.txt dan tolak akses ke file .ht untuk setiap orang:

sudo sed -i '/        location / {/a 
		try_files $uri $uri/ /index.php?q=$uri&$args;
        }
    
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
        access_log off;
        expires max;
        }
    
        location ~ .php$ {
        try_files  $uri =404;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        }
    
        location = /favicon.ico {
        log_not_found off;
        access_log off;
        }
    
        location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        }
    
        location ~ /.ht {
        deny all;' /etc/nginx/nginx.conf

Instal wget diperlukan untuk menginstal certbot:

sudo dnf install wget -y

Unduh file certbot yang dapat dieksekusi dari luar situs:

cd ~
wget https://dl.eff.org/certbot-auto

Pindahkan certbot ke /usr/local/bin/:

mv certbot-auto /usr/local/bin/certbot-auto

Dan tetapkan hak dan kepemilikan ke root:

chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Instal dependensi certbot dan hentikan pada tahap ini (Jawaban: Y, c):

certbot-auto

Unduh arsip dengan versi terbaru dari situs web resmi. Drupal 9:

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

Instal tar untuk membongkar arsip:

sudo dnf install tar -y

Hapus file default di direktori /usr/share/nginx/html/:

rm -rf /usr/share/nginx/html/*

Buka zip file ke direktori server web:

tar xf tar.gz -C /usr/share/nginx/html/

Pindahkan file dari subdirektori ke direktori root server web:

mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/

Hapus subdirektori:

rm -rf /usr/share/nginx/html/drupal-9.0.7

Hapus arsip dengan file instalasi:

rm -f ./tar.gz

Tetapkan pemilik file nginx:

chown -R nginx. /usr/share/nginx/html

Pada tahap ini, kami akan mematikan server dan mengambil snapshot:

shutdown -h now

Setelah memulai VDS dari snapshot, kami akan melakukan pengaturan awal server MySQL dengan menjalankan skrip:

mysql_secure_installation

Aktifkan validator kata sandi:

Would you like to setup VALIDATE PASSWORD component? : y

Tetapkan kata sandi pengguna root MySQL:

New password:
Re-enter new password:

Hapus pengguna anonim:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Mari kita cegah root terhubung dari jarak jauh:

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Mari kita hapus database pengujian:

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Muat ulang tabel hak istimewa:

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Setelah itu, untuk menyelesaikan instalasi, kita bisa masuk ke vps_ip_address
Di alamat ini kita akan melihat halaman instalasi. Drupal.

Pilih bahasa yang akan digunakan. Misalnya: Rusia. Klik "Simpan dan Lanjutkan"

Mari pilih profil instalasi (demo hanya digunakan untuk pengenalan sistem). Dalam kasus kami, biarlah itu menjadi "standar".

Pada halaman berikutnya, beri nama database, misalnya "drupal". Tentukan nama pengguna database root dan kata sandi yang diberikan kepadanya saat memulai mysql_secure_installation. Klik "Simpan dan Lanjutkan".

Mari kita tunggu hingga instalasi dan pembaruan terjemahan selesai (prosesnya mungkin memakan waktu beberapa menit).

Kami akan mencantumkan nama situs, mengatur email situs (dari mana notifikasi situs akan dikirim), login, kata sandi, dan email akun administrator. DrupalKita juga akan mengatur negara dan zona waktu di pengaturan regional. Kemudian, selesaikan instalasi dengan mengklik "Simpan dan Lanjutkan."

Setelah itu, Anda dapat masuk ke panel kontrol menggunakan nama pengguna dan kata sandi administrator yang telah dibuat. Drupal.

Pengaturan HTTPS (opsional)

Untuk mengkonfigurasi HTTPS, VDS harus memiliki nama DNS yang valid, tentukan di

/etc/nginx/nginx.conf

di bagian server nama server (misalnya):

server_name  domainname.ru;

Mulai ulang nginx:

service nginx restart

Mari kita mulai certbot:

sudo /usr/local/bin/certbot-auto --nginx

Masukkan email Anda, setujui persyaratan layanan (A), Berlangganan buletin (opsional) (N), pilih nama domain yang ingin Anda terbitkan sertifikatnya (Masuk untuk semua).

Jika semuanya berjalan tanpa kesalahan, kita akan melihat pesan tentang keberhasilan penerbitan sertifikat dan pengaturan server:

Congratulations! You have successfully enabled ...

Setelah itu koneksi pada port 80 akan dialihkan ke 443 (https).

Tambahkan ke /etc/crontab untuk memperbarui sertifikat secara otomatis:

# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"

Menyiapkan Keamanan Host Tepercaya (disarankan)

Setting ini dimaksudkan sebagai solusi masalah pendeteksian base_url dinamis, dan dimaksudkan untuk mencegah serangan HTTP HOST Header (bila situs Anda mengira itu adalah orang lain).

Untuk melakukan ini, Anda perlu menentukan nama domain tepercaya situs tersebut di file pengaturan.

Dalam file

/usr/share/nginx/html/sites/default/settings.php hapus komentar atau tambahkan pengaturan dengan pola nama situs sebenarnya, misalnya:

$settings['trusted_host_patterns'] = [
  '^www.mydomain.ru$',
];

Menginstal PHP APCu (DIANJURKAN)

Drupal Mendukung APCu (Alternative PHP User Cache). Versi 8 dan 9 memanfaatkan APCu secara lebih intensif sebagai cache lokal jangka pendek dibandingkan versi sebelumnya. Ukuran cache default (32 MB) cocok untuk sebagian besar situs dan tidak dapat melebihi 512 MB.

Untuk mengaktifkan, instal modul PHP APCu:

dnf -y install php-pecl-apcu

Mulai ulang nginx dan php-fpm:

service nginx restart
service php-fpm restart

Jika menggunakan bahasa Rusia dan APCu dengan ukuran memori cache yang disarankan, Anda dapat melihat peringatan di panel kontrol bahwa ukuran memori cache yang dialokasikan berbeda dari yang disarankan, tetapi sebenarnya semuanya berfungsi dengan benar, dan yang salah peringatan kemungkinan besar akan diperbaiki di pembaruan berikutnya.

Atau jika peringatannya menyakiti mata, Anda bisa menggunakannya patch yang sesuai dari luar lokasi.

Kami ingin mengingatkan Anda bahwa Anda juga dapat membuatkan gambar untuk kami

Ada tiga pilihan cara berpartisipasi.

Siapkan gambarnya sendiri dan dapatkan 3000 rubel di saldo Anda

Jika Anda siap untuk segera berperang dan menciptakan citra diri Anda yang kurang, kami akan mengkreditkan Anda 3000 rubel ke saldo internal Anda - Anda dapat membelanjakannya di server.

Cara membuat gambar Anda:

  1. Buat akun dengan kami Online
  2. Beri tahu dukungan bahwa Anda akan membuat dan menguji gambar
  3. Kami akan memberi Anda kredit 3000 rubel dan mengaktifkan kemampuan untuk membuat snapshot
  4. Pesan server virtual dengan sistem operasi yang bersih
  5. Instal perangkat lunak pada VPS ini dan atur
  6. Tulis instruksi atau skrip untuk penerapan perangkat lunak
  7. Buat snapshot untuk server yang dikonfigurasi
  8. Pesan server virtual baru dengan memilih snapshot yang dibuat sebelumnya di daftar drop-down "Templat server".
  9. Jika pembuatan server berhasil, transfer materi yang diterima pada langkah 6 ke dukungan teknis
  10. Jika terjadi kesalahan, Anda dapat memeriksa alasannya dengan dukungan dan mengulangi pengaturan

Untuk pemilik bisnis: tawarkan perangkat lunak Anda

Jika Anda seorang pengembang perangkat lunak yang dikerahkan dan digunakan pada VPS, maka kami dapat memasukkan Anda ke dalam pasar. Inilah cara kami membantu Anda mendatangkan pelanggan, lalu lintas, dan visibilitas baru. Menulis kepada kami

Beri tahu kami di kolom komentar gambar apa yang Anda lewatkan?

Dan kami akan mempersiapkannya sendiri

Membuat template VPS dengan Drupal 9 bulan Centos 8

Membuat template VPS dengan Drupal 9 bulan Centos 8

Sumber: www.habr.com

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster