Depoja e aplikacionit në Laravel 7 në Ubuntu & Nginx

Deploy i aplikacionit në Laravel 7 në Ubuntu & Nginx

Vendosa të krijoj portofolin tim në Laravel 7. Që faqja kryesore të jetë një faqe marketingu, dhe të gjithë informacionin në të ta ndryshojmë me anë të adminit. Nuk është çështja kryesore. Arritëm në depomimin. Gjeta disa tutoriale të mira për ta bërë këtë në një server të plotë me të gjitha detajet. Nuk jam shumë i fortë në depo, përgjithësisht jam më shumë në front se sa full stack. Dhe, nëse mund të shkruaj dhe testoj në PHP, për menaxhimin e serverit e kështu me radhë, ende nuk kam arritur. Por, më duhej të merrem me këtë.

Tani do të kalojmë përmes të gjithë hapave, duke filluar nga nisja përmes SSH dhe duke përfunduar me një faqe funksionale. Do të përpiqemi të shmangim të gjithë pengesat.

Ndoshta do të mund të gjeni udhëzime të ngjashme në internet. Përfundimisht, edhe unë i gjeta. E vërtetë, jo në një vend, jo pa ndihmën e StackOverflow dhe ndoshta jo në rusisht. Pashë vështirësi. Prandaj vendosa t'ju lehtësoj jetën.

Gjatë kësaj do të punojmë me një droplet në DigitalOcean. Nuk është patjetër, zgjidhni çdo hostim tjetër. Kur të arrini te serveri funksional në Ubuntu, kthjelluni. Për ata që vendosën të punojnë në DigitalOcean, do të jenë edhe këshilla për konfigurimin e domenit. si dhe një link referimi për 100$.

Të gjitha hapat specifik për DigitalOcean do të jepen në nota të tilla.

Le të fillojmë.

TL;DR (vetëm komandat kryesore)

Krijojmë përdorues

  • ssh root@[IP-adresa e droplet-it tuaj]
  • adduser laravel
  • usermod -aG sudo laravel
  • su laravel

Shtojmë SSH për të

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys
  • Ngjitemi çelĂ«si publik
  • chmod 600 ~/.ssh/authorized_keys

Fireualli

  • sudo ufw allow OpenSSH
  • sudo ufw enable
  • sudo ufw status

Nginx

  • sudo apt update
  • sudo apt install -y nginx
  • sudo ufw allow 'Nginx HTTP'
  • sudo ufw status

MySQL

  • sudo apt install -y mysql-server
  • sudo mysql_secure_installation, NYNNY
  • sudo mysql
  • ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
  • SELECT user,authentication_string,plugin,host FROM mysql.user;
  • FLUSH PRIVILEGES;
  • exit

PHP

  • sudo apt update

  • sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https

  • sudo apt-add-repository ppa:ondrej/php

  • sudo apt update

  • 7.3: sudo apt install -y php7.3-fpm php7.3-mysql

  • 7.4: sudo apt install -y php7.4-fpm php7.4-mysql

  • sudo vim /etc/nginx/sites-available/

Konfigurimi bazë:

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name ; 

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ .php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        location ~ /.ht {
                deny all;
        }
}

Vetëm konfigurimi HTTP për Laravel:

server {
    listen 80;
    listen [::]:80;

    root /var/www/html//public;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name ;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
        deny all;
    }
}

Konfigurimi i HTTPS për Laravel:

server {
    listen 80;
    listen [::]:80;

    server_name  www.;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  www.;
    root /var/www/html//public;

    ssl_certificate /etc/letsencrypt/live//fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live//privkey.pem;

    ssl_protocols TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
    ssl_prefer_server_ciphers on;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php index.html index.htm index.nginx-debian.html;

    charset utf-8;

    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
            deny all;
    }

    location ~ /.well-known {
            allow all;
    }
}

  • sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/
  • sudo unlink /etc/nginx/sites-enabled/default
  • sudo nginx -t
  • sudo systemctl reload nginx

Laravel

  • 7.3: sudo apt install -y php7.3-mbstring php7.3-xml composer unzip

  • 7.4: sudo apt install -y php7.4-mbstring php7.4-xml composer unzip

  • mysql -u root -p

  • Krijo DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • sudo mkdir -p

  • sudo chown laravel:laravel

  • cd ./

  • git clone . / git clone -b --single-branch .

  • composer install

  • vim .env

