Kaip įdiegti „Laravel PHP Framework“ naudojant „Nginx“ „CentOS 8“.


Laravel yra atvirojo kodo, gerai žinoma ir moderni PHP pagrindu sukurta žiniatinklio sistema su išraiškinga, elegantiška ir lengvai suprantama sintaksė, kuri leidžia lengvai kurti dideles, patikimas žiniatinklio programas.

Pagrindinės jo funkcijos apima paprastą, greitą maršruto parinkimo variklį, galingą priklausomybės įpurškimo talpyklą, kelis seanso ir talpyklos saugojimo fonus, išraiškingą ir intuityvią duomenų bazę ORM (Object-relational Mapping), patikimą fono užduočių apdorojimą ir įvykių transliavimą realiuoju laiku.

Be to, jis naudoja tokius įrankius kaip Composer – PHP paketų tvarkyklė, skirta priklausomybėms valdyti, ir Artisan – komandų eilutės sąsaja, skirta žiniatinklio programoms kurti ir tvarkyti.

Šiame straipsnyje sužinosite, kaip įdiegti naujausią Laravel PHP žiniatinklio sistemos versiją CentOS 8 Linux platinimo sistemoje.

Serverio reikalavimai

Laravel sistema turi šiuos reikalavimus:

  • PHP >= 7.2.5 su šiais PHP plėtiniais OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype ir JSON.
  • Kompozitorius – skirtas diegti ir valdyti priklausomybes.

1 veiksmas: „LEMP Stack“ diegimas „CentOS 8“.

1. Norėdami pradėti, atnaujinkite sistemos programinės įrangos paketus ir įdiekite LEMP paketą (Linux, Nginx, MariaDB/MySQL ir PHP) naudodami šias dnf komandas.

dnf update
dnf install nginx php php-fpm php-common php-xml php-mbstring php-json php-zip mariadb-server php-mysqlnd

2. Kai LEMP diegimas baigtas, turite paleisti PHP-PFM, Nginx ir >MariaDB paslaugas naudojant šias systemctl komandas.

systemctl start php-fpm nginx mariadb
systemctl enable php-fpm nginx mariadb
systemctl status php-fpm nginx mariadb

3. Tada turite apsaugoti ir sustiprinti MariaDB duomenų bazės variklį naudodami saugos scenarijų, kaip parodyta.

mysql_secure_installation

Norėdami apsaugoti serverio diegimą, atsakykite į šiuos klausimus.

Enter current password for root (enter for none): Enter Set root password? [Y/n] y #set new root password Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y

4. Jei veikia ugniasienės paslauga, užkardoje turite atidaryti HTTP ir HTTPS paslaugas. įgalinti klientų užklausas Nginx žiniatinklio serveriui.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

5. Galiausiai galite patvirtinti, kad jūsų LEMP dėklas veikia naudojant naršyklę jūsų sistemos IP adresu.

http://server-IP

2 veiksmas: PHP-FPM ir Nginx konfigūravimas ir apsauga

6. Norėdami apdoroti užklausas iš Nginx žiniatinklio serverio, PHP-FPM gali klausytis „Unix“ arba TCP lizdo, o tai apibrėžia klausymas parametras /etc/php-fpm.d/www.conf konfigūracijos faile.

vi /etc/php-fpm.d/www.conf

Pagal numatytuosius nustatymus jis sukonfigūruotas klausytis „Unix“ lizde, kaip parodyta toliau pateiktoje ekrano kopijoje. Čia esanti reikšmė bus nurodyta Nginx serverio bloko faile vėliau.

7. Jei naudojate „Unix“ lizdą, taip pat turėtumėte nustatyti teisingą nuosavybės teisę ir leidimus, kaip parodyta ekrano kopijoje. Panaikinkite toliau pateiktų parametrų komentarus ir nustatykite jų reikšmes naudotojui ir grupei, kad atitiktų naudotoją ir grupę Nginx veikia kaip.

listen.owner = nginx
listen.group = nginx
listen.mode = 066

8. Tada taip pat nustatykite visos sistemos laiko juostą /etc/php.ini konfigūracijos faile.

vi /etc/php.ini

Ieškokite eilutės „;date.timezone ” ir panaikinkite jos komentarą, tada nustatykite jos reikšmę, kaip parodyta ekrano kopijoje (naudokite jūsų regionui/žemynui ir šaliai taikomas vertes).

 
date.timezone = Africa/Kampala

9. Norėdami sumažinti riziką, kad Nginx perduos užklausas iš kenkėjiškų naudotojų, kurie naudoja kitus plėtinius PHP kodui vykdyti, į PHP-FPM atšaukite šio parametro komentarą ir nustatykite jo vertę į 0.

