Lietojumprogrammas izvietošana Laravel 7 Ubuntu un Nginx

Lietojumprogrammas izvietošana Laravel 7 Ubuntu un Nginx

Es nolēmu izveidot savu portfolio, izmantojot Laravel 7. Lai galvenā lapa būtu galvenā lapa un visu informāciju tajā varētu mainīt, izmantojot admin paneli. Nevis būtība. Tas nonāca līdz izvietošanai. Atradu pāris labas pamācības, kā to izdarīt pilnvērtīgā serverī ar visām nepatikšanām. Es neesmu ļoti spēcīgs izvietošanā; parasti esmu vairāk priekšgalā, nevis pilns. Un, ja vēl varu rakstīt un testēt PHP, tad pirms servera pārvaldīšanas utt. Es vēl neesmu pieaudzis. Bet man tas bija jāizdomā.

Tagad mēs veiksim visas darbības, sākot ar palaišanu, izmantojot SSH, un beidzot ar darba vietni. Mēs centīsimies izvairīties no visām kļūmēm.

Iespējams, varat atrast līdzīgus norādījumus tiešsaistē. Galu galā es beidzot to atradu. Tiesa, ne vienuviet, ne bez StackOverflow palīdzības un diezin vai krievu valodā. Es cietu. Tāpēc es nolēmu vienkāršot jūsu dzīvi.

Mēs visu darīsim ar pilienu uz DigitalOcean. Tas, protams, nav nepieciešams; izvēlieties jebkuru hostingu. Kad esat sasniedzis Ubuntu strādājošu serveri, atgriezieties. Tiem, kuri joprojām nolemj to darīt DigitalOcean, būs vairāk padomu par domēna iestatīšanu. Un $100 novirzīšanas saite.

Visas DigitalOcean specifiskās darbības tiks norādītas līdzīgās zemsvītras piezīmēs.

Sāksim darbu.

TL;DR (tikai pamata komandas)

Izveidojiet lietotāju

  • ssh root@[IP-адрес вашего дроплета]
  • adduser laravel
  • usermod -aG sudo laravel
  • su laravel

Pievienojiet tam SSH

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys
  • Ievietojiet publisko atslēgu
  • chmod 600 ~/.ssh/authorized_keys

Ugunsmūris

  • 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 '<Ваш пароль для MySQL>';
  • 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/<Ваш домен>

Pamata iestatīšana:

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name <Ваш домен или IP>;

        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;
        }
}

Tikai HTTP iestatīšana Laravel:

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

    root /var/www/html/<Имя проекта>/public;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name <Ваш домен или IP>;

    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;
    }
}

HTTPS iestatījums 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

  • CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';

  • 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=<Ваш пароль от MySQL>

  • 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

Izveidojiet pilienu pakalpojumā DigitalOcean un reģistrējiet jaunu SSH atslēgu

Es patiesi ticu, ka jūs pats izdomāsit, kā reģistrēties DigitalOcean. Tas nav viegli, ar daudzām pārbaudēm un citām lietām. Ja, pārbaudot dokumentus, pastāvīgi tiek parādīta tīkla kļūda, mēģiniet darīt visu, izmantojot VPN, tam vajadzētu palīdzēt.

Augšpusē esošajā izvēlnē noklikšķiniet uz izveidot->Droplets. Izvēlieties Ubuntu.

Tiklīdz jūs reģistrējaties, jūs saņemsiet 100 USD savā kontā. Bet neļaujiet sevi apmānīt. Jums ir tikai 60 dienas, lai to pavadītu. Un tas ir ļoti maz. Iespējams, tāpat kā es vēlēsities izmantot dārgāku plānu, lai vēlāk, kad sāks plūst reālā nauda, ​​varētu pārslēgties uz lētāku. Es jums uzreiz pateikšu, ka tas nedarbosies. Jūs varat to palielināt, bet jūs to nevarat samazināt. Tā tas notiek. ES izvēlos Standarts->$5.