APP_NAME=Laravel
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

  • php artisan migrate

  • php artisan key:generate

  • sudo chown -R $USER:www-data storage

  • sudo chown -R $USER:www-data bootstrap/cache

  • chmod -R 775 storage

  • chmod -R 775 bootstrap/cache

HTTPS

  • sudo add-apt-repository ppa:certbot/certbot

  • sudo apt install -y python-certbot-nginx

  • sudo certbot certonly --webroot --webroot-path=/var/www/html//public -d -d www.

  • sudo nginx -t

  • sudo ufw allow 'Nginx HTTPS'

  • sudo ufw status

  • sudo systemctl reload nginx

Krijoni një droplet në DigitalOcean dhe regjistroni një çelës të ri SSH

Unë me të vërtetë besoj se do t'ju japë të kuptoni procedurën e regjistrimit në DigitalOcean. Ajo nuk është e lehtë, me shumë verifikime dhe gjëra të tjera. Nëse keni vazhdimisht probleme me verifikimin përmes dokumenteve për shkak të gabimeve të rrjetit, provoni ta bëni gjithçka përmes një VPN, duhet ta ndihmojë.

Në menunë e sipërme, klikoni Krijo->Droplets. Zgjidhni Ubuntu.

Sapo që u regjistruat, do të merrni 100$ në llogari. Por mos u gënjeni. Keni vetëm 60 ditë për t'i shpenzuar ato. Kjo është shumë pak. Mund të dëshironit, ashtu si unë, të përdorni një plan më të shtrenjtë, për të kaluar më pas në një më të lirë, kur të hyjë tashmë para e vërtetë. Po e them menjëherë, nuk do të mundeni. Mund të rrisni, por nuk mund të zvogëloni. Këto janë punët. Unë zgjedh Standard->$5.

Zgjedh rajonin më të afërt me ne Frankfurt. VPC Network->default-fra1

Do ta bĂ«jmĂ« autentifikimin menjĂ«herĂ« pĂ«rmes SSH. Shtypim New SSH Key. NĂ«se nuk keni SSH, nĂ« anĂ«n e djathtĂ« ka njĂ« udhĂ«zim shumĂ« tĂ« thjeshtĂ«. Hapim terminalin bash, ngjisim ssh-keygen. Pastaj hyjmĂ« nĂ« skedarin me çelĂ«sin publik /Users/<Đ’Đ°ŃˆĐ” ĐžĐŒŃ ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»Ń>/.ssh/id_rsa.pub (ose thjesht cat ~\/ .ssh\/id_rsa.pub), kopjojmĂ« pĂ«rmbajtjen dhe e ngjisim nĂ« dritaren nĂ« tĂ« majtĂ«. Emri mund tĂ« jetĂ« çfarĂ«do.

Krijojmë një emër hosti për dropletin.

Klikoni Create Droplet

Krijojmë një përdorues të ri

  • ssh root@[IP-adresa e droplet-it tuaj]
  • A jeni tĂ« sigurt se dĂ«shironi tĂ« vazhdoni tĂ« lidhni (po/jo/[fingerprint])? po
  • Shkruani fjalĂ«kalimin tuaj pĂ«r SSH
  • KrijojmĂ« pĂ«rdorues laravel: adduser laravel
  • Shkruani fjalĂ«kalimin dhe informacionin e tjerĂ« (unĂ« shkruaj vetĂ«m Emrin e PlotĂ«)
  • ShtojmĂ« pĂ«rdoruesin nĂ« grupin sudo: usermod -aG sudo laravel

SSH për përdoruesin e ri

  • KalojmĂ« te pĂ«rdoruesi i ri: su laravel

Të gjitha veprimet në vazhdim, deri në fund të artikullit, do t'i kryejmë në emrin e përdoruesit laravel. Prandaj, nëse ndonjëherë ndaloni, rihyni dhe shkruani su laravel

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys

Kemi hapur skedarin në Vim. Nëse nuk e njihni fare, mund të punoni në Nano, është e drejta juaj.

Komandat më themelore të Vim

