Tot ce trebuie să știți pentru a implementa o aplicație web Laravel pe o mașină Ubuntu 20.04 LTS
Laravel este un cadru PHP open-source foarte popular, cu sintaxa expresivă și elegantă folosită pentru a proiecta aplicații web moderne și frumoase. Laravel își propune să elimine durerea dezvoltării web și să o facă o experiență plăcută și creativă, transformând dezvoltatorii web în artizani web.
În acest ghid, veți învăța cum să instalați Laravel cu stiva LAMP pe un server Ubuntu 20.04 pentru a vă pune în funcțiune aplicația web.
Cerințe preliminare
Pentru a urma acest ghid, veți avea nevoie de un server Ubuntu 20.04 LTS și să fiți conectat ca a sudo
utilizator. Înainte de a începe, actualizați și actualizați pachetele Ubuntu 20.04 rulând:
sudo apt update && sudo apt upgrade
Instalarea LAMP Stack
LAMP este un acronim pentru L sistem de operare inux, A server web pache, M baza de date ySQL și P Limbajul de programare HP. Suntem deja pe Ubuntu 20.04, care bifează Linux în stiva LAMP. Deci vom instala restul de trei pachete pentru a completa stiva LAMP pentru aplicația noastră Laravel.
Nu există un meta-pachet disponibil pentru a instala stiva LAMP în depozitele Ubuntu 20.04. Dar putem folosi o mică caracteristică îngrijită a apt
manager de pachete numit sarcini. Sarcinile sunt desemnate folosind numele sarcinii disponibile cu un cadet (^
) anexat acestuia.
sudo apt install lamp-server^
Această comandă va căuta în fișierele listei de pachete tot câmpul „Sarcina:” și va instala toate pachetele cu „lamp-server” în câmpul lor de activitate. Deci stiva LAMP constând din pachete Apache, MySQL și PHP cu toate dependențele lor va fi instalată pe serverul dumneavoastră Ubuntu.
Configurați firewall
Odată ce ați instalat stiva LAMP, trebuie, de asemenea, să configurați firewall-ul necomplicat (UFW) și să modificați regulile acestuia, astfel încât să puteți accesa serverul Apache de pe internet.
UFW oferă profiluri de aplicație simple care pot fi utilizate pentru a schimba regulile și a comuta traficul pe porturile de rețea. Rulați următoarea comandă pentru a lista toate aplicațiile care accesează porturile de rețea:
lista de aplicații sudo ufw
Veți vedea o ieșire ca aceasta:
Aplicații disponibile: Apache Apache Full Apache Secure OpenSSH
Porturile de rețea deschise de aceste profiluri pe serverul Ubuntu 20.04 sunt enumerate mai jos:
- Apache: Acest profil deschide doar portul
80
(permite trafic HTTP) - Apache Full: Acest profil le deschide pe ambele
80
&443
porturi (permite trafic HTTP și HTTPS) - Apache Secure: Acest profil deschide doar portul
443
(permite trafic HTTPS) - OpenSSH: Acest profil deschide portul
22
care permite protocolul SSH
Trebuie să activați profilul „Apache Full”, care va permite traficul către serverul web Apache de pe internet. În plus, va trebui să activați profilul „OpenSSH”, care permite traficul pe port 22
(SSH) pe serverul dumneavoastră Ubuntu 20.04. Dacă activați UFW fără a permite profilul „OpenSSH”, nu vă veți putea conecta la server folosind SSH.
Pentru a schimba regula UFW și a permite traficul în port 80
și 22
, alerga:
sudo ufw allow 'Apache Full' sudo ufw allow 'OpenSSH'
Apoi activați paravanul de protecție UFW utilizând următoarea comandă:
sudo ufw enable
Este posibil să primiți un prompt care spune „comanda poate perturba conexiunile ssh existente. Continuați cu operațiunile (y|n)?”. presa Y
pentru a continua, deoarece am adăugat deja o regulă pentru a permite SSH în UFW.
Acum puteți accesa pagina web implicită Apache folosind adresa IP a serverului Ubuntu de pe internet. Pentru a face acest lucru, deschideți browserul și introduceți adresa IP a serverului Ubuntu 20.04 în bara de adrese URL și apăsați Enter.
//Your_ubuntu_server_ip
Această pagină confirmă că serverul web Apache rulează corect și că regulile UFW sunt configurate corect.
Configurarea bazei de date MySQL pentru Laravel
Laravel 7 face interacțiunea cu bazele de date extrem de simplă prin diferitele backend-uri de baze de date pe care le acceptă, cum ar fi versiunea MySQL 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ și SQL Server 2017+. Avem deja cel mai recent pachet MySQL instalat cu lamp-sever^
sarcină. Deci, în această secțiune, vom configura serverul MySQL și apoi vom vedea cum să configurați un nou utilizator MySQL și o bază de date pentru aplicația Laravel.
Configurați MySQL
Baza de date MySQL vine cu un script de securitate preinstalat care poate fi folosit pentru a elimina unele setări implicite nesigure. Este recomandat să rulați acest script înainte de a vă implementa aplicația Laravel.
sudo mysql_secure_installation
Comanda de mai sus va executa scriptul de securitate care vă va solicita o serie de întrebări pentru configurarea serverului MySQL.
În primul rând, veți fi întrebat dacă doriți să configurați VALIDAȚI PAROLA
conecteaza. Acest plugin vă verifică parola și le clasifică drept sigure sau nesigure în funcție de nivelul politicii de validare a parolei pe care îl veți alege în curând. Deci apăsați Y dacă doriți să activați acest plugin.
Ieșire: Securizarea implementării serverului MySQL. Conectarea la MySQL folosind o parolă goală. VALIDARE PAROLA COMPONENT poate fi folosit pentru a testa parolele și pentru a îmbunătăți securitatea. Verifică puterea parolei și permite utilizatorilor să seteze numai acele parole care sunt suficient de sigure. Doriți să configurați componenta VALIDATE PAROLA? Apăsați y|Y pentru Da, orice altă tastă pentru Nu: Y
Apoi setați nivelul politicii de validare a parolei fie introducând 0
, 1
sau 2
în funcție de cât de puternică doriți să vă creați parola pentru bazele de date.
Ieșire: Există trei niveluri de politică de validare a parolei: LOW Length >= 8 MEDIUM Length >= 8, numeric, majuscule mixte și caractere speciale STRONG Lungime >= 8, numeric, majuscule mixte, caractere speciale și fișier dicționar Vă rugăm să introduceți 0 = LOW, 1 = MEDIU și 2 = PUTERNIC: 2
În continuare, vi se va cere să introduceți o nouă parolă pentru utilizatorul root MySQL. Introduceți o parolă potrivită pentru rădăcina dvs. MySQL. Plugin-ul VALIDAȚI PAROLA vă va oferi puterea estimată a parolei în funcție de nivelul de validare a parolei. presa Y
pentru a continua cu parola pe care ați furnizat-o.
Ieșire: Vă rugăm să setați parola pentru root aici. Parolă nouă: Reintroduceți parola nouă: Puterea estimată a parolei: 100 Doriți să continuați cu parola furnizată? (Apăsați y|Y pentru Da, orice altă tastă pentru Nu) : Y
presa Y
pentru restul solicitărilor, vor elimina câțiva utilizatori anonimi și bazele de date de testare, vor dezactiva autentificarea de la distanță la root și vor reîncărca noile setări pentru serverul MySQL. Când ați terminat, testați baza de date rulând:
sudo mysql
Comanda de mai sus va deschide consola MySQL, conectându-se la baza de date MySQL ca rădăcină utilizator. Veți vedea o ieșire ca aceasta:
Ieșire: Bun venit la monitorul MySQL. Comenzile se termină cu ; sau \g. ID-ul dvs. de conexiune MySQL este 10 Versiunea serverului: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle și/sau afiliații săi. Toate drepturile rezervate. Oracle este o marcă înregistrată a Oracle Corporation și/sau a afiliaților săi. Alte nume pot fi mărci comerciale ale proprietarilor respectivi. Tastați „help;” sau „\h” pentru ajutor. Tastați „\c” pentru a șterge instrucțiunea de intrare curentă. mysql>
S-ar putea să fi observat că nu a fost nevoie să introduceți parola pe care ați setat-o pentru utilizatorul root MySQL. Asta pentru că metoda implicită de autentificare pentru utilizatorul root MySQL administrativ este caching_sha2_authentication
in loc de mysql_native_parola
metodă care utilizează o parolă pentru a vă conecta.
Deci, în mod implicit, vă puteți autentifica numai ca utilizator root MySQL cu sudo
utilizatorii activați care acționează ca securitate suplimentară pentru serverul MySQL. Dar biblioteca MySQL PHP nu acceptă caching_sha2_authentication
metodă. Prin urmare, trebuie să folosim mysql_native_parola
metoda când creăm un utilizator nou pentru Laravel, deoarece folosește parole pentru a se conecta și a interacționa cu baza de date.
Creați un nou utilizator și bază de date MySQL
Este întotdeauna o practică bună să creați un utilizator și o bază de date noi special pentru aplicația dvs. în loc să utilizați utilizatori root MySQL și baze de date de testare. Deci vom configura un nou utilizator MySQL numit laravel_user
și o bază de date numită laravel
. Dacă ați urmat tutorialul până în acest punct, ar trebui să aveți consola MySQL deschisă. Pentru a crea utilizatorul numit laravel_user
rulați următoarea interogare în consola MySQL:
Notă: Inlocuieste testpass
în interogarea MySQL de mai jos cu o parolă puternică.
CREAȚI UTILIZATOR 'laravel_user'@'%' IDENTIFICAT CU mysql_native_password DE 'testpass';
Apoi, creați o bază de date numită laravel
pentru aplicația noastră Laravel, rulând această interogare:
CREAȚI BAZĂ DE DATE laravel;
Doar utilizatorul rădăcină MySQL are permisiuni pentru noua bază de date laravel creată. Acordați toate permisiunile pentru laravel
baza de date către laravel_user
rulând:
Acordați totul pe laravel.* LA „laravel_user”@'%';
Deci, acum avem un nou utilizator MySQL și o bază de date, ieșim din consola MySQL rulând:
IEȘIRE;
Testați-vă noul utilizator MySQL conectându-vă la consola MySQL cu acesta, pentru a face acest lucru, executați această comandă în terminal:
mysql -u laravel_user -p
Observați -p
flag în comandă, vă va solicita parola pe care ați folosit-o la crearea laravel_user
(testpass
în interogare). După ce v-ați autentificat în consola MySQL ca laravel_user
, confirmați că utilizatorul are acces la laravel
baza de date rulând:
AFIȘAȚI BAZELE DE DATE;
Ieșire: +--------------------+ | Baza de date | +--------------------+ | laravel | | schema_informatiei | +--------------------+ 2 rânduri în set (0,01 sec)
Ieșirea de mai sus confirmă faptul că utilizatorul MySQL laravel_user
are permisiuni la baza de date laravel
. Ieșiți din consola MySQL folosind IEȘIRE;
interogare astfel încât să putem continua la crearea aplicației DemoApp Laravel.
Instalarea Laravel
Cadrul Laravel utilizează Composer pentru a descărca și gestiona dependențele sale. Deci, trebuie să instalăm Composer pe mașina noastră Ubuntu 20.04 înainte de a putea crea o aplicație Laravel.
Instalați Composer
Composer este un instrument de gestionare a dependențelor pentru PHP, care face instalarea și actualizarea cadrelor și bibliotecilor PHP mult mai ușoare. Vom vedea cum să instalați rapid Composer în acest tutorial, astfel încât să îl putem folosi pentru a descărca și gestiona cadrul Laravel.
Trebuie să instalați câteva pachete suplimentare care sunt solicitate de Composer pentru a funcționa, cum ar fi php-cli
pentru a rula scripturi PHP în terminal și dezarhivați
pentru a ajuta Composer să extragă pachetele. Instalați-le pe amândouă rulând:
sudo apt install php-cli unzip
Apoi, pentru a instala Composer la nivel global, descărcați scriptul de instalare Composer cu răsuci
și instalează-l folosind următoarea comandă:
curl -sS //getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
În cele din urmă, verificați dacă compozitorul s-a instalat corect rulând:
compozitor
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_ / / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer versiunea 1.10.8 2020-06- 24 21:23:30 Utilizare: comandă [opțiuni] [argumente]
Această ieșire confirmă că Composer funcționează corect pe serverul Ubuntu 20.04, puteți începe să îl utilizați pentru a instala și gestiona cadre și biblioteci PHP.
Creați o aplicație Laravel
Avem aproape tot ce este necesar pentru a crea o aplicație Laravel pe serverul nostru Ubuntu 20.04, cu excepția câtorva extensii PHP. Instalați aceste extensii lipsă folosind următoarea comandă:
sudo apt install php-mbstring php-xml php-bcmath php-zip php-json
Acum, putem instala Laravel și crea o nouă aplicație Laravel cu ajutorul Composer. În primul rând, asigurați-vă că vă aflați în directorul principal al utilizatorului:
cd ~
Apoi creați un nou proiect Laravel folosind Composer’s crea-proiect
comanda:
compozitor create-project --prefer-dist laravel/laravel LaravelApp
Comanda de mai sus va crea un nou proiect numit LaravelApp și, de asemenea, va instala și configura Cadrul Laravel pentru dvs. Veți vedea o ieșire similară cu aceasta:
Ieșire: Crearea unui proiect „laravel/laravel” la „./LaravelApp” Instalarea laravel/laravel (v7.12.0) Instalarea laravel/laravel (v7.12.0): Descărcare (100%) Proiect creat în /home/ath/LaravelApp @php - r "file_exists('.env') || copie('.env.example', '.env');" Încărcarea depozitelor de compoziție cu informații despre pachet. Actualizarea dependențelor (inclusiv require-dev) Operațiunile pachetului: 97 instalări, 0 actualizări, 0 înlături Instalarea voku/portable-ascii (1.5.2): Descărcare (100%) Instalarea symfony/polyfill-ctype (v1) .17.1): Descărcare (100%) Instalare phpoption/phpoption (1.7.4): Descărcare (100%) Instalare vlucas/phpdotenv (v4.1.7): Descărcare (100%) Instalare symfony/css-selector (v5.1.2) : Se descarcă (100%) ....
Când instalarea s-a terminat, mergeți la directorul rădăcină al aplicației și apoi rulați Laravel artizan
comandă pentru a verifica dacă toate componentele sunt instalate corect:
cd LaravelApp/ php artizan
Ieșire: Laravel Framework 7.18.0 Utilizare: comandă [opțiuni] [argumente] Opțiuni: -h, --help Afișează acest mesaj de ajutor -q, --quiet Nu scoate niciun mesaj -V, --version Afișează această versiune a aplicației --ansi Forțați ieșirea ANSI --no-ansi Dezactivați ieșirea ANSI -n, --no-interaction Nu puneți nicio întrebare interactivă --env[=ENV] Mediul în care ar trebui să ruleze comanda -v|vv|vvv, --verbose Crește verbozitatea mesajelor: 1 pentru ieșire normală, 2 pentru ieșire mai verbosă și 3 pentru depanare ....
Această ieșire confirmă că instalarea a avut succes și că toate fișierele sunt la locul lor, iar instrumentele de linie de comandă Laravel funcționează corect. Cu toate acestea, mai trebuie să configuram aplicația pentru a configura baza de date și alte câteva setări.
Configurați aplicația Laravel
Fișierele de configurare Laravel sunt situate într-un director numit config
în directorul rădăcină al aplicației. În plus, când am instalat Laravel prin Composer, a creat un fișier de mediu numit „.env” în directorul rădăcină al aplicației. Fișierul de mediu include configurațiile specifice mediului și are prioritate față de setările din fișierele de configurare obișnuite aflate în directorul de configurare.
Notă: Fișierul de configurare a mediului conține informații sensibile despre serverul dvs., cum ar fi parolele bazei de date, cheile aplicației Laravel etc. Prin urmare, nu ar trebui să fie partajat public.
Vom edita acum .env
fișier pentru a modifica configurația și pentru a adăuga acreditările bazei de date la acesta. Deschideți fișierul folosind editorul nano rulând:
nano .env
Există multe variabile de configurare în aceasta .env
fişier. Nu trebuie să le schimbăm pe fiecare, deoarece Composer a configurat majoritatea setărilor automat. Deci, iată lista unor variabile de configurare primare despre care trebuie să le cunoașteți:
NUMELE APLICATIEI
: Numele aplicației folosit pentru notificare și mesaje, așa că o vom seta la „LaravelApp”.APP_ENV
: Această variabilă este utilizată pentru a indica mediul curent al aplicației. Poate fi setat la medii locale, de dezvoltare, de testare sau de producție. O să-l setăm pentru mediul de dezvoltare pentru moment.APP_KEY
: Aplicație unică Cheie folosită pentru a crea săruri și hashuri pentru aplicația web. Este generat automat când instalați Laravel prin Composer, deci nu este nevoie să schimbați acest lucru.APP_DEBUG
: poate fi setat la adevărat sau fals, în funcție de dacă doriți să afișați erori pe partea clientului. Setați-l la fals când treceți în mediul de producție.APP_URL
: URL-ul de bază sau IP-ul aplicației, schimbați-l cu numele de domeniu dacă aveți unul pentru aplicația Laravel sau păstrați-l neatins pentru moment.DB_DATABASE
: Numele bazei de date pe care doriți să o utilizați cu aplicația Laravel. Vom folosi baza de date MySQL „laravel” pe care am creat-o în timp ce configurăm MySQL.DB_USERNAME
: Nume de utilizator pentru a se conecta la baza de date. Vom folosi utilizatorul MySQL „laravel_user” pe care l-am creat.DB_PAROLA
: Parola pentru conectarea la baza de date.
APP_NAME=LaravelApp
APP_ENV=dezvoltare
APP_KEY=base64:Application_unique_key
APP_DEBUG=adevărat APP_URL=//domeniu_sau_IP
LOG_CHANNEL=stiva DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel_user
DB_PAROLA=testpass
Faceți modificări la .env
fișierul în consecință și când ați terminat de editat, salvați și părăsiți fișierul utilizând CTRL+X
apoi apăsați Y
și apăsați enter pentru a confirma. Acum, tot ce rămâne este să configurați serverul Apache și să creați o gazdă virtuală pentru aplicația noastră Laravel.
Configurarea serverului web Apache
Am instalat Laravel în folderul local al directorului principal al utilizatorului. Deși acest lucru funcționează perfect pentru dezvoltarea locală, este recomandat să aveți un director de aplicații web localizat în /var/www
. Motivul pentru care nu am instalat Laravel în /var/www
direct este pentru că este deținut de root și Composer nu ar trebui să fie folosit cu sudo
.
Așa că folosește mv
comandă pentru a muta folderul aplicației Laravel și conținutul acestuia /var/www
:
sudo mv ~/Laravel/ /var/www
Directorul LaravelApp este deținut de utilizator, așa că puteți încă edita și face modificări la fișiere fără a utiliza sudo
comanda. Dar serverul web Apache are nevoie de acces la directoarele cache și de stocare ale aplicației, deoarece Laravel stochează fișierele generate de aplicație în el. Schimbați proprietarul acestor foldere în www-data
utilizator care utilizează chown
comanda:
sudo chown -R www-data.www-data /var/www/LaravelApp/storage sudo chown -R www-data.www-data /var/www/LaravelApp/bootstrap/cache
După ce schimbați proprietarul acestor directoare, activați Apache mod_rewrite
deoarece Laravel îi cere să transforme corect adresele URL pentru a fi interpretate de funcția de rutare prin .htaccess
fişier.
sudo a2enmod rescrie
Apoi, trebuie să setăm o gazdă virtuală pentru aplicația Laravel. Configurațiile gazdei virtuale sunt situate la /etc/apache2/sites-available
. Vom edita fișierul gazdă virtuală implicită pentru a implementa aplicația Laravel. Deschideți fișierul implicit de configurare a gazdei virtuale folosind editorul nano:
sudo nano /etc/apache2/sites-available/000-default.conf
Schimbați rădăcina documentului de la /var/www/html
la /var/www/LaravelApp/public
și adăugați următorul fragment sub linia DocumentRoot:
AllowOverride All
Ta 000-default.conf
ar trebui să arate așa ceva acum cu câteva comentarii.
ServerAdmin webmaster@localhost DocumentRoot /var/www/LaravelApp/public AllowOverride All ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combinat
Reporniți serverul web Apache rulând următoarea comandă:
sudo systemctl reporniți apache2
Acum accesați browserul dvs. și introduceți adresa IP a serverului dvs. Ubuntu 20.04. Veți vedea pagina de pornire Laravel în loc de pagina implicită de întâmpinare Apache.
Presupunând că ați urmat acest ghid până acum, ar trebui să aveți o aplicație Laravel funcțională cu o bază de date MySQL numită laravel
pentru aceasta. Din acest punct, puteți începe să vă dezvoltați singur aplicația Laravel. Pentru a afla mai multe despre cadrul Laravel și utilizarea acestuia, vizitați pagina de documente Laravel.