Jinsi ya Kufunga Mfumo wa Laravel PHP na Nginx kwenye CentOS 8


Laravel ni mfumo huria, unaojulikana sana, na wa kisasa wa msingi wa PHP wenye sintaksia inayoeleweka, maridadi na rahisi kueleweka ambayo hurahisisha kuunda programu kubwa za wavuti thabiti.

Vipengele vyake muhimu ni pamoja na injini rahisi, ya uelekezaji wa haraka, chombo chenye nguvu cha sindano ya utegemezi, sehemu nyingi za nyuma za uhifadhi wa kikao na kache, hifadhidata inayoeleweka na angavu ya ORM (Ramani ya Kitu-kihusiano), usindikaji thabiti wa kazi ya usuli, na utangazaji wa matukio ya wakati halisi.

Pia, hutumia zana kama vile Mtunzi - meneja wa kifurushi cha PHP kwa kudhibiti utegemezi na Artisan - kiolesura cha mstari wa amri kwa ajili ya kujenga na kudhibiti programu za wavuti.

Katika makala haya, utajifunza jinsi ya kusakinisha toleo jipya zaidi la mfumo wa wavuti wa Laravel PHP kwenye usambazaji wa CentOS 8 Linux.

Mfumo wa Laravel una mahitaji yafuatayo:

  • PHP >= 7.2.5 na viendelezi hivi vya PHP OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype na JSON.
  • Mtunzi - kwa kusakinisha na kudhibiti vitegemezi.

Hatua ya 1: Kusakinisha Stack ya LEMP kwenye CentOS 8

1. Ili kuzima, sasisha vifurushi vya programu za mfumo na usakinishe rafu ya LEMP (Linux, Nginx, MariaDB/MySQL, na PHP) kwa kutumia amri zifuatazo za dnf.

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

2. Wakati usakinishaji wa LEMP umekamilika, unahitaji kuanza huduma za PHP-PFM, Nginx na MariaDB kwa kutumia amri zifuatazo za systemctl.

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

3. Kisha, unahitaji kulinda na kuimarisha injini ya hifadhidata ya MariaDB kwa kutumia hati ya usalama kama inavyoonyeshwa.

# mysql_secure_installation

Jibu maswali yafuatayo ili kulinda usakinishaji wa seva.

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. Ikiwa una huduma ya firewalld inayoendeshwa, unahitaji kufungua huduma ya HTTP na HTTPS kwenye ngome ili kuwezesha maombi ya mteja kwa seva ya wavuti ya Nginx.

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

5. Hatimaye, unaweza kuthibitisha kuwa rafu yako ya LEMP inaendeshwa kwa kutumia kivinjari kwenye anwani ya IP ya mfumo wako.

http://server-IP

Hatua ya 2: Kusanidi na Kulinda PHP-FPM na Nginx

6. Ili kushughulikia maombi kutoka kwa seva ya wavuti ya Nginx, PHP-FPM inaweza kusikiliza kwenye soketi ya Unix au tundu la TCP na hii inafafanuliwa na kigezo cha kusikiliza katika /etc/php-fpm.d/www.conf faili ya usanidi.

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

Kwa chaguo-msingi, imesanidiwa kusikiliza kwenye tundu la Unix kama inavyoonyeshwa kwenye picha ya skrini ifuatayo. Thamani hapa itabainishwa katika faili ya kuzuia seva ya Nginx baadaye.

7. Ikiwa unatumia soketi ya Unix, unapaswa pia kuweka umiliki sahihi na ruhusa juu yake kama inavyoonyeshwa kwenye picha ya skrini. Toa maoni kwa vigezo vifuatavyo na uweke thamani zake kwa mtumiaji na kikundi ili kuendana na mtumiaji na kikundi cha Nginx kinaendesha kama.

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

8. Kisha, pia weka eneo la wakati wa mfumo mzima katika faili ya usanidi /etc/php.ini.

# vi /etc/php.ini

Tafuta laini \;date.timezone” na uitoe maoni, kisha uweke thamani yake kama inavyoonyeshwa kwenye picha ya skrini (tumia thamani zinazotumika kwa eneo/bara na nchi yako).

 
date.timezone = Africa/Kampala

