Otsustasin oma portfoolio teha Laravel 7 abil. Et pealeheks oleks maandumisleht ja kogu sellel olevat infot saaks muuta administraatori paneeli abil. Mitte asja mõte. See jõudis kasutuselevõtuni. Leidsin paar head õpetust, kuidas seda kõigi hädadega täisväärtuslikus serveris teha. Ma ei ole juurutamisel eriti tugev; üldiselt olen rohkem ees kui täispinn. Ja kui ikka PHP-s kirjutada ja testida saan, siis enne serveri haldamist jne. Ma pole veel suureks saanud. Aga ma pidin selle välja mõtlema.
Nüüd läbime kõik sammud, alustades SSH kaudu käivitamisest ja lõpetades töökohaga. Püüame vältida kõiki lõkse.
Võimalik, et leiate Internetist sarnaseid juhiseid. Ju ma selle lõpuks leidsin. Tõsi, mitte ühes kohas, mitte ilma StackOverflow abita ja vaevalt ka vene keeles. ma kannatasin. Sellepärast otsustasin teie elu lihtsustada.
Teeme DigitalOceanis kõike tilgakesega. See pole muidugi vajalik; valige mis tahes hostimine. Kui jõuate Ubuntu töötava serverini, tulge tagasi. Neile, kes otsustavad seda siiski DigitalOceanis teha, on veel näpunäiteid domeeni seadistamiseks. Ja
Kõik DigitalOceani spetsiifilised sammud esitatakse sellistes joonealustes märkustes.
Alustame.
TL;DR (ainult põhikäsud)
Looge kasutaja
ssh root@[IP-адрес вашего дроплета]
adduser laravel
usermod -aG sudo laravel
su laravel
Lisage sellele SSH
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
- Sisestage avalik võti
chmod 600 ~/.ssh/authorized_keys
Tulemüür
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/<Ваш домен>
Põhiseade:
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;
}
}
Ainult HTTP-seadistus Laraveli jaoks:
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-i seadistus Laraveli jaoks:
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
Looge DigitalOceanis piisk ja registreerige uus SSH-võti
Usun tõesti, et mõtlete ise välja, kuidas DigitalOceanis registreeruda. See pole lihtne, palju kontrollimisi ja muid asju. Kui teil tekib dokumentide abil kontrollimisel pidevalt võrgutõrge, proovige kõike teha VPN-i kaudu, see peaks aitama.
Klõpsake ülaosas menüüs Looma->Tilgad. Vali Ubuntu.
Niipea kui registreerute, saate oma kontole 100 dollarit. Kuid ärge laske end petta. Teil on selle kulutamiseks aega vaid 60 päeva. Ja seda on väga vähe. Võib-olla soovite, nagu minagi, kasutada kallimat plaani, et hiljem, kui päris raha voolama hakkab, saaksite vahetada odavama vastu. Ma ütlen teile kohe, et see ei tööta. Saate seda suurendada, kuid te ei saa seda vähendada. Ja nii see läheb. ma valin Standard->$5.
Valin meile lähima piirkonna Frankfurt. VPC võrk->default-fra1
Teostame kohe autentimise SSH kaudu. Klõpsake Uus SSH-võti. Kui teil pole SSH-d, on paremal väga lihtsad juhised. Avage bashi terminal ja kleepige
ssh-keygen
. Seejärel läheme avaliku võtmega faili juurde/Users/<Ваше имя пользователя>/.ssh/id_rsa.pub
(või lihtsaltcat ~/.ssh/id_rsa.pub
), kopeerige sisu ja kleepige see vasakpoolsesse aknasse. Ükskõik milline nimi.Me mõtleme tilgale välja hostinime.
Vajuta siia Loo tilk
Looge uus kasutaja
ssh root@[IP-адрес вашего дроплета]
- Kas olete kindel, et soovite ühenduse loomist jätkata (jah/ei/[sõrmejälg])?
yes
- Sisestage oma SSH parool
- Looge kasutaja laravel:
adduser laravel
- Sisestage oma parool ja muu teave (ma sisestan ainult täisnime)
- Lisage kasutaja sudo rühma:
usermod -aG sudo laravel
SSH uuele kasutajale
- Uuele kasutajale lülitumine:
su laravel
Kõik toimingud teostame edaspidi kuni artikli lõpuni laraveli kasutaja nimel. Seetõttu, kui teid ootamatult katkestatakse, logige uuesti sisse ja sisestage su laravel
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
Avasime faili Vimis. Kui te pole sellega üldse tuttav, võite töötada Nanos, teie õigus.
Kõige elementaarsemad Vimi käsud
Vimi redaktori kasutamiseks kogu artiklis peate lihtsalt teadma järgmist.
- Vimil on erinevad režiimid: Tavarežiim, kus sisestad käske ja valid režiime ja muud.
- Mis tahes režiimist väljumiseks ja tavarežiimi naasmiseks vajutage lihtsalt
Esc
- Liikuge ringi: saate kasutada lihtsalt nooli
- Välju salvestamata
<Normal mode>
::q!
- Välju ja salvesta
<Normal mode>
::wq
- Lülituge tekstisisestusrežiimile
<Normal mode>
:i
(inglise keelest. sisestada)
- Sisestame oma avaliku võtme (mida tegime eespool)
- Kaitseme muudatuste eest:
chmod 600 ~/.ssh/authorized_keys
Tulemüüri paigaldamine
- Vaatame kõiki saadaolevaid seadeid:
sudo ufw app list
- Luba OpenSSH (muidu lukustab see meid):
sudo ufw allow OpenSSH
- Käivitame tulemüüri:
sudo ufw enable
,y
- Kontrollime:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Kõik on korras.
Nginxi installimine
Installimise ajal küsitakse mõnikord "Kas olete kindel?" Vastus y
(ainult siis, kui olete kindel).
sudo apt update
sudo apt install nginx
Nginxi lisamine tulemüüri sätetesse
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)
Minge oma IP-le. Kui kõik läheb hästi, peaksite nägema järgmist.
MySQL-i installimine
sudo apt install mysql-server
- Automaatse kaitseskripti käivitamine
sudo mysql_secure_installation
Vastake esitatud küsimustele. Kui te ei tea, mida vastata, on siin mõned soovitatud võimalused.
-
Kinnitage parooli plugin -
N
-
Kas eemaldada anonüümsed kasutajad? —
Y
-
Kas keelata juurjuurde sisselogimine eemalt? —
N
-
Kas eemaldada testandmebaas ja sellele juurdepääs? —
N
-
Kas laadida privileegitabelid kohe uuesti? —
Y
-
Läheme MySQL-i:
sudo mysql
-
Vaatame juurdepääsu meetodeid:
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
Seadke root jaoks parool:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Ваш пароль для MySQL>';
-
Vaatame uuesti juurdepääsumeetodeid:
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
Rakendage muudatused ja väljuge MySQL-ist:
FLUSH PRIVILEGES;
иexit
-
Nüüd peate MySQL-i sisselogimiseks kasutama
mysql -u root -p
ja sisestage parool
PHP installimine
Kasutame kolmanda osapoole hoidlat
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
Nüüd valime. Laravel 7 jaoks saate valida PHP 7.3 või 7.4. Ainus erinevus on numbrites 3 ja 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 protsessihaldur (fpm) töötab PHP päringutega. mysql muidugi MySQL-iga töötamiseks.
Edaspidi teen kõik 7.4.
Nginxi seadistamine
sudo vim /etc/nginx/sites-available/<Ваш домен>
Sisestage "<Teie domeen>" asemel domeen (näiteks mysite.ru
), mida soovite tulevikus kasutada. Kui teil seda veel pole, kirjutage see üles ja korrake selle valimisel oma domeeni jaoks selles peatükis toodud samme.
Sisestage järgmised:
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;
}
}
Kui valisite selle asemel versiooni 7.3 php7.4-fpm.sock
sisse kirjutama php7.4-fpm.sock
.
Kuulake port 80 sisse server_name
kui jõuame juurpäringuni /var/www/html
võtke registrifail. Kui pärast server_name
Midagi on, me otsime sellist faili. Kui me seda ei leia, viskame välja 404. Kui see lõpeb .php
, jookse läbi fpm
... Kui seal on .ht
, keelata (403).
- Lingi tegemine aadressilt
sites-available
вsites-enabled
:sudo ln -s /etc/nginx/sites-available/<Ваш домен> /etc/nginx/sites-enabled/
- Linki eemaldamine
default
:sudo unlink /etc/nginx/sites-enabled/default
- Vigade kontrollimine:
sudo nginx -t
- Taaskäivitamine:
sudo systemctl reload nginx
Töö kontrollimine:
sudo vim /var/www/html/info.php
- Me kirjutame:
<?php phpinfo();
- Mine
<Ваш IP>/info.php
Peaksite nägema midagi sellist:
Nüüd saab selle faili kustutada: sudo rm /var/www/html/info.php
Installige 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
-
Läheme MySQL-i:
mysql -u root -p
-
Looge andmebaas nimega laravel:
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
Pakume juurjuurdepääsu laravel:
GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';
-
FLUSH PRIVILEGES;
-
exit
-
cd /var/www/html
-
Looge projekti jaoks kaust:
sudo mkdir -p <Имя проекта>
-
Pakume kasutajale laravel õigused projektile:
sudo chown laravel:laravel <Имя проекта>
Järgmisena peate projekti üle kandma. Näiteks kloonimine Githubist.
cd ./<Имя проекта>
git clone <ссылка на проект> .
Tasub kaaluda, et kui te ei salvestanud staatilisi faile (näiteks alates /public
) Githubis, siis loomulikult teil neid pole. Näiteks lõin selle lahendamiseks eraldi lõime deploy
, millest ma juba kloonisin: git clone -b <имя ветки> --single-branch <ссылка на проект> .
.
- Sõltuvuste installimine:
composer install
- Looge .env:
vim .env
Selle põhiversioon näeb välja selline:
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>
Kui kopeerite oma .env-i, asendage APP_ENV tootmisega, APP_DEBUG valega ja sisestage MySQL-i õiged sätted.
- Andmebaasi migreerimine:
php artisan migrate
- Koodi genereerimine:
php artisan key:generate
Lubade muutmine:
sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache
Viimane asi, mis jääb, on Nginx Laraveli jaoks uuesti konfigureerida:
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;
}
}
Nagu eelmisel korral, kui valisite selle asemel versiooni 7.3 php7.4-fpm.sock
sisse kirjutama php7.4-fpm.sock
.
Domeeni seadistamine teenuses DigitalOcean
Kõik on tegelikult väga lihtne. Kui ostate domeeni (ükskõik kus), lülituge DigitalOceanile aadressil Looma->Domeenid/DNS... Väljas Lisage domeen sisestate selle domeeni ja klõpsake nuppu Lisa. Seejärel minge domeeni seadetesse ja väljale HOSTNAME sisenema @. Valige projekt ja klõpsake Loo rekord.
Nüüd minge saidile, kust domeeni ostsite, leidke sealt "DNS-serverid" (või midagi sarnast) ja sisestage DigitalOceani serverid (nimeltns1.digitalocean.com
,ns2.digitalocean.com
,ns3.digitalocean.com
). Nüüd peate natuke (või palju) ootama, kuni need seaded aktsepteeritakse. Valmis!
Ainus probleem on see, et teie sait avaneb ainult HTTP-na. HTTPS-i kasutamiseks liikuge järgmise osa juurde.
HTTPS-i seadistamine
Installige certbot ja edastage sellele domeeninimi (vorming mysite.ru
) ja domeeninimi koos www-ga (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.<Ваш домен>
Nüüd peate Nginxi uuesti konfigureerima (ärge unustage oma väärtusi asendada):
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;
}
}
Arvan, et saate juba aru, mida tuleb PHP 7.3 jaoks muuta.
Siin on tegelikult kõik lihtne. Me lihtsalt suuname kõik päringud HTTP-lt (port 80) ümber HTTPS-i (port 443). Ja seal teeme kõike samamoodi nagu varem, kuid krüptimisega.
Jääb üle vaid tulemüüris õigused määrata:
sudo nginx -t
sudo ufw app list
sudo ufw allow 'Nginx HTTPS'
sudo ufw status
sudo systemctl reload nginx
Nüüd peaks kõik toimima nii nagu peab.
[Täpsemalt] Node.js installimine
Kui teil on ootamatult vaja npm-käske otse serveris käivitada, peate installima Node.js-i.
sudo apt update
sudo apt install -y nodejs npm
nodejs -v
See on kõik, ma peatusin selles etapis. Põhimõtteliselt olen tulemusega rahul. Võib-olla vahetan DigitalOceanilt kuskil Venemaale lähemal ja odavamalt. Aga kuna olin saidil kõik kontrollringid juba läbinud ja seal kõik ära teinud, siis näitasin neile eeskuju. Lisaks on nende algav 100 dollarit suurepärane hüppelaud treenimiseks.
PS Eriline tänu autorile
PPS Kui juhtute olema tippinsener, kes mõtleb bash-käskude järgi, ärge andke karmi hinnangut. Võib-olla leiate, et see artikkel on madala tasemega, kuid ma oleksin hea meelega selle leidnud, kui oleksin seda vajanud. Kui on parendusettepanekuid, siis olen selle poolt.
Allikas: www.habr.com