Es izvēlos mums tuvāko reģionu Frankfurt. VPC tīkls->noklusējuma-fra1

Mēs nekavējoties veiksim autentifikāciju, izmantojot SSH. Klikšķis Jauna SSH atslēga. Ja jums nav SSH, labajā pusē ir ļoti vienkārši norādījumi. Atveriet bash termināli un ielīmējiet ssh-keygen. Pēc tam mēs ejam uz failu ar publisko atslēgu /Users/<Ваше имя пользователя>/.ssh/id_rsa.pub (vai vienkārši cat ~/.ssh/id_rsa.pub), kopējiet saturu un ielīmējiet to logā pa kreisi. Jebkurš vārds.

Mēs nākam klajā ar resursdatora nosaukumu pilienam.

Noklikšķiniet šeit Izveidot pilienu

Izveidojiet jaunu lietotāju

  • ssh root@[IP-адрес вашего дроплета]
  • Vai tiešām vēlaties turpināt savienojumu (jā/nē/[pirkstu nospiedums])? yes
  • Ievadiet savu SSH paroli
  • Izveidojiet lietotāju laravel: adduser laravel
  • Ievadiet savu paroli un citu informāciju (es ievadu tikai pilnu vārdu)
  • Pievienojiet lietotāju sudo grupai: usermod -aG sudo laravel

SSH jaunam lietotājam

  • Pārslēgties uz jauno lietotāju: su laravel

Visas darbības veicam tālāk, līdz raksta beigām, laravel lietotāja vārdā. Tāpēc, ja pēkšņi tiekat pārtraukts, atkārtoti piesakieties un ievadiet su laravel

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

Mēs atvērām failu programmā Vim. Ja jūs to nemaz nepārzināt, varat strādāt Nano, jūsu tiesības.

Visvienkāršākās Vim komandas

Lai visā rakstā izmantotu Vim redaktoru, jums vienkārši jāzina sekojošais.

  • Vim ir dažādi režīmi: parastais režīms, kurā ievadāt komandas un atlasāt režīmus un citus.
  • Lai izietu no jebkura režīma un atgrieztos parastajā režīmā, vienkārši nospiediet Esc
  • Pārvietojieties: varat izmantot tikai bultiņas
  • Iziet bez saglabāšanas <Normal mode>: :q!
  • Izejiet un saglabājiet <Normal mode>: :wq
  • Pārslēdzieties uz teksta ievades režīmu <Normal mode>: i (no angļu valodas. ievietot)
  • Mēs ievietojam savu publisko atslēgu (ko darījām iepriekš)
  • Mēs aizsargājam pret izmaiņām: chmod 600 ~/.ssh/authorized_keys

Ugunsmūra instalēšana

  • Apskatīsim visus pieejamos iestatījumus: sudo ufw app list
  • Atļaut OpenSSH (pretējā gadījumā tas mūs bloķēs): sudo ufw allow OpenSSH
  • Palaidīsim ugunsmūri: sudo ufw enable, y
  • Pārbaude: sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Viss ir kārtībā.

Nginx instalēšana

Instalēšanas laikā jums dažreiz tiks jautāts "Vai esat pārliecināts?" Atbilde y (nu, tikai tad, ja esat pārliecināts).

  • sudo apt update
  • sudo apt install nginx

Nginx pievienošana ugunsmūra iestatījumiem

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

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Dodieties uz savu IP. Ja viss norit labi, jums vajadzētu redzēt sekojošo.

Lietojumprogrammas izvietošana Laravel 7 Ubuntu un Nginx

MySQL instalēšana

  • sudo apt install mysql-server
  • Automātiskās aizsardzības skripta palaišana sudo mysql_secure_installation

