Δημιουργία προτύπου VPS με το Drupal 9 στο Centos 8

Συνεχίζουμε να επεκτείνουμε την αγορά μας. Πρόσφατα σας είπαμε πώς έκανε μια εικόνα Gitlab, και αυτή την εβδομάδα το Drupal εμφανίστηκε στην αγορά μας.

Σας λέμε γιατί τον επιλέξαμε και πώς δημιουργήθηκε η εικόνα.

Δημιουργία προτύπου VPS με το Drupal 9 στο Centos 8

Drupal — μια βολική και ισχυρή πλατφόρμα για τη δημιουργία οποιουδήποτε τύπου ιστότοπου: από μικροιστοτόπους και ιστολόγια έως μεγάλα κοινωνικά έργα, που χρησιμοποιείται επίσης ως βάση για διαδικτυακές εφαρμογές, γραμμένες σε PHP και χρησιμοποιώντας σχεσιακές βάσεις δεδομένων ως αποθήκευση δεδομένων.

Το Drupal 9 περιλαμβάνει όλα τα χαρακτηριστικά που εισήχθησαν στην έκδοση 8.9. Η βασική διαφορά μεταξύ της έκδοσης 9 και της έκδοσης 8 είναι ότι η πλατφόρμα θα συνεχίσει να λαμβάνει ενημερώσεις και επιδιορθώσεις ασφαλείας μετά τον Νοέμβριο του 2021. Η έκδοση 9 απλοποιεί επίσης τη διαδικασία ενημέρωσης, κάνοντας τη διαδικασία αναβάθμισης από την έκδοση 8 ακόμα πιο εύκολη.

Απαιτήσεις διακομιστή

Για να χρησιμοποιήσετε το Drupal, συνιστάται η χρήση 2 GB RAM και 2 πυρήνων CPU.

Τα κύρια αρχεία Drupal καταλαμβάνουν περίπου 100 MB, επιπλέον θα χρειαστείτε χώρο για την αποθήκευση εικόνων, βάσης δεδομένων, θεμάτων, πρόσθετων λειτουργικών μονάδων και αντιγράφων ασφαλείας, τα οποία θα εξαρτηθούν από το μέγεθος του ιστότοπού σας.

Το Drupal 9 απαιτεί PHP 7.4 ή νεότερη έκδοση με ελάχιστο περιορισμό (memory_limit) για μνήμη 64 MB, εάν χρησιμοποιούνται πρόσθετες μονάδες, συνιστάται η εγκατάσταση 128 MB.

Το Drupal μπορεί να χρησιμοποιήσει το Apache ή το Nginx ως διακομιστή ιστού και τα MySQL, PostgreSQL ή SQLite ως βάση δεδομένων.

Θα εγκαταστήσουμε το Drupal χρησιμοποιώντας Nginx και MySQL.

Εγκατάσταση

Ας ενημερώσουμε τα εγκατεστημένα πακέτα στην πιο πρόσφατη έκδοση:

sudo dnf update -y

Ας προσθέσουμε μόνιμη άδεια για την εισερχόμενη επισκεψιμότητα στις θύρες http/80 και https/443:

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

Ας εφαρμόσουμε τους νέους κανόνες του τείχους προστασίας:

sudo systemctl reload firewalld

Ας εγκαταστήσουμε το Nginx:

sudo dnf install nginx -y

Ας ξεκινήσουμε και ας ενεργοποιήσουμε τον διακομιστή Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Εφόσον το κύριο αποθετήριο Centos χρησιμοποιεί αυτήν τη στιγμή PHP 7.2, ας προσθέσουμε ένα αποθετήριο REMI με PHP 7.4 (ελάχιστη έκδοση για το Drupal 9).
Για να το κάνετε αυτό, προσθέστε το αποθετήριο EPEL (απαιτείται από το αποθετήριο REMI):

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

Ας προσθέσουμε το αποθετήριο REMI:

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

Ας ενεργοποιήσουμε τη λειτουργική μονάδα php:remi-7.4 για να εγκαταστήσει το php 7.4:

sudo dnf module enable php:remi-7.4 -y

Εγκαταστήστε τα php-fpm και php-cli:

sudo dnf install -y php-fpm php-cli

Ας εγκαταστήσουμε τις μονάδες PHP που απαιτούνται για να λειτουργήσει το 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

Θα εγκαταστήσουμε επίσης τις προτεινόμενες μονάδες opcache mbstring PHP:

sudo dnf install -y php-mbstring php-opcache

