Mencipta Templat VPS dengan Drupal 9 pada Centos 8

Kami terus mengembangkan pasaran kami. Kami baru-baru ini memberitahu anda caranya membuat imej Gitlab, dan minggu ini Drupal muncul di pasaran kami.

Kami memberitahu anda mengapa kami memilih dia dan bagaimana imej itu dicipta.

Mencipta Templat VPS dengan Drupal 9 pada Centos 8

Drupal β€” platform yang mudah dan berkuasa untuk mencipta sebarang jenis tapak web: daripada tapak mikro dan blog kepada projek sosial yang besar, juga digunakan sebagai asas untuk aplikasi web, ditulis dalam PHP dan menggunakan pangkalan data hubungan sebagai penyimpanan data.

Drupal 9 merangkumi semua ciri yang diperkenalkan dalam versi 8.9. Perbezaan utama antara versi 9 dan versi 8 ialah platform akan terus menerima kemas kini dan pembetulan keselamatan selepas November 2021. Versi 9 juga memudahkan proses kemas kini, menjadikan proses naik taraf daripada versi 8 lebih mudah.

Keperluan pelayan

Untuk menggunakan Drupal, disyorkan untuk menggunakan 2 GB RAM dan 2 teras CPU.

Fail Drupal utama mengambil masa kira-kira 100 MB, selain itu anda memerlukan ruang untuk menyimpan imej, pangkalan data, tema, modul tambahan dan sandaran, yang bergantung pada saiz tapak anda.

Drupal 9 memerlukan PHP 7.4 atau lebih tinggi dengan had minimum (memory_limit) untuk memori 64 MB; jika modul tambahan digunakan, adalah disyorkan untuk memasang 128 MB.

Drupal boleh menggunakan Apache atau Nginx sebagai pelayan web, dan MySQL, PostgreSQL atau SQLite sebagai pangkalan data.

Kami akan memasang Drupal menggunakan Nginx dan MySQL.

Pemasangan

Mari kemas kini pakej yang dipasang kepada versi terkini:

sudo dnf update -y

Mari tambahkan kebenaran kekal untuk trafik masuk ke port http/80 dan https/443:

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

Mari gunakan peraturan tembok api baharu:

sudo systemctl reload firewalld

Mari pasang Nginx:

sudo dnf install nginx -y

Mari mulakan dan dayakan pelayan Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Memandangkan repositori Centos utama pada masa ini menggunakan PHP 7.2, mari tambahkan repositori REMI dengan PHP 7.4 (versi minimum untuk Drupal 9).
Untuk melakukan ini, 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

Mari dayakan modul php:remi-7.4 untuk memasang php 7.4:

sudo dnf module enable php:remi-7.4 -y

Pasang php-fpm dan php-cli:

sudo dnf install -y php-fpm php-cli

Mari pasang modul PHP yang diperlukan untuk Drupal berfungsi:

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 memasang modul opcache mbstring PHP yang disyorkan:

sudo dnf install -y php-mbstring php-opcache

Mari pasang pelayan MySQL:

sudo dnf install mysql-server -y

Mari hidupkan dan mulakan pelayan MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Memandangkan kami membuat templat untuk VDS, dan ia boleh menjadi perlahan, kami akan menambah kelewatan permulaan mysqld selama 30 saat, jika tidak, mungkin terdapat masalah dengan pelayan bermula semasa but sistem awal:

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

Mari kita ubah kumpulan 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

Mari tukar pemilik direktori sesi PHP kepada nginx dengan sewajarnya:

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

Mari kita keluarkan baris dengan ulasan daripada fail konfigurasi /etc/nginx/nginx.conf (supaya tiada pencetus berganda untuk sed):

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

Tambahkan tetapan mampatan gzip pada /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 tetapan fail 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 tambah tetapan untuk pelayan lalai: Pemprosesan PHP melalui soket php-fpm, lumpuhkan log untuk fail statik, tambah masa tamat tempoh, lumpuhkan akses dan log ralat untuk favicon.ico dan robots.txt, dan tolak akses kepada .ht fail untuk semua 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

Pasang wget diperlukan untuk memasang certbot:

sudo dnf install wget -y

Muat turun fail boleh laku certbot dari luar tapak:

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

Alihkan certbot ke /usr/local/bin/:

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

Dan mari kita berikan hak sebagai pemilik kepada root:

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

Mari pasang kebergantungan certbot dan pada peringkat ini mengganggu kerjanya (Jawapan: Y, c):

certbot-auto

Mari muat turun arkib dengan versi terbaru Drupal 9 dari luar tapak:

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

Pasang tar untuk membongkar arkib:

sudo dnf install tar -y

Mari padamkan fail lalai dalam direktori /usr/share/nginx/html/:

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

Mari kita bongkar fail ke dalam direktori pelayan web:

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

Mari kita alihkan fail dari subdirektori ke direktori akar pelayan web:

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

Mari padamkan subdirektori:

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

Mari padamkan arkib dengan fail pemasangan:

rm -f ./tar.gz

Mari kita tetapkan pemilik fail nginx:

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

Pada peringkat ini kami akan mematikan pelayan dan mengambil gambar:

shutdown -h now

Selepas melancarkan VDS daripada syot kilat, kami akan melakukan persediaan awal pelayan MySQL dengan menjalankan skrip:

mysql_secure_installation

Mari dayakan pengesah kata laluan:

Would you like to setup VALIDATE PASSWORD component? : y

Mari kita tetapkan kata laluan untuk pengguna root MySQL:

New password:
Re-enter new password:

Mari alih keluar pengguna tanpa nama:

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

Mari elakkan root daripada menyambung dari jauh:

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

Mari padamkan pangkalan data ujian:

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

Mari muat semula jadual keistimewaan:

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

Selepas ini, untuk menyelesaikan pemasangan, kita boleh pergi ke vps_ip_alamat
Di alamat ini kita akan melihat halaman pemasangan Drupal.

Mari pilih bahasa yang hendak digunakan. Contohnya: Rusia. Klik "Simpan dan Teruskan"

Mari pilih profil pemasangan (demo digunakan semata-mata untuk membiasakan diri anda dengan sistem). Dalam kes kami, biarkan ia menjadi "standard".

Pada halaman seterusnya kami akan memberikan nama kepada pangkalan data, contohnya "drupal". Mari tunjukkan akar nama pengguna pangkalan data dan kata laluan yang diberikan kepadanya semasa menjalankan mysql_secure_installation. Klik "Simpan dan Teruskan."

Mari tunggu pemasangan dan kemas kini terjemahan selesai (proses mungkin mengambil masa beberapa minit).

Kami akan menunjukkan nama tapak, tetapkan e-mel tapak (bagi pihak pemberitahuan tapak yang akan dihantar), log masuk, kata laluan dan e-mel akaun pentadbir Drupal. Kami juga akan menetapkan negara dan zon waktu dalam tetapan serantau. Dan lengkapkan pemasangan dengan mengklik "Simpan dan Teruskan".

Selepas ini, anda boleh pergi ke panel kawalan dengan log masuk dan kata laluan pentadbir Drupal yang dibuat.

Menyediakan HTTPS (pilihan)

Untuk mengkonfigurasi HTTPS, VDS mesti mempunyai nama DNS yang sah, nyatakan dalam

/etc/nginx/nginx.conf

dalam bahagian pelayan nama pelayan (contohnya):

server_name  domainname.ru;

Mari mulakan semula nginx:

service nginx restart

Mari lancarkan certbot:

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

Masukkan e-mel anda, bersetuju dengan syarat perkhidmatan (A), Langgan surat berita (pilihan) (N), pilih nama domain yang anda ingin keluarkan sijil (Masukkan untuk semua orang).

Jika semuanya berjalan tanpa ralat, kami akan melihat mesej tentang pengeluaran sijil dan konfigurasi pelayan yang berjaya:

Congratulations! You have successfully enabled ...

Selepas ini, sambungan ke port 80 akan diubah hala ke 443 (https).

Tambahkan pada /etc/crontab untuk mengemas kini sijil secara automatik:

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

Menyediakan Keselamatan Hos Dipercayai (disyorkan)

Tetapan ini bertujuan sebagai penyelesaian kepada masalah yang berkaitan dengan penentuan base_url dinamik, dan direka untuk menghalang serangan Pengepala HOST HTTP (apabila tapak anda menganggap bahawa ia adalah orang lain).

Untuk melakukan ini, anda perlu menentukan nama domain yang dipercayai untuk tapak dalam fail tetapan.

Dalam fail

/usr/share/nginx/html/sites/default/settings.php Mari batalkan ulasan atau tambahkan tetapan dengan corak nama tapak sebenar, contohnya:

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

Memasang PHP APCu (DISYORKAN)

Drupal menyokong APCu - Cache Pengguna PHP Alternatif, versi 8 dan 9 lebih banyak menggunakan APCu sebagai cache tempatan jangka pendek berbanding versi sebelumnya. Saiz cache lalai (32 MB) sesuai untuk kebanyakan tapak, dan tidak boleh melebihi 512 MB.

Untuk mengaktifkan, pasang modul PHP APCu:

dnf -y install php-pecl-apcu

Mulakan semula nginx dan php-fpm:

service nginx restart
service php-fpm restart

Jika anda menggunakan bahasa Rusia dan APCu dengan saiz memori yang disyorkan untuk cache, anda mungkin melihat amaran dalam panel kawalan bahawa saiz memori yang diperuntukkan untuk cache adalah berbeza daripada yang disyorkan, tetapi sebenarnya semuanya berfungsi dengan betul, dan amaran yang salah kemungkinan besar akan diperbetulkan dalam kemas kini seterusnya.

Atau jika amaran itu menyakitkan mata anda, anda boleh menggunakannya patch yang sepadan dari luar tapak.

Kami ingin mengingatkan anda bahawa anda juga boleh membuat imej untuk kami

Terdapat tiga pilihan untuk cara menyertai.

Sediakan imej itu sendiri dan dapatkan 3000 rubel untuk baki anda

Jika anda sudah bersedia untuk segera bergegas ke pertempuran dan mencipta imej yang anda hilang, kami akan mengkreditkan anda dengan 3000 rubel ke baki dalaman anda, yang boleh anda belanjakan pada pelayan.

Cara membuat imej anda sendiri:

  1. Buat akaun dengan kami di Online
  2. Beritahu sokongan bahawa anda akan membuat dan menguji imej
  3. Kami akan mengkreditkan anda 3000 rubel dan membolehkan keupayaan untuk mencipta syot kilat
  4. Pesan pelayan maya dengan sistem pengendalian yang bersih
  5. Pasang perisian pada VPS ini dan konfigurasikannya
  6. Tulis arahan atau skrip untuk penggunaan perisian
  7. Buat syot kilat untuk pelayan yang dikonfigurasikan
  8. Pesan pelayan maya baharu dengan memilih petikan yang dibuat sebelum ini dalam senarai juntai bawah "Templat pelayan".
  9. Jika pelayan berjaya dibuat, pindahkan bahan yang diterima pada peringkat 6 kepada sokongan teknikal
  10. Jika terdapat ralat, anda boleh menyemak dengan sokongan untuk sebab dan ulangi persediaan

Untuk pemilik perniagaan: tawarkan perisian anda

Jika anda seorang pembangun perisian yang digunakan dan digunakan pada VPS, maka kami boleh memasukkan anda dalam pasaran. Inilah cara kami boleh membantu anda membawa pelanggan baharu, trafik dan kesedaran. Tulis kami

Beritahu kami dalam ulasan apakah imej yang anda tiada?

Dan kami akan menyediakannya sendiri

Mencipta Templat VPS dengan Drupal 9 pada Centos 8

Mencipta Templat VPS dengan Drupal 9 pada Centos 8

Sumber: www.habr.com