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
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 gewooncat ~/.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.
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
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_name
wanneer 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:
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 (namelijkns1.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
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