Ας εγκαταστήσουμε τον διακομιστή MySQL:

sudo dnf install mysql-server -y

Ας ενεργοποιήσουμε και ας ξεκινήσουμε τον διακομιστή MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Δεδομένου ότι φτιάχνουμε ένα πρότυπο για VDS και μπορεί να είναι αργά, θα προσθέσουμε μια καθυστέρηση έναρξης mysqld 30 δευτερολέπτων, διαφορετικά μπορεί να υπάρχουν προβλήματα με την εκκίνηση του διακομιστή κατά την αρχική εκκίνηση του συστήματος:

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

Ας αλλάξουμε την ομάδα και τον χρήστη κάτω από τον οποίο θα εκτελείται το nginx κάνοντας αλλαγές στο /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

Ας αλλάξουμε τον κάτοχο του καταλόγου συνεδριών PHP σε nginx ανάλογα:

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

Ας αφαιρέσουμε τις γραμμές με σχόλια από το αρχείο διαμόρφωσης /etc/nginx/nginx.conf (έτσι ώστε να μην υπάρχουν διπλοί ερεθισμοί για το sed):

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

Προσθέστε ρυθμίσεις συμπίεσης gzip στο /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

Ας προσθέσουμε τις ρυθμίσεις του αρχείου ευρετηρίου index.php στο /etc/nginx/nginx.conf:

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

Ας προσθέσουμε ρυθμίσεις για τον προεπιλεγμένο διακομιστή: επεξεργασία PHP μέσω της υποδοχής php-fpm, απενεργοποίηση του αρχείου καταγραφής για στατικά αρχεία, αύξηση του χρόνου λήξης, απενεργοποίηση του αρχείου καταγραφής πρόσβασης και σφαλμάτων για το favicon.ico και το robots.txt και άρνηση πρόσβασης στο .ht αρχεία για όλους:

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

Εγκαταστήστε το wget που απαιτείται για την εγκατάσταση του certbot:

sudo dnf install wget -y

Κατεβάστε το εκτελέσιμο αρχείο certbot από το offsite:

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

Μετακίνηση του certbot στο /usr/local/bin/:

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

Και ας εκχωρήσουμε τα δικαιώματα ως κατόχου για root:

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

Ας εγκαταστήσουμε τις εξαρτήσεις certbot και σε αυτό το στάδιο διακόψουμε την εργασία του (Απαντήσεις: Y, c):

certbot-auto

Ας κατεβάσουμε το αρχείο με την πιο πρόσφατη έκδοση του Drupal 9 από το offsite:

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

Εγκαταστήστε το tar για να αποσυσκευάσετε το αρχείο:

sudo dnf install tar -y

Ας διαγράψουμε τα προεπιλεγμένα αρχεία στον κατάλογο /usr/share/nginx/html/:

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

Ας αποσυμπιέσουμε τα αρχεία στον κατάλογο του διακομιστή web:

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

Ας μετακινήσουμε τα αρχεία από τον υποκατάλογο στον ριζικό κατάλογο του διακομιστή web:

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

Ας διαγράψουμε τον υποκατάλογο:

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

Ας διαγράψουμε το αρχείο με τα αρχεία εγκατάστασης:

rm -f ./tar.gz

Ας εκχωρήσουμε τον κάτοχο των αρχείων nginx:

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

Σε αυτό το στάδιο θα απενεργοποιήσουμε τον διακομιστή και θα τραβήξουμε ένα στιγμιότυπο:

shutdown -h now

Μετά την εκκίνηση του VDS από το στιγμιότυπο, θα εκτελέσουμε την αρχική εγκατάσταση του διακομιστή MySQL εκτελώντας το σενάριο:

mysql_secure_installation

Ας ενεργοποιήσουμε το εργαλείο επικύρωσης κωδικού πρόσβασης:

Would you like to setup VALIDATE PASSWORD component? : y

Ας ορίσουμε τον κωδικό πρόσβασης χρήστη root MySQL:

New password:
Re-enter new password:

Ας αφαιρέσουμε τους ανώνυμους χρήστες:

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

Ας αποτρέψουμε την απομακρυσμένη σύνδεση του root:

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

Ας διαγράψουμε τη βάση δεδομένων δοκιμής:

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

Ας φορτώσουμε ξανά τους πίνακες προνομίων:

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

Μετά από αυτό, για να ολοκληρώσουμε την εγκατάσταση, μπορούμε να πάμε στο vps_ip_address
Σε αυτή τη διεύθυνση θα δούμε τη σελίδα εγκατάστασης του Drupal.