Për të përdorur editorin Vim gjatë artikullit, mjafton të dini këtë.

  • NĂ« Vim ka modet tĂ« ndryshme: moda normale (Normal mode), nĂ« tĂ« cilĂ«n vendosni komanda dhe zgjidhni moda dhe tĂ« tjera.
  • PĂ«r tĂ« dalĂ« nga çdo mĂ«nyrĂ« dhe pĂ«r tĂ« kaluar nĂ« modĂ«n normale, mjafton tĂ« shtypni Esc
  • LĂ«vizni: mund tĂ« pĂ«rdorni thjesht arrow-t
  • Dalni pa ruajtur <Normal mode>: :q!
  • Dalni dhe ruani <Normal mode>: :wq
  • Vazhdoni nĂ« modalitetin e futjes sĂ« tekstit <Normal mode>: i (nga anglishtja insert)
  • Ngjisim çelĂ«sin tonĂ« publik (tĂ« cilin e krijuam mĂ« lart)
  • MbrojmĂ« nga ndryshimet: chmod 600 ~/.ssh/authorized_keys

Vendosim firewall-in

  • Shikoni tĂ« gjitha konfigurimet e disponueshme: sudo ufw app list
  • LejojmĂ« OpenSSH (ndryshe na bllokon): sudo ufw allow OpenSSH
  • Nisni firewall-in: sudo ufw enable, y
  • Po kontrollojmĂ«: sudo ufw status

Status: aktiv

Për                        Veprimi      Nga
--                        ------      ----
OpenSSH                    LEJO       Çdo vend
OpenSSH (v6)               LEJO       Çdo vend (v6)

Të gjitha janë në rregull.

Instalojmë Nginx

Gjatë instalimit ndonjëherë do të pyesin "A jeni të sigurt?". Përgjigjuni y (vetëm nëse jeni të sigurt).

  • sudo apt update
  • sudo apt install nginx

Shtojmë Nginx në konfigurimet e firewall-it

  • sudo ufw app list
  • sudo ufw allow 'Nginx HTTP'
  • sudo ufw status

Status: aktiv

Për                         Veprimi      Nga
--                         ------      ----
OpenSSH                    LEJO       Kudo
Nginx HTTP                 LEJO       Kudo
OpenSSH (v6)               LEJO       Kudo (v6)
Nginx HTTP (v6)            LEJO       Kudo (v6)

Shkoni te IP juaj. Nëse gjithçka shkon mirë, duhet të shihni këtë.

Deploy i aplikacionit në Laravel 7 në Ubuntu & Nginx

Po instalojmë MySQL

  • sudo apt install mysql-server
  • Po nisni skenarin automatike pĂ«r mbrojtje sudo mysql_secure_installation

Përgjigjuni pyetjeve të paracaktuara. Nëse nuk e dini se çfarë të përgjigjeni, këtu janë opsionet e rekomanduara:

  • Plugin-i pĂ«r validimin e fjalĂ«kalimeve — N

  • TĂ« hiqen pĂ«rdoruesit anonim? — Y

  • TĂ« ndalohet hyrja nga distanca si root? — N

  • TĂ« hiqet databaza e testit dhe aksesin nĂ« tĂ«? — N

  • TĂ« rifreskohen tabelat e privilegjeve tani? — Y

  • Po hyjmĂ« nĂ« MySQL: sudo mysql

  • Po shohim metodat e aksesit: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Po vendosim fjalĂ«kalimin pĂ«r root: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

  • Po shohim metodat e aksesit pĂ«rsĂ«ri: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Po aplikojmĂ« ndryshimet dhe dalim nga MySQL: FLUSH PRIVILEGES; dhe exit

  • Tani, pĂ«r tĂ« hyrĂ« nĂ« MySQL duhet tĂ« pĂ«rdorni mysql -u root -p dhe tĂ« jepni fjalĂ«kalimin

Po instalojmë PHP

Do tĂ« pĂ«rdorim njĂ« repo tĂ« tretĂ« nga Ondƙej SurĂœ

  • sudo apt update
  • sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https
  • sudo apt-add-repository ppa:ondrej/php
  • sudo apt update

