Nyiptakeun Citakan VPS sareng Drupal 9 dina Centos 8

Urang terus ngalegaan pasar urang. Simkuring nembe ngawartoskeun anjeun kumaha dijieun gambar Gitlab, sareng minggu ieu Drupal muncul di pasar urang.

Kami nyarioskeun ka anjeun naha urang milih anjeunna sareng kumaha gambarna diciptakeun.

Nyiptakeun Citakan VPS sareng Drupal 9 dina Centos 8

Drupal - platform merenah tur kuat pikeun nyieun sagala jenis ramatloka: ti microsites na blog kana proyék sosial badag, ogé dipaké salaku dadasar pikeun aplikasi wéb, ditulis dina PHP jeung ngagunakeun database relational salaku gudang data.

Drupal 9 kalebet sadaya fitur anu diwanohkeun dina versi 8.9. Beda konci antara vérsi 9 sareng vérsi 8 nyaéta yén platform bakal terus nampi apdet sareng perbaikan kaamanan saatos Nopémber 2021. Vérsi 9 ogé nyederhanakeun prosés update, ngajantenkeun prosés ningkatkeun tina versi 8 langkung gampang.

syarat server

Pikeun ngagunakeun Drupal, disarankeun nganggo 2 GB RAM sareng 2 inti CPU.

Payil Drupal utama nyandak kira-kira 100 MB, salian ti anjeun peryogi rohangan pikeun nyimpen gambar, database, téma, modul tambahan sareng cadangan, anu bakal gumantung kana ukuran situs anjeun.

Drupal 9 ngabutuhkeun PHP 7.4 atanapi langkung luhur kalayan watesan minimum (memory_limit) pikeun mémori 64 MB; upami modul tambahan dianggo, disarankeun masang 128 MB.

Drupal tiasa nganggo Apache atanapi Nginx salaku pangladén wéb, sareng MySQL, PostgreSQL atanapi SQLite salaku pangkalan data.

Kami bakal masang Drupal nganggo Nginx sareng MySQL.

setting

Hayu urang ngapdet pakét anu dipasang ka versi panganyarna:

sudo dnf update -y

Hayu urang tambahkeun idin permanén pikeun lalu lintas asup ka palabuhan http/80 sareng https/443:

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

Hayu urang nerapkeun aturan firewall anyar:

sudo systemctl reload firewalld

Hayu urang pasang Nginx:

sudo dnf install nginx -y

Hayu urang mimitian sareng aktipkeun server Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Kusabab gudang Centos utama ayeuna nganggo PHP 7.2, hayu urang tambahkeun gudang REMI sareng PHP 7.4 (versi minimum pikeun Drupal 9).
Jang ngalampahkeun ieu, tambahkeun gudang EPEL (diperlukeun ku gudang REMI):

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

Hayu urang tambahkeun gudang REMI:

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

Hayu urang aktipkeun modul php:remi-7.4 pikeun masang php 7.4:

sudo dnf module enable php:remi-7.4 -y

Pasang php-fpm sareng php-cli:

sudo dnf install -y php-fpm php-cli

Hayu urang pasang modul PHP anu dipikabutuh pikeun Drupal tiasa dianggo:

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

Urang ogé bakal masang modul opcache mbstring PHP anu disarankeun:

sudo dnf install -y php-mbstring php-opcache

Hayu urang pasang server MySQL:

sudo dnf install mysql-server -y

Hayu urang hurungkeun sareng ngamimitian server MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Kusabab urang nyieun template pikeun VDS, jeung maranéhna bisa jadi slow, urang bakal nambahan hiji mysqld mimiti reureuh 30 detik, disebutkeun meureun aya masalah sareng server dimimitian dina mangsa sistem boot awal:

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

Hayu urang robih grup sareng pangguna dimana nginx bakal dijalankeun ku ngadamel parobihan kana /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

Hayu urang robih pamilik diréktori sesi PHP ka nginx sasuai:

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

Hayu urang miceun garis kalawan komentar tina file konfigurasi /etc/nginx/nginx.conf (supaya teu aya pemicu ganda pikeun sed):

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

Tambahkeun setélan komprési gzip kana /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

Hayu urang tambahkeun setelan tina file indéks index.php ka /etc/nginx/nginx.conf:

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