9. Ili kupunguza hatari ya Nginx kupitisha maombi kutoka kwa watumiaji hasidi wanaotumia viendelezi vingine kutekeleza msimbo wa PHP kwa PHP-FPM, ondoa kigezo kifuatacho na uweke thamani yake kuwa 0.

cgi.fix_pathinfo=1

10. Kuhusiana na hatua ya awali, pia uondoe parameter ifuatayo katika faili /etc/php-fpm.d/www.conf. Soma maoni kwa maelezo zaidi.

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

Hatua ya 3: Kusakinisha Mtunzi na Mfumo wa PHP wa Laravel

11. Kisha, sakinisha kifurushi cha Mtunzi kwa kuendesha amri zifuatazo. Amri ya kwanza inapakua kisakinishi, kisha inaendesha kwa kutumia PHP.

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

12. Sasa kwa kuwa Mtunzi amesakinishwa, itumie kusakinisha faili za Laravel na vitegemezi kama ifuatavyo. Badilisha mysite.com na jina la saraka ambapo faili za Laravel zitahifadhiwa, njia kamili (au njia ya mizizi katika faili ya usanidi wa Nginx) itakuwa /var/www/html/mysite.com.

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

Ikiwa kila kitu kitaenda sawa wakati wa mchakato, programu inapaswa kusakinishwa kwa mafanikio na ufunguo unapaswa kuzalishwa kama inavyoonyeshwa kwenye picha ya skrini ifuatayo.

13. Wakati wa usakinishaji, faili ya mazingira ya .env iliundwa na programu inayohitajika pia ilitolewa, kwa hivyo huhitaji kuziunda mwenyewe kama hapo awali. Ili kuthibitisha hili, endesha orodha ndefu ya saraka ya mizizi ya laravel kwa kutumia ls amri.

# ls -la mysite.com/

14. Kisha, unahitaji kusanidi umiliki sahihi na ruhusa kwenye hifadhi na saraka za bootstrap/cache ili kuandikwa na seva ya wavuti ya Nginx.

# 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. Ikiwa SELinux imewezeshwa kwenye seva yako, unapaswa pia kusasisha muktadha wa usalama wa hifadhi na saraka za bootstrap/cache.

# 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'

Hatua ya 4: Sanidi Kizuizi cha Seva ya Nginx Kwa Laravel

16. Ili Nginx ianze kutumikia tovuti au programu yako, unahitaji kuiundia kizuizi cha seva katika .conf faili iliyo chini ya /etc/nginx/conf.d/ saraka kama inavyoonyeshwa.

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

Nakili na ubandike usanidi ufuatao kwenye faili. Zingatia vigezo vya mzizi na fastcgi_pass.

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. Hifadhi faili na uangalie ikiwa sintaksia ya usanidi wa Nginx ni sahihi kwa kuendesha.

# nginx -t

18. Kisha anzisha upya huduma za PHP-FPM na Nginx ili mabadiliko ya hivi majuzi yaanze kutumika.

# systemctl restart php-fpm
# systemctl restart Nginx

Hatua ya 5: Kufikia Tovuti ya Laravel kutoka kwa Kivinjari cha Wavuti

19. Ili kufikia tovuti ya Laravel katika mysite.com, ambayo si jina la kikoa lililohitimu kikamilifu (FQDN) na haijasajiliwa (inatumika kwa madhumuni ya majaribio pekee), tutatumia faili ya /etc/hosts kwenye mashine yako ya karibu. ili kuunda DNS ya ndani.

Tumia amri ifuatayo ili kuongeza anwani ya IP ya seva na kikoa katika faili inayohitajika (badilisha thamani kulingana na mipangilio yako).

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

20. Kisha, fungua kivinjari kwenye mashine ya ndani na utumie anwani ifuatayo ili kusogeza.

http://mysite.com

Umetuma Laravel kwenye CentOS 8. Sasa unaweza kuanza kutengeneza tovuti au programu yako ya wavuti kwa kutumia Laravel. Kwa habari zaidi, angalia mwongozo wa Kuanza wa Laravel.