Centos 9'de Drupal 8 ile VPS Şablonu Oluşturma

Pazar yerimizi genişletmeye devam ediyoruz. Geçenlerde size nasıl olduğunu anlattık Gitlab görüntüsü oluşturduve bu hafta Drupal pazarımızda göründü.

Neden onu seçtiğimizi ve imajın nasıl yaratıldığını anlatıyoruz.

Centos 9'de Drupal 8 ile VPS Şablonu Oluşturma

Drupal — her türlü web sitesini oluşturmak için kullanışlı ve güçlü bir platform: mikro sitelerden ve bloglardan büyük sosyal projelere kadar, aynı zamanda web uygulamalarının temeli olarak da kullanılır, PHP ile yazılır ve ilişkisel veritabanlarını veri depolama olarak kullanır.

Drupal 9, 8.9 sürümünde tanıtılan tüm özellikleri içerir. Sürüm 9 ile sürüm 8 arasındaki temel fark, platformun Kasım 2021'den sonra güncellemeleri ve güvenlik düzeltmelerini almaya devam edecek olmasıdır. Sürüm 9 ayrıca güncelleme sürecini basitleştirerek sürüm 8'den yükseltme işlemini daha da kolay hale getirir.

Sunucu Gereksinimleri

Drupal'ı kullanmak için 2 GB RAM ve 2 CPU çekirdeği kullanılması tavsiye edilir.

Ana Drupal dosyaları yaklaşık 100 MB yer kaplar; ayrıca sitenizin boyutuna bağlı olarak görselleri, veritabanını, temaları, ek modülleri ve yedeklemeleri depolamak için alana ihtiyacınız olacaktır.

Drupal 9, minimum sınırlamayla PHP 7.4 veya üstünü gerektirir (memory_limit) 64 MB bellek için; ek modüller kullanılıyorsa 128 MB takılması önerilir.

Drupal, Apache veya Nginx'i web sunucusu olarak ve MySQL, PostgreSQL veya SQLite'ı veritabanı olarak kullanabilir.

Drupal'ı Nginx ve MySQL kullanarak kuracağız.

Montaj

Kurulu paketleri en son sürüme güncelleyelim:

sudo dnf update -y

http/80 ve https/443 bağlantı noktalarına gelen trafik için kalıcı izin ekleyelim:

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

Yeni güvenlik duvarı kurallarını uygulayalım:

sudo systemctl reload firewalld

Nginx'i kuralım:

sudo dnf install nginx -y

Nginx sunucusunu başlatıp etkinleştirelim:

sudo systemctl start nginx
sudo systemctl enable nginx

Ana Centos deposu şu anda PHP 7.2 kullandığından, PHP 7.4 (Drupal 9 için minimum sürüm) içeren bir REMI deposu ekleyelim.
Bunu yapmak için EPEL deposunu ekleyin (REMI deposu için gereklidir):

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

REMI deposunu ekleyelim:

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

Php 7.4 kurulumu için php:remi-7.4 modülünü etkinleştirelim:

sudo dnf module enable php:remi-7.4 -y

Php-fpm ve php-cli'yi yükleyin:

sudo dnf install -y php-fpm php-cli

Drupal'ın çalışması için gerekli PHP modüllerini kuralım:

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

Ayrıca önerilen PHP mbstring opcache modüllerini de kuracağız:

sudo dnf install -y php-mbstring php-opcache

MySQL sunucusunu kuralım:

sudo dnf install mysql-server -y

MySQL sunucusunu açıp başlatalım:

sudo systemctl start mysqld
sudo systemctl enable mysqld

VDS için bir şablon oluşturduğumuzdan ve yavaş olabileceğinden, 30 saniyelik bir mysqld başlatma gecikmesi ekleyeceğiz, aksi takdirde ilk sistem önyüklemesi sırasında sunucunun başlatılmasında sorunlar yaşanabilir:

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

/etc/php-fpm.d/www.conf dosyasında değişiklik yaparak nginx'in çalışacağı grubu ve kullanıcıyı değiştirelim:

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

Buna göre PHP oturum dizininin sahibini nginx olarak değiştirelim:

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

/etc/nginx/nginx.conf yapılandırma dosyasından yorum içeren satırları kaldıralım (böylece sed için çift tetikleyici olmaz):

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