Tani zgjidhni. Për Laravel 7 mund të zgjidhni PHP 7.3 ose 7.4. Diferenca do të jetë vetëm në numrat 3 dhe 4.

  • 7.3: sudo apt install -y php7.3-fpm php7.3-mysql
  • 7.4: sudo apt install -y php7.4-fpm php7.4-mysql

PHP FastCGI Process Manager (fpm) punon me kërkesat dhe menaxhon MySQL-në.

Më pas do të punoj me versionin 7.4.

Po konfiguroni Nginx

  • sudo vim /etc/nginx/sites-available/

Në vend të "<Domeni juaj>" shkruani domenin (për shembull, mysite.ru), të cilin dëshironi ta përdorni në të ardhmen. Nëse nuk e keni një të tillë tani, shkruani çfarëdo, më pas thjesht përsërisni hapat në këtë kapitull për domenin tuaj, kur ta zgjidhni atë.

Shkruani këtë:

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name ; 

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ .php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        location ~ /.ht {
                deny all;
        }
}

Nëse zgjodhët versionin 7.3 në vend të php7.4-fpm.sock shkruani php7.4-fpm.sock.

Dëgjojmë portin 80 në server_name, kur marrim kërkesë në rrënjën /var/www/html marrim skedarin index. Nëse pas server_name ka diçka tjetër, kërkojmë një skedar të tillë. Nëse nuk e gjejmë, hedhim 404. Nëse përfundojmë në .php, kalojmë përmes fpm. Nëse ka .ht, ndalojmë (403).

  • BĂ«jmĂ« njĂ« lidhje nga sites-available nĂ« sites-enabled: sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/
  • FshijmĂ« lidhjen pĂ«r default: sudo unlink /etc/nginx/sites-enabled/default
  • KontrollojmĂ« pĂ«r gabime: sudo nginx -t
  • Rivendosim: sudo systemctl reload nginx

Kontrollojmë funksionimin:

  • sudo vim /var/www/html/info.php
  • ShkruajmĂ«: <?php phpinfo();
  • Shkoni nĂ« <IP juaj>/info.php

Duhet të shihni diçka të ngjashme:

Deploy i aplikacionit në Laravel 7 në Ubuntu & Nginx

Tani ky skedar mund të fshihet: sudo rm /var/www/html/info.php

Po vendosim Laravel

  • 7.3: sudo apt install php7.3-mbstring php7.3-xml composer unzip

  • 7.4: sudo apt install php7.4-mbstring php7.4-xml composer unzip

  • Po hyjmĂ« nĂ« MySQL: mysql -u root -p

  • Krijoni njĂ« DB me emrin laravel: Krijo DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • Sigurojeni aksesin root nĂ« laravel: GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • Krijoni njĂ« dosje pĂ«r projektin: sudo mkdir -p

  • Sigurojeni pĂ«rdoruesit laravel tĂ« drejtat pĂ«r projektin: sudo chown laravel:laravel

Më pas duhen transferuar projektet. Për shembull, duke klonuar nga Github.

  • cd ./
  • git clone .

Duhet të merret parasysh se, nëse nuk i keni ruajtur skedarët statikë (për shembull, nga /public) në Github, ju natyrisht nuk do t'i keni ata. Unë, për shembull, për ta zgjidhur këtë krijova një degë të veçantë deploy, nga e cila kam klonuar: git clone -b --single-branch ..

  • InstalojmĂ« varĂ«sitĂ«: composer install
  • KrijojmĂ« .env: vim .env

Versioni bazë duket kështu:

APP_NAME=Laravel
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

Nëse kopjoni .env tuaj, zëvendësoni APP_ENV me production, APP_DEBUG me false dhe shkruani cilësimet e sakta për MySQL.

  • MigrojmĂ« DB: php artisan migrate
  • GenerejmĂ« kodin: php artisan key:generate

Ndryshojmë lejet:

  • sudo chown -R $USER:www-data storage
  • sudo chown -R $USER:www-data bootstrap/cache
  • chmod -R 775 storage
  • chmod -R 775 bootstrap/cache

E fundit, qĂ« na mbetet – pĂ«rshtatim Nginx pĂ«r Laravel:

sudo vim /etc/nginx/sites-available/

