Ontplooi 'n toepassing na Laravel 7 op Ubuntu en Nginx

Ontplooi 'n toepassing na Laravel 7 op Ubuntu en Nginx

Ek het besluit om my portefeulje te maak deur Laravel 7 te gebruik. Sodat die hoofblad 'n bestemmingsbladsy sou wees, en al die inligting daarop verander kan word deur die adminpaneel te gebruik. Nie die punt nie. Dit het by ontplooiing gekom. Ek het 'n paar goeie tutoriale gevind oor hoe om dit te doen op 'n volwaardige bediener met al die probleme. Ek is nie baie sterk in ontplooiing nie; ek is oor die algemeen meer voor as vol stapel. En as ek nog in PHP kan skryf en toets, dan voordat ek die bediener bestuur, ens. Ek het nog nie grootgeword nie. Maar ek moes dit uitvind.

Nou gaan ons deur al die stappe, begin met bekendstelling via SSH en eindig met die werkende webwerf. Ons sal probeer om al die slaggate te vermy.

Jy kan dalk soortgelyke instruksies aanlyn vind. Ek het dit darem uiteindelik gevind. Dit is waar, nie op een plek nie, nie sonder die hulp van StackOverflow nie, en skaars in Russies. Ek het gely. Daarom het ek besluit om jou lewe te vereenvoudig.

Ons sal alles met 'n druppel op DigitalOcean doen. Dit is natuurlik nie nodig nie; kies enige gasheer. Wanneer jy 'n werkende bediener op Ubuntu bereik, kom terug. Vir diegene wat nog besluit om dit op DigitalOcean te doen, sal daar meer wenke wees oor die opstel van 'n domein. En $100 verwysing skakel.

Alle DigitalOcean-spesifieke stappe sal in voetnote soos hierdie gegee word.

Kom ons begin.

TL;DR (slegs basiese opdragte)

Skep 'n gebruiker

  • ssh root@[IP-адрСс вашСго Π΄Ρ€ΠΎΠΏΠ»Π΅Ρ‚Π°]
  • adduser laravel
  • usermod -aG sudo laravel
  • su laravel

Voeg SSH daarby

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys
  • Voeg die publieke sleutel in
  • chmod 600 ~/.ssh/authorized_keys

Firewall

  • 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/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Basiese opstelling:

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

Slegs HTTP-opstelling vir 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-instelling vir 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

Skep 'n druppel op DigitalOcean en registreer 'n nuwe SSH-sleutel

Ek glo werklik dat jy self sal uitvind hoe om by DigitalOcean te registreer. Dit is nie maklik nie, met baie verifikasies en ander dinge. As u voortdurend 'n netwerkfout kry wanneer u dokumente verifieer, probeer om alles deur 'n VPN te doen, dit behoort te help.

Klik in die spyskaart bo-aan Skep->Druppeltjies. Kies Ubuntu.

Sodra jy registreer, sal jy $100 op jou rekening ontvang. Maar moenie geflous word nie. Jy het net 60 dae om dit te spandeer. En dit is baie min. Jy sal dalk, soos ek, ’n duurder plan wil gebruik, sodat jy later, wanneer die regte geld begin vloei, na ’n goedkoper een kan oorskakel. Ek sal jou dadelik sΓͺ dat dit nie sal werk nie. Jy kan dit verhoog, maar jy kan dit nie verminder nie. So gaan dit. ek kies Standard->$5.

Ek kies die streek naaste aan ons Frankfurt. VPC-netwerk->verstek-fra1

Ons sal onmiddellik stawing via SSH uitvoer. Klik Nuwe SSH-sleutel. As jy nie SSH het nie, is daar baie eenvoudige instruksies aan die regterkant. Maak 'n bash-terminaal oop en plak ssh-keygen. Dan gaan ons na die lΓͺer met die publieke sleutel /Users/<Π’Π°ΡˆΠ΅ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>/.ssh/id_rsa.pub (of eenvoudig cat ~/.ssh/id_rsa.pub), kopieer die inhoud en plak dit in die venster aan die linkerkant. Enige naam.

Ons kom met 'n gasheernaam vir die druppel.

druk Skep druppel

Skep 'n nuwe gebruiker

  • ssh root@[IP-адрСс вашСго Π΄Ρ€ΠΎΠΏΠ»Π΅Ρ‚Π°]
  • Is jy seker jy wil voortgaan om te koppel (ja/nee/[vingerafdruk])? yes
  • Voer jou SSH-wagwoord in
  • Skep 'n gebruiker larwe: adduser laravel
  • Voer jou wagwoord en ander inligting in (ek voer net volle naam in)
  • Voeg die gebruiker by die sudo-groep: usermod -aG sudo laravel