Ας επιλέξουμε τη γλώσσα που θα χρησιμοποιήσουμε. Για παράδειγμα: ρωσικά. Κάντε κλικ στο "Αποθήκευση και Συνέχεια"

Ας επιλέξουμε ένα προφίλ εγκατάστασης (η επίδειξη χρησιμοποιείται αποκλειστικά για εξοικείωση με το σύστημα). Στην περίπτωσή μας, ας είναι «στάνταρ».

Στην επόμενη σελίδα θα δώσουμε ένα όνομα στη βάση δεδομένων, για παράδειγμα “drupal”. Ας υποδείξουμε το όνομα χρήστη της βάσης δεδομένων root και τον κωδικό πρόσβασης που του δόθηκε κατά την εκτέλεση του mysql_secure_installation. Κάντε κλικ στο «Αποθήκευση και Συνέχεια».

Ας περιμένουμε να ολοκληρωθεί η εγκατάσταση και η ενημέρωση των μεταφράσεων (η διαδικασία μπορεί να διαρκέσει αρκετά λεπτά).

Θα υποδείξουμε το όνομα του ιστότοπου, θα ορίσουμε το email του ιστότοπου (εκ μέρους του οποίου θα αποστέλλονται ειδοποιήσεις ιστότοπου), τη σύνδεση, τον κωδικό πρόσβασης και το email του λογαριασμού διαχειριστή του Drupal. Θα ορίσουμε επίσης τη χώρα και τη ζώνη ώρας στις τοπικές ρυθμίσεις. Και ολοκληρώστε την εγκατάσταση κάνοντας κλικ στο "Αποθήκευση και Συνέχεια".

Μετά από αυτό, μπορείτε να μεταβείτε στον πίνακα ελέγχου με τα δημιουργημένα στοιχεία σύνδεσης και κωδικό πρόσβασης διαχειριστή του Drupal.

Ρύθμιση HTTPS (προαιρετικό)

Για να ρυθμίσετε τις παραμέτρους του HTTPS, το VDS πρέπει να έχει ένα έγκυρο όνομα DNS, προσδιορίστε το

/etc/nginx/nginx.conf

στην ενότητα διακομιστή το όνομα διακομιστή (για παράδειγμα):

server_name  domainname.ru;

Ας επανεκκινήσουμε το nginx:

service nginx restart

Ας ξεκινήσουμε το certbot:

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

Εισαγάγετε το e-mail σας, συμφωνήστε με τους όρους παροχής υπηρεσιών (Α), Εγγραφείτε στο ενημερωτικό δελτίο (προαιρετικό) (Ν), επιλέξτε τα ονόματα τομέα για τα οποία θέλετε να εκδώσετε πιστοποιητικό (Enter για όλους).

Εάν όλα πήγαν χωρίς σφάλματα, θα δούμε ένα μήνυμα σχετικά με την επιτυχή έκδοση πιστοποιητικών και τη διαμόρφωση διακομιστή:

Congratulations! You have successfully enabled ...

Μετά από αυτό, οι συνδέσεις στη θύρα 80 θα ανακατευθυνθούν στο 443 (https).

Προσθήκη στο /etc/crontab για αυτόματη ενημέρωση των πιστοποιητικών:

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

Ρύθμιση ασφάλειας αξιόπιστου κεντρικού υπολογιστή (συνιστάται)

Αυτή η ρύθμιση προορίζεται ως λύση στο πρόβλημα που σχετίζεται με τον δυναμικό προσδιορισμό βάσης_url και έχει σχεδιαστεί για να αποτρέπει επιθέσεις κεφαλίδας HTTP HOST (όταν ο ιστότοπός σας πιστεύει ότι είναι κάποιος άλλος).

Για να το κάνετε αυτό, πρέπει να καθορίσετε αξιόπιστα ονόματα τομέα για τον ιστότοπο στο αρχείο ρυθμίσεων.

Στο αρχείο

/usr/share/nginx/html/sites/default/settings.php Ας αφαιρέσουμε το σχόλιο ή ας προσθέσουμε μια ρύθμιση με μοτίβα πραγματικών ονομάτων τοποθεσιών, για παράδειγμα:

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

Εγκατάσταση PHP APCu (ΣΥΝΙΣΤΑΤΑΙ)