server {
    listen 80;
    listen [::]:80;

    root /var/www/html//public;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name ;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
        deny all;
    }
}

Siç bëmë herën e kaluar, nëse zgjodhët versionin 7.3 në vend të php7.4-fpm.sock shkruani php7.4-fpm.sock.

Konfiguroni domainin në DigitalOcean

Të gjitha, në të vërtetë, janë shumë të thjeshta. Blini një domain (në çdo vend), shkoni në DigitalOcean në Krijo->Domains/DNS. Në fushën Shtoni një domain shkruani këtë domain, dhe klikoni shto. Më pas shkoni te cilësimet e domainit dhe në fushën HOSTNAME shkruani @. Zgjidhni projektin dhe klikoni Krijoni rekord.
Tani shkoni në faqen ku keni blerë domainin, gjeni "DNS Serverët" (ose diçka të ngjashme) dhe shkruani serverët e DigitalOcean (përkatësisht ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com). Tani duhet pak (ose shumë) të prisni derisa këto cilësime të pranohen. Gati!
Problemi i vetëm është se faqja juaj do të hapet vetëm si HTTP. Për të pasur HTTPS, kalojmë te pjesa tjetër.

Konfiguroni HTTPS

Instalojmë certbot dhe i japim atij emrin e domainit (formatin mysite.ru) dhe emrin e domainit me www (www.mysite.ru).

  • sudo add-apt-repository ppa:certbot/certbot
  • sudo apt install python-certbot-nginx
  • sudo certbot certonly --webroot --webroot-path=/var/www/html//public -d -d www.

Tani duhet të përshtatim Nginx (mos harroni të vendosni vlerat tuaja):

server {
    listen 80;
    listen [::]:80;

    server_name  www.;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  www.;
    root /var/www/html//public;

    ssl_certificate /etc/letsencrypt/live//fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live//privkey.pem;

    ssl_protocols TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
    ssl_prefer_server_ciphers on;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php index.html index.htm index.nginx-debian.html;

    charset utf-8;

    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /.ht {
            deny all;
    }

    location ~ /.well-known {
            allow all;
    }
}

Mendoj se tashmë e keni kuptuar se çfarë duhet të ndryshoni për PHP 7.3.

Këtu, në të vërtetë, është shumë e thjeshtë. Ne thjesht derigjojmë të gjitha kërkesat nga HTTP (porti 80) në HTTPS (porti 443). Dhe atje bëjmë gjithçka ashtu si më parë, por tashmë me enkriptim.

Na mbetet të vendosim lejet në firewall:

  • sudo nginx -t
  • sudo ufw app list
  • sudo ufw allow 'Nginx HTTPS'
  • sudo ufw status
  • sudo systemctl reload nginx

Tani gjithçka duhet të funksionojë siç duhet.

[Đ”ĐŸĐżĐŸĐ»ĐœĐžŃ‚Đ”Đ»ŃŒĐœĐŸ] ĐŁŃŃ‚Đ°ĐœĐŸĐČĐșа Node.js

Nëse ndonjëherë keni nevojë të filloni komandat npm direkt në server, duhet të instaloni Node.js.

  • sudo apt update
  • sudo apt install -y nodejs npm
  • nodejs -v

Tani, unë jam ndalur në këtë etapë. Në të vërtetë, rezultati më kënaq. Mbase do të kaloj nga DigitalOcean diku më pranë Rusisë dhe më lirë. Por pasi kalova të gjitha nivelet e verifikimit në faqe dhe bëra gjithçka atje, e tregova si shembuj. Për më tepër, 100 dollarët e tyre fillestarë janë një platformë e shkëlqyer për stërvitje.

P.S. Falenderim të veçantë autorit të këtij gisti, i cili shërbeu si baza e të gjitha veprimeve të lartpërmendura. Ai në disa momente nuk funksionon për Laravel 7, unë e kam korrigjuar.

P.P.S. Nëse ndonjëherë jeni një inxhinier i shkëlqyer që mendon në grupe bash, ju lutem mos e gjykoni ashpër. Ndoshta niveli i këtij artikulli do t'ju duket i ulët, por do të isha i lumtur ta gjeja një të tillë kur më duhej. Nëse keni sugjerime për përmirësim, jam absolutisht pro.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster