Een applicatie implementeren op Laravel 7 op Ubuntu en Nginx

Een applicatie implementeren op Laravel 7 op Ubuntu en Nginx

Ik besloot mijn portfolio te maken met Laravel 7. Zodat de hoofdpagina een landingspagina zou zijn en alle informatie daarop kon worden gewijzigd via het beheerderspaneel. Niet het punt. Het kwam tot inzet. Ik heb een paar goede tutorials gevonden over hoe je dit kunt doen op een volwaardige server met alle problemen. Ik ben niet erg sterk in inzet; ik ben over het algemeen meer vooraan dan op de volledige stapel. En als ik nog steeds in PHP kan schrijven en testen, dan voordat ik de server beheer, enz. Ik ben nog niet volwassen. Maar ik moest het uitzoeken.

Nu doorlopen we alle stappen, beginnend met de lancering via SSH en eindigend met de werksite. We zullen proberen alle valkuilen te vermijden.

Mogelijk kunt u soortgelijke instructies online vinden. Ik heb het tenslotte eindelijk gevonden. Toegegeven, niet op één plek, niet zonder de hulp van StackOverflow, en nauwelijks in het Russisch. Ik leed. Daarom heb ik besloten om je leven te vereenvoudigen.

We doen alles met een druppeltje op DigitalOcean. Dit is uiteraard niet nodig; kies een willekeurige hosting. Wanneer u een werkende server op Ubuntu bereikt, komt u terug. Voor degenen die toch besluiten om het op DigitalOcean te doen, volgen er nog meer tips over het opzetten van een domein. En Verwijzingslink van $ 100.

Alle DigitalOcean-specifieke stappen worden in voetnoten zoals deze gegeven.

Laten we beginnen.

TL;DR (alleen basisopdrachten)

Maak een gebruiker aan

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

Voeg er SSH aan toe

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys
  • Voer de openbare 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/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Basisopstelling:

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

Alleen HTTP-configuratie voor 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 voor 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

Maak een druppel op DigitalOcean en registreer een nieuwe SSH-sleutel

Ik geloof echt dat je er zelf wel achter zult komen hoe je je bij DigitalOcean kunt registreren. Het is niet eenvoudig, met veel verificaties en andere zaken. Als u voortdurend een netwerkfout krijgt bij het verifiΓ«ren met behulp van documenten, probeer dan alles via een VPN te doen, dit zou moeten helpen.

Klik in het menu bovenaan op creΓ«ren->Droplets. Kiezen Ubuntu.

Zodra u zich registreert, ontvangt u $ 100 op uw account. Maar laat je niet misleiden. Je hebt slechts 60 dagen om het uit te geven. En dit is heel weinig. Misschien wil je, net als ik, een duurder abonnement gebruiken, zodat je later, wanneer het echte geld begint te stromen, kunt overstappen naar een goedkoper abonnement. Ik zal je meteen vertellen dat het niet zal werken. Je kunt het vergroten, maar je kunt het niet verkleinen. Zo gaat het. ik kies Standaard->$5.

Ik kies de regio die het dichtst bij ons ligt Frankfurt. VPC-netwerk->standaard-fra1

Wij voeren direct authenticatie uit via SSH. Klik Nieuwe SSH-sleutel. Als u geen SSH heeft, vindt u aan de rechterkant zeer eenvoudige instructies. Open een bash-terminal en plak ssh-keygen. Vervolgens gaan we naar het bestand met de publieke sleutel /Users/<Π’Π°ΡˆΠ΅ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>/.ssh/id_rsa.pub (of gewoon cat ~/.ssh/id_rsa.pub), kopieer de inhoud en plak deze in het venster aan de linkerkant. Iedere naam.

We bedenken een hostnaam voor de droplet.

Klik Druppel maken

Een nieuwe gebruiker maken

  • ssh root@[IP-адрСс вашСго Π΄Ρ€ΠΎΠΏΠ»Π΅Ρ‚Π°]
  • Weet u zeker dat u wilt doorgaan met verbinden (ja/nee/[vingerafdruk])? yes
  • Voer uw SSH-wachtwoord in
  • Maak een gebruiker aan laravel: adduser laravel
  • Voer uw wachtwoord en andere informatie in (ik voer alleen de volledige naam in)
  • Voeg de gebruiker toe aan de sudo-groep: usermod -aG sudo laravel

SSH voor nieuwe gebruiker

  • Overschakelen naar de nieuwe gebruiker: su laravel

We voeren alle acties verder uit, tot het einde van het artikel, namens de laravel-gebruiker. Daarom, als u plotseling wordt onderbroken, log dan opnieuw in en ga naar binnen su laravel

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

We hebben het bestand geopend in Vim. Als je er helemaal niet bekend mee bent, kun je in Nano werken, je hebt gelijk.

De meest elementaire Vim-opdrachten

Om de Vim-editor in het hele artikel te kunnen gebruiken, hoeft u alleen maar het volgende te weten.

  • Vim heeft verschillende modi: Normale modus, waarin u opdrachten invoert en modi selecteert en andere.
  • Om een ​​modus te verlaten en terug te keren naar de normale modus, drukt u gewoon op Esc
  • Beweeg rond: je kunt gewoon pijlen gebruiken
  • Afsluiten zonder op te slaan <Normal mode>: :q!
  • Sluit af en sla op <Normal mode>: :wq
  • Schakel over naar de tekstinvoermodus <Normal mode>: i (uit het Engels. invoegen)
  • We voegen onze publieke sleutel in (wat we hierboven deden)
  • Wij beschermen tegen veranderingen: chmod 600 ~/.ssh/authorized_keys

Een firewall installeren

  • Laten we eens kijken naar alle beschikbare instellingen: sudo ufw app list
  • Sta OpenSSH toe (anders worden we vergrendeld): sudo ufw allow OpenSSH
  • Laten we de firewall starten: sudo ufw enable, y
  • controleren: sudo ufw status

Status: active

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

Alles is in orde.

Nginx installeren

Tijdens de installatie wordt u soms gevraagd "Weet u het zeker?" Antwoord y (nou ja, alleen als je het zeker weet).

  • sudo apt update
  • sudo apt install nginx

Nginx toevoegen aan de firewallinstellingen

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

Ga naar je IP. Als alles goed gaat, zou je het volgende moeten zien.

Een applicatie implementeren op Laravel 7 op Ubuntu en Nginx

MySQL installeren

  • sudo apt install mysql-server
  • Een automatisch beveiligingsscript starten sudo mysql_secure_installation

Beantwoord de gestelde vragen. Als u niet weet wat u moet antwoorden, volgen hier enkele voorgestelde opties:

  • Wachtwoordplug-in valideren - N

  • Anonieme gebruikers verwijderen? β€” Y

  • Root-aanmelding op afstand niet toestaan? β€” N

  • Testdatabase verwijderen en toegang daartoe krijgen? β€” N

  • Privilegetabellen nu opnieuw laden? β€” Y

  • Laten we naar MySQL gaan: sudo mysql

  • Laten we eens kijken naar de toegangsmethoden: SELECT user,authentication_string,plugin,host FROM mysql.user;

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

  • Laten we opnieuw naar de toegangsmethoden kijken: SELECT user,authentication_string,plugin,host FROM mysql.user;

  • Pas de wijzigingen toe en sluit MySQL af: FLUSH PRIVILEGES; ΠΈ exit

  • Om in te loggen op MySQL moet u nu gebruiken mysql -u root -p en voer het wachtwoord in

PHP installeren

Laten we een repository van derden gebruiken 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

Laten we nu kiezen. Voor Laravel 7 kun je kiezen voor PHP 7.3 of 7.4. Het enige verschil zit in de nummers 3 en 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) werkt met PHP-verzoeken. mysql, natuurlijk, voor het werken met MySQL.

Vanaf nu doe ik alles op 7.4.

Nginx instellen

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

In plaats van "" voert u het domein in (bijvoorbeeld mysite.ru) die u in de toekomst wilt gebruiken. Als u er nog geen heeft, schrijf er dan een en herhaal dan de stappen in dit hoofdstuk voor uw domein wanneer u het selecteert.

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

Als u in plaats daarvan versie 7.3 heeft gekozen php7.4-fpm.sock inschrijven php7.4-fpm.sock.

Luister of poort 80 aan staat server_namewanneer we bij het rootverzoek aankomen /var/www/html neem het indexbestand. Als na server_name Er is iets, we zijn op zoek naar zo'n bestand. Als we het niet vinden, gooien we 404 weg. Als het eindigt met .php, doorlopen fpm... als er is .ht, verbieden (403).

  • Een link maken van sites-available Π² sites-enabled: sudo ln -s /etc/nginx/sites-available/<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½> /etc/nginx/sites-enabled/
  • De link verwijderen naar default: sudo unlink /etc/nginx/sites-enabled/default
  • Controleren op fouten: sudo nginx -t
  • Opnieuw opstarten: sudo systemctl reload nginx

Controle van het werk:

  • sudo vim /var/www/html/info.php
  • We schrijven: <?php phpinfo();
  • Laten we gaan naar <Π’Π°Ρˆ IP>/info.php

Je zou zoiets als dit moeten zien:

Een applicatie implementeren op Laravel 7 op Ubuntu en Nginx

Nu kan dit bestand worden verwijderd: 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

  • Laten we naar MySQL gaan: mysql -u root -p

  • Maak een database met de naam laravel: CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • Maak een map voor het project: sudo mkdir -p <Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>

  • Wij bieden de gebruiker laravel rechten op het project: sudo chown laravel:laravel <Имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°>

Vervolgens moet u het project overdragen. Bijvoorbeeld klonen vanuit Github.

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

Het is de moeite waard om te overwegen dat als u geen statische bestanden heeft opgeslagen (bijvoorbeeld van /public) op Github, dan heb je ze natuurlijk niet. Ik heb bijvoorbeeld een aparte thread aangemaakt om dit op te lossen deploy, waarvan ik al heb gekloond: git clone -b <имя Π²Π΅Ρ‚ΠΊΠΈ> --single-branch <ссылка Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚> ..

  • Afhankelijkheden installeren: composer install
  • Maak .env: vim .env

De basisversie ervan ziet er als volgt uit:

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>

Als u uw .env kopieert, vervangt u APP_ENV door production, APP_DEBUG door false en voert u de juiste instellingen voor MySQL in.

  • De database migreren: php artisan migrate
  • Het genereren van de code: php artisan key:generate

Machtigingen wijzigen:

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

Het laatste dat overblijft is het opnieuw configureren van Nginx voor 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;
    }
}

Zoals de vorige keer, als je in plaats daarvan versie 7.3 hebt gekozen php7.4-fpm.sock inschrijven php7.4-fpm.sock.

Een domein instellen op DigitalOcean

Alles is eigenlijk heel eenvoudig. U koopt een domein (waar dan ook), stapt over naar DigitalOcean op creΓ«ren->Domeinen/DNS. ΠΎΠ»Π΅ Voeg een domein toe u dit domein invoert, klikt u op toevoegen. Ga vervolgens naar de domeininstellingen en naar het veld HOSTNAME binnenkomen @. Selecteer een project en klik Record maken.
Ga nu naar de site waar je het domein hebt gekocht, zoek daar β€œDNS Servers” (of iets dergelijks) en voer de DigitalOcean-servers in (namelijk ns1.digitalocean.com, ns2.digitalocean.com, ns3.digitalocean.com). Nu moet je een beetje (of veel) wachten totdat deze instellingen zijn geaccepteerd. Klaar!
Het enige probleem is dat uw site alleen als HTTP wordt geopend. Ga naar het volgende deel om HTTPS te hebben.

HTTPS instellen

Installeer certbot en geef de domeinnaam door (format 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.<Π’Π°Ρˆ Π΄ΠΎΠΌΠ΅Π½>

Nu moet je Nginx opnieuw configureren (vergeet niet je waarden te vervangen):

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

Ik denk dat je al begrijpt wat er moet worden veranderd voor PHP 7.3.

Hier is eigenlijk alles eenvoudig. We leiden eenvoudigweg alle verzoeken om van HTTP (poort 80) naar HTTPS (poort 443). En daar doen we alles hetzelfde als voorheen, maar dan met encryptie.

Het enige dat overblijft is het instellen van de machtigingen in de firewall:

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

Nu zou alles moeten werken zoals het zou moeten werken.

[Geavanceerd] Node.js installeren

Als u plotseling npm-opdrachten rechtstreeks op de server moet uitvoeren, moet u Node.js installeren.

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

Dat is alles, ik ben in dit stadium gestopt. In principe ben ik tevreden met het resultaat. Misschien stap ik over van DigitalOcean ergens dichter bij Rusland en goedkoper. Maar aangezien ik alle verificatierondes op de site al had doorlopen en daar alles deed, heb ik ze als voorbeeld laten zien. Bovendien is hun startprijs van $ 100 een uitstekende springplank voor training.

P.S. Speciale dank aan de auteur deze essentie, die als basis dienden voor alle bovengenoemde acties. In sommige gevallen werkt het niet voor Laravel 7, ik heb het opgelost.

PPS Als je toevallig een topingenieur bent die denkt in bash-commando's, oordeel dan alsjeblieft niet hard. Misschien vindt u dit artikel van een laag niveau, maar ik zou er graag een hebben gevonden toen ik het nodig had. Als er suggesties voor verbetering zijn, ben ik daar helemaal voor.

Bron: www.habr.com

Voeg een reactie