CentOS 8-de Nginx bilen Laravel PHP çarçuwasyny nädip gurmaly


Laravel açyk çeşme, belli we häzirki zaman PHP esasly web çarçuwasy, täsirli, owadan we sintaksisine düşünmek aňsat, bu uly, ygtybarly web programmalaryny gurmagy aňsatlaşdyrýar.

Onuň esasy aýratynlyklary ýönekeý, çalt marşrutlaşdyryjy dwigateli, güýçli garaşlylyk sanjym konteýnerini, sessiýa we keş keşini saklamak üçin köp sanly arka tarapy, täsirli we içgin maglumat bazasy ORM (Obýekt bilen baglanyşykly kartalaşdyrmak), ygtybarly fon işini gaýtadan işlemek we wakany göni ýaýlymda öz içine alýar.

Şeýle hem, garaşlylygy dolandyrmak üçin PHP paket dolandyryjysy we Web programmalaryny gurmak we dolandyrmak üçin buýruk setiri interfeýsi ýaly kompozitor ýaly gurallary ulanýar.

Bu makalada, Laravel PHP web çarçuwasynyň iň soňky wersiýasyny CentOS 8 Linux paýlanyşyna nädip gurmalydygyny öwrenersiňiz.

“Laravel” çarçuwasynyň aşakdaky talaplary bar:

  • PHP>=7.2.5 bu PHP giňeltmeleri bilen OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype we JSON.
  • Kompozitor - garaşlylygy gurmak we dolandyrmak üçin.

1-nji ädim: CentOS 8-de LEMP Stack gurmak

1. Işletmek üçin ulgam programma üpjünçiliginiň paketlerini täzeläň we aşakdaky dnf buýruklaryny ulanyp LEMP stack (Linux, Nginx, MariaDB/MySQL we PHP) guruň.

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

2. LEMP gurmak tamamlanandan soň, aşakdaky systemctl buýruklaryny ulanyp, PHP-PFM, Nginx we MariaDB hyzmatlaryny başlamaly.

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

3. Ondan soň, görkezilişi ýaly howpsuzlyk skriptini ulanyp, MariaDB maglumat bazasynyň motoryny berkitmeli we berkitmeli.

# mysql_secure_installation

Serweriň gurulmagyny üpjün etmek üçin aşakdaky soraglara jogap beriň.

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. “Firewalld” hyzmaty işleýän bolsa, müşderiniň isleglerini Nginx web serwerine açmak üçin gorag diwarynda HTTP we HTTPS hyzmatyny açmaly.

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

5. Netijede, ulgamyňyzyň IP adresinde brauzer ulanyp, LEMP bukjanyňyzyň işleýändigini tassyklap bilersiňiz.

http://server-IP

2-nji ädim: PHP-FPM we Nginx sazlamak we goramak

6. Nginx web serwerinden haýyşlary işlemek üçin PHP-FPM Unix rozetkasynda ýa-da TCP rozetkasynda diňläp biler we bu /etc/php-fpm.d/www.conf konfigurasiýa faýlynda diňlemek parametri bilen kesgitlenýär.

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

Düzgüne görä, aşakdaky skrinshotda görkezilişi ýaly Unix rozetkasynda diňlemek üçin düzülendir. Bu ýerdäki baha soň Nginx serwer blok faýlynda görkeziler.

7. “Unix” rozetkasyny ulanýan bolsaňyz, skrinshotda görkezilişi ýaly dogry eýeçiligi we rugsatlary bellemeli. Aşakdaky parametrlerden ýüz öwüriň we ulanyjy we topara Nginx-iň işleýşi bilen deňeşdirmek üçin bahalaryny kesgitläň.

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

8. Ondan soň, /etc/php.ini konfigurasiýa faýlynda ulgam boýunça wagt zolagyny düzüň.

# vi /etc/php.ini

\; date.timezone setirini gözläň we ony açyň, soňra skrinshotda görkezilişi ýaly kesgitläň (sebitiňize/yklymyňyza we ýurduňyza degişli bahalary ulanyň).

 
date.timezone = Africa/Kampala