SSH vir nuwe gebruiker

  • Skakel oor na die nuwe gebruiker: su laravel

Ons voer alle aksies verder uit, tot die einde van die artikel, namens die laravel-gebruiker. Daarom, as jy skielik onderbreek word, teken weer aan en voer in su laravel

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

Ons het die lΓͺer in Vim oopgemaak. As jy glad nie daarmee vertroud is nie, kan jy in Nano werk, jou reg.

Die mees basiese Vim-opdragte

Om die Vim-redigeerder deur die hele artikel te gebruik, moet u net die volgende weet.

  • Vim het verskillende modusse: Normale modus, waarin jy opdragte invoer en modusse en ander kies.
  • Om enige modus te verlaat en terug te keer na normale modus, druk net Esc
  • Beweeg rond: jy kan net pyle gebruik
  • Gaan uit sonder om te stoor <Normal mode>: :q!
  • Gaan uit en stoor <Normal mode>: :wq
  • Skakel oor na teksinvoermodus <Normal mode>: i (uit die Engels. voeg)
  • Ons sit ons publieke sleutel in (wat ons hierbo gedoen het)
  • Ons beskerm teen veranderinge: chmod 600 ~/.ssh/authorized_keys

Installering van 'n firewall

  • Kom ons kyk na al die beskikbare instellings: sudo ufw app list
  • Laat OpenSSH toe (anders sluit dit ons): sudo ufw allow OpenSSH
  • Kom ons begin die firewall: sudo ufw enable, y
  • Ons kyk na: sudo ufw status

Status: active

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

Alles is reg.

Installeer Nginx

Tydens installasie sal jy soms gevra word "Is jy seker?" Antwoord y (wel, net as jy seker is).

  • sudo apt update
  • sudo apt install nginx

Voeg Nginx by die firewall-instellings

  • 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)

Gaan na jou IP. As alles goed gaan, behoort jy die volgende te sien.

Ontplooi 'n toepassing na Laravel 7 op Ubuntu en Nginx

MySQL installeer

  • sudo apt install mysql-server
  • Begin 'n outomatiese beskermingskrip sudo mysql_secure_installation

Beantwoord die vrae wat gevra word. As jy nie weet wat om te antwoord nie, hier is 'n paar voorgestelde opsies:

  • Bekragtig wagwoord-inprop - N

  • Verwyder anonieme gebruikers? β€” Y

  • Verhinder wortelaanmelding op afstand? β€” N

  • Verwyder toetsdatabasis en toegang daartoe? β€” N

  • Herlaai nou voorregtetabelle? β€” Y

  • Kom ons gaan na MySQL: sudo mysql

  • Kom ons kyk na die toegangsmetodes: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Stel 'n wagwoord vir root: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Π’Π°Ρˆ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для MySQL>';

  • Kom ons kyk weer na die toegangsmetodes: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Pas die veranderinge toe en verlaat MySQL: FLUSH PRIVILEGES; ΠΈ exit

  • Nou moet jy gebruik om by MySQL aan te meld mysql -u root -p en voer die wagwoord in

Installeer PHP

Kom ons gebruik 'n derdeparty-bewaarplek vanaf Ondrej 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

Kom ons kies nou. Vir Laravel 7 kan jy PHP 7.3 of 7.4 kies. Die enigste verskil sal in die nommers 3 en 4 wees.

  • 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 Prosesbestuurder (fpm) werk met PHP-versoeke. mysql, natuurlik, om met MySQL te werk.

Van nou af sal ek alles op 7.4 doen.

Stel Nginx op

  • sudo vim /etc/nginx/sites-available/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

In plaas van "<Jou domein>" voer die domein in (byvoorbeeld, mysite.ru) wat jy in die toekoms wil gebruik. As jy nog nie een het nie, skryf enige, en herhaal dan net die stappe in hierdie hoofstuk vir jou domein wanneer jy dit kies.

Voer die volgende in:

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

As jy eerder weergawe 7.3 gekies het php7.4-fpm.sock skryf in php7.4-fpm.sock.

Luister na poort 80 aan server_namewanneer ons by die wortelversoek uitkom /var/www/html neem die indekslΓͺer. Indien na server_name Daar is iets, ons soek so 'n lΓͺer. As ons dit nie kry nie, gooi ons 404 uit. As dit eindig met .php, hardloop deur fpm... As daar is .ht, verbied (403).

  • Maak 'n skakel van sites-available Π² sites-enabled: sudo ln -s /etc/nginx/sites-available/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½> /etc/nginx/sites-enabled/
  • Verwyder tans die skakel na default: sudo unlink /etc/nginx/sites-enabled/default
  • Kontroleer vir foute: sudo nginx -t
  • Herlaai: sudo systemctl reload nginx