Hayu urang tambahkeun setélan pikeun server standar: ngolah PHP liwat stop kontak php-fpm, mareuman log pikeun file statik, ningkatkeun waktos kadaluwarsa, mareuman aksés sareng log kasalahan pikeun favicon.ico sareng robots.txt, sareng nolak aksés ka .ht. file pikeun sadayana:

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

Install wget diperlukeun pikeun masang certbot:

sudo dnf install wget -y

Unduh file executable certbot ti luar situs:

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

Pindahkeun certbot ka /usr/local/bin/:

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

Sareng hayu urang napelkeun hak salaku pamilik akar:

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

Hayu urang pasang dependensi certbot sareng dina tahap ieu ngaganggu padamelan na (Jawaban: Y, c):

certbot-auto

Hayu urang unduh arsip sareng vérsi Drupal 9 pangahirna ti offsite:

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

Pasang tar pikeun ngabongkar arsip:

sudo dnf install tar -y

Hayu urang ngahapus file standar dina /usr/share/nginx/html/ diréktori:

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

Hayu urang ngabongkar file kana diréktori pangladén wéb:

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

Hayu urang mindahkeun file tina subdirektori kana diréktori akar pangladén wéb:

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

Hayu urang ngahapus subdirektori:

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

Hayu urang ngahapus arsip sareng file pamasangan:

rm -f ./tar.gz

Hayu urang napelkeun nu boga file nginx:

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

Dina tahap ieu urang bakal mareuman server sareng nyandak snapshot:

shutdown -h now

Saatos ngaluncurkeun VDS tina snapshot, urang bakal ngalaksanakeun pangaturan awal server MySQL ku ngajalankeun skrip:

mysql_secure_installation

Hayu urang aktipkeun validator sandi:

Would you like to setup VALIDATE PASSWORD component? : y

Hayu urang nyetel sandi pikeun pamaké root MySQL:

New password:
Re-enter new password:

Hayu urang hapus pangguna anonim:

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

Hayu urang nyegah root tina nyambungkeun jarak jauh:

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

Hayu urang mupus database tés:

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

Hayu urang ngamuat deui tabel hak istimewa:

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

Saatos ieu, pikeun ngarengsekeun pamasangan, urang tiasa angkat ka vps_ip_address
Dina alamat ieu urang bakal ningali halaman instalasi Drupal.

Hayu urang pilih basa anu dianggo. Contona: Rusia. Pencét "Simpen sareng Teraskeun"

Hayu urang milih hiji profil instalasi (demo dipaké solely pikeun familiarize diri jeung sistem). Dina hal urang, hayu eta jadi "standar".

Dina kaca salajengna urang bakal masihan nami ka database, contona "drupal". Hayu urang nunjukkeun akar nami pangguna database sareng kecap konci anu dipasihkeun ka anjeunna nalika ngajalankeun mysql_secure_installation. Pencét "Simpen sareng Teraskeun".

Hayu urang antosan pamasangan sareng apdet tarjamahan parantos réngsé (prosésna tiasa sababaraha menit).

Kami bakal nunjukkeun nami situs, nyetél email situs (atas nama bewara situs anu bakal dikirim), login, kecap akses sareng email tina akun administrator Drupal. Urang ogé bakal netepkeun nagara sareng zona waktos dina setélan régional. Sareng ngalengkepan pamasangan ku ngaklik "Simpen sareng Teraskeun".

Saatos ieu, anjeun tiasa angkat ka panel kontrol kalayan login sareng kecap akses administrator Drupal anu diciptakeun.

Nyetél HTTPS (opsional)

Pikeun ngonpigurasikeun HTTPS, VDS kudu boga ngaran DNS valid, tangtukeun dina

/etc/nginx/nginx.conf

dina bagian server nami server (contona):

server_name  domainname.ru;

Hayu urang balikan deui nginx:

service nginx restart

Hayu urang ngajalankeun certbot:

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

Lebetkeun e-mail anjeun, satuju kana syarat jasa (A), Ngalanggan buletin (opsional) (N), pilih ngaran domain nu rék ngaluarkeun sertipikat (Asupkeun for everyone).

Upami sadayana henteu aya kasalahan, urang bakal ningali pesen ngeunaan penerbitan sertipikat sareng konfigurasi server anu suksés:

Congratulations! You have successfully enabled ...

Saatos ieu, sambungan ka port 80 bakal dialihkeun ka 443 (https).

Tambahkeun ka /etc/crontab pikeun otomatis ngapdet sertipikat:

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

Nyetél Kaamanan Host Dipercaya (disarankeun)

Setelan ieu dimaksudkeun salaku solusi pikeun masalah pakait sareng tekad base_url dinamis, sarta dirancang pikeun nyegah HTTP HOST lulugu serangan (lamun situs anjeun nyangka yén éta téh batur).

Jang ngalampahkeun ieu, anjeun kudu nangtukeun ngaran domain dipercaya pikeun situs dina file setélan.

Dina file

/usr/share/nginx/html/sites/default/settings.php Hayu urang uncomment atawa tambahkeun setelan kalawan pola ngaran situs sabenerna, contona:

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

Masang PHP APCu (DIREKOMENDASIKAN)

Drupal ngarojong APCu - Alternatif PHP Cache pamaké, versi 8 jeung 9 ngagunakeun leuwih gede APCu salaku cache lokal jangka pondok ti versi saméméhna. Ukuran cache standar (32 MB) cocog pikeun kalolobaan situs, sareng teu tiasa langkung ti 512 MB.

Pikeun ngaktipkeun, pasang modul PHP APCu:

dnf -y install php-pecl-apcu

Balikan deui nginx sareng php-fpm:

service nginx restart
service php-fpm restart

Upami anjeun nganggo basa Rusia sareng APCu kalayan ukuran mémori anu disarankeun pikeun cache, anjeun tiasa ningali peringatan dina panel kontrol yén ukuran mémori anu dialokasikeun pikeun cache béda sareng anu disarankeun, tapi kanyataanna sadayana jalanna leres. sareng peringatan anu lepat bakal paling dipikaresep dilereskeun dina apdet salajengna.

Atanapi upami peringatan nyeri panon anjeun, anjeun tiasa nganggo patch pakait ti offsite.

Kami hoyong ngingetkeun yén anjeun ogé tiasa ngadamel gambar pikeun kami

Aya tilu pilihan pikeun kumaha carana ilubiung.

Nyiapkeun gambar anjeun sorangan sareng kéngingkeun 3000 rubles kana kasaimbangan anjeun

Upami anjeun siap buru-buru ka perang sareng nyiptakeun gambar anu anjeun leungit, kami bakal masihan anjeun 3000 rubles kana kasaimbangan internal anjeun, anu anjeun tiasa nyéépkeun dina server.

Kumaha cara nyieun gambar anjeun sorangan:

  1. Jieun rekening kalawan kami on website
  2. Hayu dukungan terang yén anjeun badé nyiptakeun sareng nguji gambar
  3. Kami bakal kiridit anjeun 3000 rubles sareng ngaktifkeun kamampuan nyiptakeun jepretan
  4. Mesen server virtual kalawan sistem operasi bersih
  5. Pasang parangkat lunak dina VPS ieu sareng konpigurasikeunana
  6. Nulis parentah atawa naskah pikeun deployment software
  7. Jieun snapshot pikeun server ngonpigurasi
  8. Mesen server virtual anyar ku milih snapshot dijieun saméméhna dina daptar turun-handap "Server template".
  9. Lamun server geus hasil dijieun, mindahkeun bahan narima dina tahap 6 ka rojongan teknis
  10. Upami aya kasalahan, anjeun tiasa pariksa ku dukungan pikeun alesanana sareng malikan deui setelan

Pikeun nu boga usaha: nawiskeun software Anjeun

Upami anjeun pamekar parangkat lunak anu disebarkeun sareng dianggo dina VPS, maka kami tiasa ngalebetkeun anjeun dina pasaran. Ieu kumaha urang tiasa ngabantosan anjeun nyangking konsumén anyar, lalu lintas sareng kasadaran. Tulis kami

Nyaritakeun kami dina koméntar gambar naon anu anjeun leungit?

Sarta kami bakal nyiapkeun eta sorangan

Nyiptakeun Citakan VPS sareng Drupal 9 dina Centos 8

Nyiptakeun Citakan VPS sareng Drupal 9 dina Centos 8

sumber: www.habr.com