Kako namestiti Yii PHP Framework na CentOS 8


Yii je odprtokodni, visoko zmogljiv, prilagodljiv, učinkovit in varen PHP okvir za hitro gradnjo sodobnih spletnih aplikacij. Je splošen in celoten sklop spletnega programiranja za objektno orientirano pisanje kode in ponuja številne preizkušene in pripravljene funkcije. Na voljo je s številnimi razumnimi privzetimi nastavitvami in vgrajenimi orodji, ki vam pomagajo napisati zanesljivo in varno kodo.

Tu je nekaj ključnih značilnosti Yia:

  • Čist okvir, ki temelji na OOP.
  • Arhitektura, ki temelji na komponentah.
  • Izvaja arhitekturni vzorec MVC (Model-View-Controller).
  • Podpira graditelje poizvedb in ActiveRecord tako za relacijske baze podatkov kot za zbirke podatkov NoSQL.
  • Večstopenjska podpora za predpomnjenje.
  • RESTful podpora za razvoj API-ja.
  • Je izjemno razširljiv in uporabnikom omogoča, da prilagodijo ali zamenjajo kateri koli kos kode neposredno iz jedra. Poleg tega lahko uporabniki uporabljajo ali razvijejo razširljive razširitve.

Yii 2.0 je trenutna generacija ogrodja (v času pisanja), ki zahteva PHP 5.4.0 ali novejšo, vendar najbolje deluje z najnovejšo različico PHP 7. Podpira nekatere najnovejše spletne tehnologije in protokole, vključno s Composer, PSR , imenski prostori, lastnosti in drugi.

Kot splošni okvir za spletni razvoj v povezavi s svojimi pomembnimi lastnostmi se lahko Yii uporablja za razvoj skoraj vseh vrst spletnih aplikacij od uporabniških/skrbniških portalov, forumov, sistemov za upravljanje vsebin (CMS) do projektov e-poslovanja, RESTful spletnih storitev, in še veliko več.

  1. Tekoči primerek strežnika CentOS 8.
  2. Sklad LEMP s PHP 5.4.0 ali novejšim.
  3. Skladatelj - upravitelj paketov na ravni aplikacije za PHP.

V tem članku vam bomo pokazali, kako namestiti ogrodje Yii PHP na strežnik CentOS 8, da začnete razvijati aplikacije PHP z uporabo Yii.

Namestitev Yii z uporabo Composerja

Obstaja več načinov namestitve Yii, vendar priporočljiv način namestitve Yii je uporaba upravitelja paketov Composer, saj omogoča posodobitev Yii z enim samim ukazom in omogoča tudi namestitev novih razširitev.

Če na strežniku CentOS 8 še niste namestili Composerja, ga lahko namestite tako, da zaženete naslednje ukaze.

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

Z nameščenim Composerjem lahko namestite najnovejšo stabilno različico predloge aplikacije Yii v spletni dostopni imenik Apache ali Nginx, imenovan testapp . Če želite, lahko izberete drugo imeniško ime.

# cd /var/www/html/      [Apache Root Directory]
OR
# cd /usr/share/nginx/html/   [Nginx Root Directory]
# composer create-project --prefer-dist yiisoft/yii2-app-basic testapp

Po končani namestitvi konfigurirajte spletni strežnik (glejte naslednji razdelek) ali uporabite integrirani spletni strežnik PHP, tako da v korenskem imeniku projekta testapp izvedete naslednji ukaz.

# cd testapp
# php yii serve

Opomba: HTTP-strežnik privzeto posluša vrata 8080. Če pa se ta vrata že uporabljajo, lahko druga vrata uporabite tako, da dodate argument --port , kot je prikazano.

# php yii serve --port=8888

Zdaj odprite brskalnik in vnesite naslednji URL za dostop do nameščene aplikacije Yii.

http://localhost:8888

Konfiguriranje spletnih strežnikov za Yii

Na delovnem strežniku boste morda želeli svoj spletni strežnik konfigurirati tako, da bo služil spletni aplikaciji Yii prek URL-ja http://www.example.com/index.php namesto http:// www.example.com/basic/testapp/index.php . V tem primeru morate usmeriti koren dokumenta spletnega strežnika v imenik testapp/web .

Ustvarite konfiguracijsko datoteko z imenom /etc/nginx/conf.d/testapp.conf.

# vi /etc/nginx/conf.d/testapp.conf

Nato kopirajte in prilepite vanjo naslednjo konfiguracijo. Ne pozabite zamenjati tecmintapp.lan z imenom vaše domene in /usr/share/nginx/html/testapp/web s potjo, na kateri so datoteke vaših aplikacij.

server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## listen for ipv4
    #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name tecmintapp.lan;
    root        /usr/share/nginx/html/testapp/web;
    index       index.php;

    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # uncomment to avoid processing of calls to non-existing static files by Yii
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    #    try_files $uri =404;
    #}
    #error_page 404 /404.html;

    # deny accessing php files for the /assets directory
    location ~ ^/assets/.*\.php$ {
        deny all;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        try_files $uri =404;
    }

    location ~* /\. {
        deny all;
    }
}

Shranite datoteko in znova zaženite Nginx, da izvedete nedavne spremembe.

# systemctl restart nginx

Uporabite naslednjo konfiguracijo v Apachejevi datoteki httpd.conf ali znotraj konfiguracije navideznega gostitelja.

# Set document root to be "testapp/web"
DocumentRoot "/var/www/html/testapp/web"

<Directory "/var/www/html/testapp/web">
    # use mod_rewrite for pretty URL support
    RewriteEngine on
    
    # if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
    RewriteRule ^index.php/ - [L,R=404]
    
    # If a directory or a file exists, use the request directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # Otherwise forward the request to index.php
    RewriteRule . index.php

    # ...other settings...
</Directory>

Shranite datoteko in znova zaženite Apache, da izvedete nedavne spremembe.

# systemctl restart httpd

Testiranje spletne aplikacije Yii prek brskalnika

Pred preskušanjem naše spletne aplikacije Yii posodobite varnostni kontekst imenika /web/assets/, da ga lahko zapišete v spletni postopek, tako da zaženete naslednji ukaz.

# chcon -R -t httpd_sys_content_rw_t '/usr/share/nginx/html/testapp/web/assets/' [for Nginx]
# chcon -R -t httpd_sys_content_rw_t '/var/www/html/testapp/web/assets/'         [for Apache] 

Nato posodobite pravila požarnega zidu, da omogočite zahteve HTTP in HTTPS prek požarnega zidu strežniku Nginx.

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

Na koncu preizkusite, ali vaša spletna aplikacija deluje dobro in ali jo streže Nginx ali Apache. Odprite spletni brskalnik in ga usmerite na naslednji naslov:

http://tecmintapp.lan 

Privzeta spletna stran aplikacije Yii se mora prikazati, kot je prikazano na spodnjem posnetku zaslona.

Čestitamo! Uspešno ste namestili najnovejšo generacijo ogrodja Yii PHP in ga konfigurirali za delo z Nginx ali Apache na CentOS 8.

Če želite več informacij in kako začeti uporabljati Yii za izdelavo spletne aplikacije, glejte dokončni vodnik za Yii.