9. PHP koduny PHP-FPM ýerine ýetirmek üçin beýleki giňeltmelerden peýdalanýan zyýanly ulanyjylardan Nginx haýyşlaryny bermek howpuny azaltmak üçin aşakdaky parametri açmaň we onuň bahasyny 0 belläň.

cgi.fix_pathinfo=1

10. Öňki nokada degişlilikde /etc/php-fpm.d/www.conf faýlynda aşakdaky parametrleri hem goýmaň. Has giňişleýin düşündiriş üçin teswirleri okaň.

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

3-nji ädim: Kompozitor we Laravel PHP çarçuwasyny gurmak

11. Ondan soň, aşakdaky buýruklary işledip, Kompozitor paketini guruň. Birinji buýruk gurnaýjyny göçürip alýar, soň bolsa PHP ulanyp işleýär.

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

12. Indi kompozitor gurlandan soň, Laravel faýllaryny we garaşlylygyny aşakdaky ýaly gurmak üçin ulanyň. Mysite.com-ny Laravel faýllarynyň saklanjak katalogynyň ady bilen çalyşyň, mutlak ýol (ýa-da Nginx konfigurasiýa faýlyndaky kök ýol) /var/www/html/mysite.com bolar.

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

Amalyň dowamynda hemme zat gowy bolsa, programma üstünlikli gurulmalydyr we aşakdaky skrinshotda görkezilişi ýaly açar döredilmelidir.

13. Gurmak prosesinde .env daşky gurşaw faýly döredildi we zerur programma hem döredildi, şonuň üçin olary öňküsi ýaly el bilen döretmegiň zerurlygy ýok. Muny tassyklamak üçin ls buýrugyny ulanyp, laravel kök katalogynyň uzyn sanawyny işlediň.

# ls -la mysite.com/

14. Ondan soň, Nginx web serweri tarapyndan ýazyljak ammarda we bootstrap/keş bukjalarynda dogry eýeçiligi we rugsatlary düzmeli.

# 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. Serweriňizde SELinux açyk bolsa, ammar we bootstrap/keş bukjalarynyň howpsuzlyk kontekstini täzelemeli.

# 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-nji ädim: Laravel üçin Nginx serwer blokuny sazlaň

16. Nginx web sahypaňyza ýa-da programmaňyza hyzmat edip başlamagy üçin, görkezilişi ýaly /etc/nginx/conf.d/ katalogynyň aşagyndaky .conf faýlynda serwer blokuny döretmeli.

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

Aşakdaky konfigurasiýany faýla göçüriň. Kök we fastcgi_pass parametrlerine üns beriň.

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. Faýly ýazdyryň we işlemek arkaly Nginx konfigurasiýa sintaksisiniň dogrudygyny barlaň.

# nginx -t

18. Soňra soňky üýtgeşmeleriň güýje girmegi üçin PHP-FPM we Nginx hyzmatlaryny täzeden açyň.

# systemctl restart php-fpm
# systemctl restart Nginx

5-nji ädim: Web brauzerinden Laravel web sahypasyna girmek

19. Doly hünärli domen ady (FQDN) bolmadyk we hasaba alynmadyk (diňe synag maksatly ulanylýar) mysite.com sahypasyndaky Laravel web sahypasyna girmek üçin/etc/host faýlyny ýerli enjamyňyzda ulanarys ýerli DNS döretmek üçin.

Gerekli faýlda serwer IP adresini we domeni goşmak üçin aşakdaky buýrugy işlediň (sazlamalaryňyza görä bahany çalşyň).

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

20. Ondan soň, ýerli enjamda web brauzerini açyň we gezmek üçin aşakdaky adresi ulanyň.

http://mysite.com

Laravel-i CentOS 8-de üstünlikli ýerleşdirdiňiz. Indi Laravel ulanyp web sahypaňyzy ýa-da web programmaňyzy ösdürip bilersiňiz. Has giňişleýin maglumat üçin Laravel Başlamak gollanmasyna serediň.