Kontroleer die werk:

  • sudo vim /var/www/html/info.php
  • Ons skryf: <?php phpinfo();
  • Kom ons gaan na <Π’Π°Ρˆ IP>/info.php

Jy behoort so iets te sien:

Ontplooi 'n toepassing na Laravel 7 op Ubuntu en Nginx

Nou kan hierdie lΓͺer uitgevee word: sudo rm /var/www/html/info.php

Installeer 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

  • Kom ons gaan na MySQL: mysql -u root -p

  • Skep 'n databasis met die naam larwe: CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • Ons bied wortel toegang tot larwe: GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Π’Π°Ρˆ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ MySQL>';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • Skep 'n gids vir die projek: sudo mkdir -p <Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>

  • Ons verskaf die gebruiker larwe regte op die projek: sudo chown laravel:laravel <Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>

Volgende moet jy die projek oordra. Byvoorbeeld, kloning vanaf Github.

  • cd ./<Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>
  • git clone <ссылка Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚> .

Dit is die moeite werd om te oorweeg dat as jy nie statiese lΓͺers gestoor het nie (byvoorbeeld van /public) op Github, dan sal jy dit natuurlik nie hΓͺ nie. Ek het byvoorbeeld 'n aparte draad geskep om dit op te los deploy, waaruit ek reeds gekloon het: git clone -b <имя Π²Π΅Ρ‚ΠΊΠΈ> --single-branch <ссылка Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚> ..

  • Installeer afhanklikhede: composer install
  • Skep .env: vim .env

Die basiese weergawe daarvan lyk soos volg:

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>

As jy jou .env kopieer, vervang APP_ENV met produksie, APP_DEBUG met vals en voer die korrekte instellings vir MySQL in.

  • Migreer die databasis: php artisan migrate
  • Genereer die kode: php artisan key:generate

Verander toestemmings:

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

Die laaste ding wat oorbly is om Nginx vir Laravel te herkonfigureer:

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

Soos verlede keer, as jy eerder weergawe 7.3 gekies het php7.4-fpm.sock skryf in php7.4-fpm.sock.

Stel 'n domein op DigitalOcean op

Alles is eintlik baie eenvoudig. Jy koop 'n domein (enige plek), skakel oor na DigitalOcean by Skep->Domeine/DNS... In die veld Voeg 'n domein by jy gaan hierdie domein in en klik byvoeg. Gaan dan na die domeininstellings en na die veld GASTNAAM ingaan @. Kies 'n projek en klik Skep rekord.
Gaan nou na die webwerf waar jy die domein gekoop het, vind β€œDNS Servers” daar (of iets soortgelyks) en voer die DigitalOcean-bedieners in (naamlik ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com). Nou moet jy 'n bietjie (of baie) wag totdat hierdie instellings aanvaar word. Klaar!
Die enigste probleem is dat u webwerf slegs as HTTP sal oopmaak. Gaan na die volgende deel om HTTPS te hΓͺ.

Die opstel van HTTPS

Installeer certbot en gee dit die domeinnaam (formaat mysite.ru) en domeinnaam met 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.<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Nou moet jy Nginx herkonfigureer (moenie vergeet om jou waardes te vervang nie):

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

Ek dink jy verstaan ​​reeds wat verander moet word vir PHP 7.3.

Hier is alles eintlik eenvoudig. Ons herlei eenvoudig alle versoeke van HTTP (poort 80) na HTTPS (poort 443). En daar doen ons alles dieselfde as voorheen, maar met enkripsie.

Al wat oorbly is om die toestemmings in die firewall in te stel:

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

Nou moet alles werk soos dit moet.

[Gevorderd] Installeer Node.js

As jy skielik npm-opdragte direk op die bediener moet uitvoer, moet jy Node.js installeer.

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

Dis dit, ek het op hierdie stadium gestop. In beginsel is ek tevrede met die resultaat. Miskien sal ek van DigitalOcean oorskakel iewers nader aan Rusland en goedkoper. Maar aangesien ek reeds deur al die verifikasie rondtes op die webwerf gegaan het en alles daar gedoen het, het ek hulle deur voorbeeld gewys. Daarbenewens is hul begin $100 'n uitstekende springplank vir opleiding.

NS Spesiale dank aan die skrywer hierdie kern, wat as basis gedien het vir al die bogenoemde aksies. In sommige gevalle werk dit nie vir Laravel 7 nie, ek het dit reggemaak.

PPS As jy toevallig 'n top-ingenieur is wat in bash-opdragte dink, moet asseblief nie hard oordeel nie. U mag vind dat hierdie artikel van 'n lae vlak is, maar ek sou bly gewees het om een ​​te vind toe ek dit nodig gehad het. As daar voorstelle vir verbetering is, is ek almal daarvoor.

Bron: will.com

Voeg 'n opmerking