Gzip sıkıştırma ayarlarını /etc/nginx/nginx.conf dosyasına ekleyin

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

İndeks.php indeks dosyasının ayarlarını /etc/nginx/nginx.conf'a ekleyelim:

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

Varsayılan sunucu için ayarları ekleyelim: php-fpm soketi aracılığıyla PHP işleme, statik dosyalar için günlüğü devre dışı bırakın, son kullanma süresini artırın, favicon.ico ve robots.txt için erişim ve hata günlüğünü devre dışı bırakın ve .ht'ye erişimi reddedin. herkes için dosyalar:

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

Certbot'u yüklemek için gereken wget'i yükleyin:

sudo dnf install wget -y

Certbot yürütülebilir dosyasını site dışından indirin:

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

Sertifika robotunu /usr/local/bin/ dizinine taşıyın:

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

Ve sahip olarak hakları root'a atayalım:

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

Sertifika robotu bağımlılıklarını kuralım ve bu aşamada çalışmasını keselim (Cevaplar: Y, c):

certbot-auto

Drupal 9'un en son sürümünü içeren arşivi site dışından indirelim:

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

Arşivi açmak için tar'ı yükleyin:

sudo dnf install tar -y

/usr/share/nginx/html/ dizinindeki varsayılan dosyaları silelim:

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

Dosyaları web sunucusu dizinine açalım:

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

Dosyaları alt dizinden web sunucusunun kök dizinine taşıyalım:

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

Alt dizini silelim:

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

Kurulum dosyalarının bulunduğu arşivi silelim:

rm -f ./tar.gz

Nginx dosyalarının sahibini atayalım:

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

Bu aşamada sunucuyu kapatıp anlık görüntü alacağız:

shutdown -h now

Anlık görüntüden VDS'yi başlattıktan sonra, betiği çalıştırarak MySQL sunucusunun ilk kurulumunu gerçekleştireceğiz:

mysql_secure_installation

Şifre doğrulayıcıyı etkinleştirelim:

Would you like to setup VALIDATE PASSWORD component? : y

MySQL root kullanıcısının şifresini ayarlayalım:

New password:
Re-enter new password:

Anonim kullanıcıları kaldıralım:

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

Root'un uzaktan bağlanmasını önleyelim:

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

Test veritabanını silelim:

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

Ayrıcalık tablolarını yeniden yükleyelim:

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

Bundan sonra kurulumu tamamlamak için şu adrese gidebiliriz: vps_ip_adresi
Bu adreste Drupal kurulum sayfasını göreceğiz.

Kullanacağımız dili seçelim. Örneğin: Rusça. “Kaydet ve Devam Et”e tıklayın

Bir kurulum profili seçelim (demo yalnızca sistemi tanımak için kullanılır). Bizim durumumuzda “standart” olsun.

Bir sonraki sayfada veritabanına bir isim vereceğiz örneğin “drupal”. mysql_secure_installation çalıştırırken veritabanı kullanıcı adı root ve kendisine verilen şifreyi belirtelim. “Kaydet ve Devam Et”i tıklayın.

Çevirilerin kurulumunun ve güncellemesinin tamamlanmasını bekleyelim (işlem birkaç dakika sürebilir).

Sitenin adını belirteceğiz, site e-postasını (hangi site bildirimlerinin gönderileceği adına), kullanıcı adını, şifreyi ve Drupal yönetici hesabının e-postasını ayarlayacağız. Ayrıca bölgesel ayarlarda ülkeyi ve saat dilimini de ayarlayacağız. Ve “Kaydet ve Devam Et” butonuna tıklayarak kurulumu tamamlayın.

Bundan sonra oluşturulan Drupal yönetici kullanıcı adı ve şifresi ile kontrol paneline gidebilirsiniz.

HTTPS'yi ayarlama (isteğe bağlı)

HTTPS'yi yapılandırmak için VDS'nin geçerli bir DNS adına sahip olması gerekir;

/etc/nginx/nginx.conf

sunucu bölümünde sunucu adı (örneğin):

server_name  domainname.ru;

Nginx'i yeniden başlatalım:

service nginx restart

Certbot'u başlatalım:

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

E-postanızı girin, hizmet şartlarını kabul edin (A), Bültene abone olun (isteğe bağlı) (N), sertifika vermek istediğiniz alan adlarını seçin (Herkes için girin).