Το Drupal υποστηρίζει APCu - Εναλλακτική κρυφή μνήμη χρήστη PHP, οι εκδόσεις 8 και 9 κάνουν μεγαλύτερη χρήση του APCu ως βραχυπρόθεσμης τοπικής μνήμης cache από τις προηγούμενες εκδόσεις. Το προεπιλεγμένο μέγεθος προσωρινής μνήμης (32 MB) είναι κατάλληλο για τους περισσότερους ιστότοπους και δεν μπορεί να υπερβαίνει τα 512 MB.

Για ενεργοποίηση, εγκαταστήστε τη λειτουργική μονάδα PHP APCu:

dnf -y install php-pecl-apcu

Επανεκκινήστε το nginx και το php-fpm:

service nginx restart
service php-fpm restart

Εάν χρησιμοποιείτε τη ρωσική γλώσσα και το APCu με το προτεινόμενο μέγεθος μνήμης για τη μνήμη cache, ενδέχεται να δείτε μια προειδοποίηση στον πίνακα ελέγχου ότι το μέγεθος της εκχωρημένης μνήμης για τη μνήμη cache είναι διαφορετικό από το προτεινόμενο, αλλά στην πραγματικότητα όλα λειτουργούν σωστά, και η λανθασμένη προειδοποίηση πιθανότατα θα διορθωθεί στις επόμενες ενημερώσεις.

Ή εάν η προειδοποίηση βλάπτει τα μάτια σας, μπορείτε να χρησιμοποιήσετε αντίστοιχο patch από offsite.

Θα θέλαμε να σας υπενθυμίσουμε ότι μπορείτε επίσης να φτιάξετε μια εικόνα για εμάς

Υπάρχουν τρεις επιλογές για τον τρόπο συμμετοχής.

Προετοιμάστε την εικόνα μόνοι σας και λάβετε 3000 ρούβλια στο υπόλοιπό σας

Εάν είστε έτοιμοι να βιαστείτε αμέσως στη μάχη και να δημιουργήσετε την εικόνα που σας λείπει, θα σας πιστώσουμε με 3000 ρούβλια στο εσωτερικό σας υπόλοιπο, τα οποία μπορείτε να ξοδέψετε σε διακομιστές.

Πώς να δημιουργήσετε τη δική σας εικόνα:

  1. Δημιουργήστε έναν λογαριασμό μαζί μας στο Σε απευθείας σύνδεση
  2. Ενημερώστε την υποστήριξη ότι πρόκειται να δημιουργήσετε και να δοκιμάσετε εικόνες
  3. Θα σας πιστώσουμε 3000 ρούβλια και θα ενεργοποιήσουμε τη δυνατότητα δημιουργίας στιγμιότυπων
  4. Παραγγείλετε έναν εικονικό διακομιστή με καθαρό λειτουργικό σύστημα
  5. Εγκαταστήστε το λογισμικό σε αυτό το VPS και διαμορφώστε το
  6. Γράψτε οδηγίες ή σενάριο για την ανάπτυξη λογισμικού
  7. Δημιουργήστε ένα στιγμιότυπο για τον διαμορφωμένο διακομιστή
  8. Παραγγείλετε έναν νέο εικονικό διακομιστή επιλέγοντας το στιγμιότυπο που δημιουργήθηκε προηγουμένως στην αναπτυσσόμενη λίστα "Πρότυπο διακομιστή"
  9. Εάν ο διακομιστής δημιουργηθεί με επιτυχία, μεταφέρετε τα υλικά που ελήφθησαν στο στάδιο 6 στην τεχνική υποστήριξη
  10. Εάν υπάρχει σφάλμα, μπορείτε να ελέγξετε με υποστήριξη για τον λόγο και να επαναλάβετε τη ρύθμιση

Για ιδιοκτήτες επιχειρήσεων: προσφέρετε το λογισμικό σας

Εάν είστε προγραμματιστής λογισμικού που αναπτύσσεται και χρησιμοποιείται σε VPS, τότε μπορούμε να σας συμπεριλάβουμε στην αγορά. Με αυτόν τον τρόπο μπορούμε να σας βοηθήσουμε να προσελκύσετε νέους πελάτες, επισκεψιμότητα και ευαισθητοποίηση. Γράψτε μας

Πείτε μας στα σχόλια ποια εικόνα σας λείπει;

Και θα το ετοιμάσουμε μόνοι μας

Δημιουργία προτύπου VPS με το Drupal 9 στο Centos 8

Δημιουργία προτύπου VPS με το Drupal 9 στο Centos 8

Πηγή: www.habr.com