cgi.fix_pathinfo=1

10. Kalbant apie ankstesnį punktą, taip pat panaikinkite šio parametro komentarą /etc/php-fpm.d/www.conf faile. Norėdami gauti daugiau paaiškinimų, skaitykite komentarą.

security.limit_extensions = .php .php3 .php4 .php5 .php7

3 veiksmas: „Composer“ ir „Laravel PHP Framework“ diegimas

11. Tada įdiekite Composer paketą vykdydami šias komandas. Pirmoji komanda atsisiunčia diegimo programą, tada paleidžia ją naudodami PHP.

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer

12. Dabar, kai įdiegtas Composer, naudokite jį norėdami įdiegti Laravel failus ir priklausomybes, kaip nurodyta toliau. Pakeiskite mysite.com katalogo, kuriame bus saugomi Laravel failai, pavadinimu, absoliutus kelias (arba šakninis kelias Nginx konfigūracijos faile) bus /var/www/html/mysite .com.

cd /var/www/html/
composer create-project --prefer-dist laravel/laravel mysite.com

Jei proceso metu viskas klostosi gerai, programa turi būti sėkmingai įdiegta ir turi būti sugeneruotas raktas, kaip parodyta toliau pateiktoje ekrano kopijoje.

13. Diegimo proceso metu buvo sukurtas aplinkos failas .env ir sugeneruota reikiama programa, todėl jums nereikia jų kurti rankiniu būdu, kaip anksčiau. Norėdami tai patvirtinti, paleiskite ilgą laravel šakninio katalogo sąrašą naudodami komandą ls.

ls -la mysite.com/

14. Tada turite sukonfigūruoti teisingą nuosavybės teisę ir leidimus saugyklos ir bootstrap/cache kataloguose, kad juos galėtų įrašyti „Nginx“ žiniatinklis serveris.

chown -R :nginx /var/www/html/mysite.com/storage/
chown -R :nginx /var/www/html/mysite.com/bootstrap/cache/
chmod -R 0777 /var/www/html/mysite.com/storage/
chmod -R 0775 /var/www/html/mysite.com/bootstrap/cache/

15. Jei jūsų serveryje įgalintas SELinux, taip pat turėtumėte atnaujinti saugyklos ir įkrovos/talpyklos saugos kontekstą. > katalogai.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/mysite.com/storage(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/mysite.com/bootstrap/cache(/.*)?'
restorecon -Rv '/var/www/html/mysite.com'

4 veiksmas: sukonfigūruokite „Nginx“ serverio bloką „Laravel“.

16. Kad Nginx pradėtų teikti svetainę ar programą, .conf faile turite sukurti jam serverio bloką. >/etc/nginx/conf.d/ kataloge, kaip parodyta.

vi /etc/nginx/conf.d/mysite.com.conf

Nukopijuokite ir įklijuokite šią konfigūraciją į failą. Atkreipkite dėmesį į šakninius ir fastcgi_pass parametrus.

server {
	listen      80;
       server_name mysite.com;
       root        /var/www/html/mysite.com/public;
       index       index.php;

       charset utf-8;
       gzip on;
	gzip_types text/css application/javascript text/javascript application/x-javascript  image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
        location / {
        	try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php {
                include fastcgi.conf;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php-fpm/www.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}

17. Išsaugokite failą ir paleisdami patikrinkite, ar Nginx konfigūracijos sintaksė yra teisinga.

nginx -t

18. Tada iš naujo paleiskite PHP-FPM ir Nginx paslaugas, kad įsigaliotų naujausi pakeitimai.

systemctl restart php-fpm
systemctl restart Nginx

5 veiksmas: prieiga prie Laravel svetainės iš žiniatinklio naršyklės

19. Norėdami pasiekti Laravel svetainę adresu mysite.com, kuri nėra visiškai kvalifikuotas domeno pavadinimas (FQDN) ir nėra registruotas (naudojamas tik bandymo tikslais) , naudosime /etc/hosts failą jūsų vietiniame kompiuteryje, kad sukurtume vietinį DNS.

Vykdykite šią komandą, kad pridėtumėte serverio IP adresą ir domeną į reikiamą failą (pakeiskite reikšmę pagal savo nustatymus).

ip add		#get remote server IP
echo "10.42.0.21  mysite.com" | sudo tee -a /etc/hosts

20. Tada atidarykite žiniatinklio naršyklę vietiniame kompiuteryje ir naršydami naudokite toliau pateiktą adresą.

http://mysite.com

Sėkmingai įdiegėte Laravel CentOS 8. Dabar galite pradėti kurti savo svetainę arba žiniatinklio programą naudodami Laravel. Daugiau informacijos rasite Laravel darbo pradžios vadove.