Atbildiet uz uzdotajiem jautājumiem. Ja nezināt, ko atbildēt, šeit ir dažas ieteiktās iespējas:

  • Validēt paroles spraudni - N

  • Vai noņemt anonīmos lietotājus? — Y

  • Vai liegt root pieteikšanos attālināti? — N

  • Vai noņemt testa datubāzi un piekļūt tai? — N

  • Vai tagad atkārtoti ielādēt privilēģiju tabulas? — Y

  • Dosimies uz MySQL: sudo mysql

  • Apskatīsim piekļuves metodes: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Iestatiet root paroli: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Ваш пароль для MySQL>';

  • Vēlreiz apskatīsim piekļuves metodes: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Lietojiet izmaiņas un izejiet no MySQL: FLUSH PRIVILEGES; и exit

  • Tagad, lai pieteiktos MySQL, jums ir jāizmanto mysql -u root -p un ievadiet paroli

PHP instalēšana

Izmantosim trešās puses repozitoriju no Ondžejs Surijs

  • 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

Tagad izvēlamies. Operētājsistēmai Laravel 7 varat izvēlēties PHP 7.3 vai 7.4. Vienīgā atšķirība būs skaitļos 3 un 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) darbojas ar PHP pieprasījumiem. mysql, protams, darbam ar MySQL.

Turpmāk visu darīšu 7.4.

Notiek Nginx iestatīšana

  • sudo vim /etc/nginx/sites-available/<Ваш домен>

“<Jūsu domēns>” vietā ievadiet domēnu (piemēram, mysite.ru), ko vēlaties izmantot nākotnē. Ja jums tāda vēl nav, ierakstiet to un pēc tam vienkārši atkārtojiet šajā nodaļā norādītās darbības savam domēnam, kad to atlasāt.

Ievadiet sekojošo:

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name <Ваш домен или IP>;

        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;
        }
}

Ja tā vietā izvēlējāties versiju 7.3 php7.4-fpm.sock rakstīt php7.4-fpm.sock.

Klausieties 80. portu server_namekad mēs nonākam pie saknes pieprasījuma /var/www/html paņemiet indeksa failu. Ja pēc server_name Kaut kas ir, mēs meklējam šādu failu. Ja neatrodam, izmetam 404. Ja tas beidzas ar .php, Izskriet cauri fpm... Ja tur ir .ht, aizliegt (403).

  • Izveidojot saiti no sites-available в sites-enabled: sudo ln -s /etc/nginx/sites-available/<Ваш домен> /etc/nginx/sites-enabled/
  • Notiek saites noņemšana uz default: sudo unlink /etc/nginx/sites-enabled/default
  • Kļūdu pārbaude: sudo nginx -t
  • Atsāknēšana: sudo systemctl reload nginx

Pārbauda darbu:

  • sudo vim /var/www/html/info.php
  • Mēs rakstām: <?php phpinfo();
  • Ejam uz <Ваш IP>/info.php

Jums vajadzētu redzēt kaut ko līdzīgu šim:

Lietojumprogrammas izvietošana Laravel 7 Ubuntu un Nginx

Tagad šo failu var izdzēst: sudo rm /var/www/html/info.php

Instalējiet 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

  • Dosimies uz MySQL: mysql -u root -p

  • Izveidojiet datu bāzi ar nosaukumu laravel: CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • Mēs nodrošinām root piekļuvi laravel: GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • Izveidojiet projekta mapi: sudo mkdir -p <Имя проекта>

  • Mēs nodrošinām lietotājam laravel tiesības uz projektu: sudo chown laravel:laravel <Имя проекта>

Tālāk jums ir jāpārsūta projekts. Piemēram, klonēšana no Github.

  • cd ./<Имя проекта>
  • git clone <ссылка на проект> .

Ir vērts padomāt, ka, ja nesaglabājāt statiskus failus (piemēram, no /public) vietnē Github, tad, protams, jums tās nebūs. Piemēram, es izveidoju atsevišķu pavedienu, lai to atrisinātu deploy, no kuras es jau klonēju: git clone -b <имя ветки> --single-branch <ссылка на проект> ..

  • Atkarību instalēšana: composer install
  • Izveidot .env: vim .env