Her şey hatasız giderse, sertifikaların ve sunucu yapılandırmasının başarıyla verildiğine dair bir mesaj göreceğiz:

Congratulations! You have successfully enabled ...

Bundan sonra 80 numaralı bağlantı noktasına yapılan bağlantılar 443'e (https) yönlendirilecektir.

Sertifikaları otomatik olarak güncellemek için /etc/crontab dosyasına ekleyin:

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

Güvenilir Ana Bilgisayar Güvenliğini Ayarlama (önerilir)

Bu ayar, dinamik base_url belirlemeyle ilgili soruna bir çözüm olarak tasarlanmıştır ve HTTP HOST Başlığı saldırılarını (siteniz başka biri olduğunu düşündüğünde) önlemek için tasarlanmıştır.

Bunu yapmak için ayarlar dosyasında site için güvenilir alan adlarını belirtmeniz gerekir.

Dosyada

/usr/share/nginx/html/sites/default/settings.php Yorumları kaldıralım veya gerçek site adlarının kalıplarını içeren bir ayar ekleyelim, örneğin:

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

PHP APCu Kurulumu (ÖNERİLEN)

Drupal, APCu'yu destekler - Alternatif PHP Kullanıcı Önbelleği, sürüm 8 ve 9, APCu'yu kısa vadeli yerel önbellek olarak önceki sürümlere göre daha fazla kullanır. Varsayılan önbellek boyutu (32 MB) çoğu site için uygundur ve 512 MB'ı aşamaz.

Etkinleştirmek için PHP APCu modülünü yükleyin:

dnf -y install php-pecl-apcu

Nginx ve php-fpm'yi yeniden başlatın:

service nginx restart
service php-fpm restart

Önbellek için önerilen bellek boyutuna sahip Rusça dilini ve APCu'yu kullanırsanız, kontrol panelinde önbellek için ayrılan belleğin boyutunun önerilenden farklı olduğuna dair bir uyarı görebilirsiniz, ancak aslında her şey doğru çalışıyor, ve yanlış uyarı büyük olasılıkla sonraki güncellemelerde düzeltilecektir.

Veya uyarı gözlerinizi acıtıyorsa kullanabilirsiniz. tesis dışından ilgili yama.

Bizim için görsel de yapabileceğinizi hatırlatmak isteriz.

Nasıl katılacağınıza dair üç seçenek vardır.

Resmi kendiniz hazırlayın ve bakiyenize 3000 ruble kazanın

Hemen savaşa girmeye ve eksik olan imajı yaratmaya hazırsanız, sunucularda harcayabileceğiniz 3000 rubleyi dahili bakiyenize aktaracağız.

Kendi resminizi nasıl oluşturabilirsiniz:

  1. Bizimle bir hesap oluşturun web sitesi
  2. Destek ekibine görseller oluşturup test edeceğinizi bildirin
  3. Size 3000 ruble kredi vereceğiz ve anlık görüntüler oluşturma olanağını sağlayacağız
  4. Temiz bir işletim sistemine sahip bir sanal sunucu sipariş edin
  5. Yazılımı bu VPS'ye yükleyin ve yapılandırın
  6. Yazılım dağıtımı için talimatlar veya komut dosyası yazın
  7. Yapılandırılmış sunucu için anlık görüntü oluşturun
  8. "Sunucu şablonu" açılır listesinde önceden oluşturulan anlık görüntüyü seçerek yeni bir sanal sunucu sipariş edin
  9. Sunucu başarıyla oluşturulduysa 6. aşamada alınan malzemeleri teknik desteğe aktarın
  10. Bir hata varsa nedenini destek ekibine sorabilir ve kurulumu tekrarlayabilirsiniz.

İşletme sahipleri için: yazılımınızı sunun

VPS üzerinde konuşlandırılan ve kullanılan bir yazılım geliştiricisiyseniz sizi pazara dahil edebiliriz. Yeni müşteriler, trafik ve farkındalık getirmenize bu şekilde yardımcı olabiliriz. Bize yazın

Hangi resmi kaçırdığınızı yorumlarda bize bildirin.

Ve bunu kendimiz hazırlayacağız

Centos 9'de Drupal 8 ile VPS Şablonu Oluşturma

Centos 9'de Drupal 8 ile VPS Şablonu Oluşturma

Kaynak: habr.com