Tās pamata versija izskatās šādi:

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=<Ваш пароль от MySQL>

Ja kopējat savu .env, aizstājiet APP_ENV ar produkcijas, APP_DEBUG ar false un ievadiet pareizos MySQL iestatījumus.

  • Datu bāzes migrēšana: php artisan migrate
  • Koda ģenerēšana: php artisan key:generate

Atļauju maiņa:

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

Pēdējā lieta, kas atliek, ir pārkonfigurēt Nginx 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 <Ваш домен или IP>;

    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;
    }
}

Tāpat kā iepriekšējo reizi, ja tā vietā izvēlējāties versiju 7.3 php7.4-fpm.sock rakstīt php7.4-fpm.sock.

Domēna iestatīšana vietnē DigitalOcean

Viss patiesībā ir ļoti vienkārši. Jūs iegādājaties domēnu (jebkur), pārslēdzieties uz DigitalOcean vietnē izveidot->Domēni/DNS... Laukā Pievienojiet domēnu ievadiet šo domēnu un noklikšķiniet uz Pievienot. Pēc tam dodieties uz domēna iestatījumiem un lauku SAIMNIECĪBAS NOSAUKUMS ievadiet @. Izvēlieties projektu un noklikšķiniet uz Izveidot ierakstu.
Tagad dodieties uz vietni, kurā iegādājāties domēnu, atrodiet tur “DNS serveri” (vai kaut ko līdzīgu) un ievadiet DigitalOcean serverus (proti ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com). Tagad jums nedaudz (vai daudz) jāgaida, līdz šie iestatījumi tiks pieņemti. Gatavs!
Vienīgā problēma ir tā, ka jūsu vietne tiks atvērta tikai kā HTTP. Lai izmantotu HTTPS, pārejiet uz nākamo daļu.

HTTPS iestatīšana

Instalējiet certbot un nosūtiet tam domēna nosaukumu (formātu mysite.ru) un domēna vārdu ar 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.<Ваш домен>

Tagad jums ir jāpārkonfigurē Nginx (neaizmirstiet aizstāt savas vērtības):

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;
    }
}

Es domāju, ka jūs jau saprotat, kas jāmaina PHP 7.3.

Šeit patiesībā viss ir vienkārši. Mēs vienkārši novirzām visus pieprasījumus no HTTP (ports 80) uz HTTPS (ports 443). Un tur mēs darām visu tāpat kā iepriekš, bet ar šifrēšanu.

Atliek tikai iestatīt atļaujas ugunsmūrī:

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

Tagad visam vajadzētu darboties kā nākas.

[Papildu] Node.js instalēšana

Ja pēkšņi ir nepieciešams palaist npm komandas tieši serverī, jāinstalē Node.js.

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

Tas ir viss, es apstājos šajā posmā. Principā esmu apmierināts ar rezultātu. Varbūt es pārslēgšos no DigitalOcean kaut kur tuvāk Krievijai un lētāk. Bet, tā kā es jau biju izgājis visas pārbaudes kārtas vietnē un tur visu izdarīju, es tos parādīju ar piemēru. Turklāt viņu sākuma 100 USD ir lielisks tramplīns treniņiem.

PS Īpašs paldies autoram šī būtība, kas kalpoja par pamatu visām iepriekšminētajām darbībām. Dažos gadījumos tas nedarbojas Laravel 7, es to salaboju.

PPS Ja jūs esat izcils inženieris, kurš domā bash komandās, lūdzu, nespriediet bargi. Jums var šķist, ka šis raksts ir zems standarts, taču es būtu bijis priecīgs, ja man tādu būtu bijis vajadzīgs. Ja ir ieteikumi uzlabojumiem, es esmu par to.

Avots: www.habr.com

Pievieno komentāru