Wéi installéiere ech Yii PHP Framework op CentOS 8


Yii ass en Open-Source, héich performant, flexibel, effizient a sécher PHP Kader fir séier modern Webapplikatiounen ze bauen. Et ass e generesche a Full-Stack Web Programméierungs Kader fir Code op objektorientéierter Manéier ze schreiwen a bitt vill bewährte a prett-ze-benotzen Features. Et kënnt mat enger Zuel vu raisonnabelen Defaults an agebaute Tools déi Iech hëllefen zolidd a sécher Code ze schreiwen.

Hei sinn e puer vun de Schlësselfeatures vum Yii:

  • E puren OOP-baséiert Kader.
  • Eng Komponent-baséiert Architektur.
  • Implementéiert de MVC (Model-View-Controller) architektonescht Muster.
  • Ënnerstëtzt Query Builder an ActiveRecord fir béid relational an NoSQL Datenbanken.
  • Multi-Tier Caching Ënnerstëtzung.
  • RESTful API Entwécklung Ënnerstëtzung.
  • Et ass extrem erweiterbar, wat de Benotzer erlaabt all Stéck Code direkt aus dem Kär ze personaliséieren oder ze ersetzen. Ausserdeem kënnen d'Benotzer weiderverdeelbar Extensiounen benotzen oder entwéckelen.

Yii 2.0 ass déi aktuell Generatioun vum Kader (am Schreiwen) deen PHP 5.4.0 oder méi erfuerdert, awer am beschten mat der leschter Versioun vu PHP 7 leeft. , Nummraim, Charakteren an anerer.

Als generesche Webentwécklungskader a Verbindung mat senge bedeitende Featuren, kann Yii benotzt ginn fir bal all Zorte vu Webapplikatiounen vu Benotzer/Admin Portalen, Foren, Content Management Systemer (CMS), zu E-Commerce Projeten, RESTful Web Servicer z'entwéckelen, a vill méi op grouss Skala.

  1. Eng Lafen Instanz vum CentOS 8 Server.
  2. E LEMP-Stack mat PHP 5.4.0 oder méi héich.
  3. E Composer - en Applikatiounsniveau Package Manager fir de PHP.

An dësem Artikel wäerte mir Iech weisen wéi Dir de Yii PHP Kader op engem CentOS 8 Server installéiere kënnt fir PHP Uwendungen mat Yii z'entwéckelen.

Installéiere Yii Mat Composer

Et gi verschidde Weeër fir Yii z'installéieren, awer de recommandéierte Wee fir Yii z'installéieren ass de Composer Package Manager ze benotzen, well et Iech erlaabt Yii mat engem eenzege Kommando ze aktualiséieren an Iech och erlaabt nei Extensiounen z'installéieren.

Wann Dir Composer net schonn op Ärem CentOS 8 Server installéiert hutt, kënnt Dir et installéieren andeems Dir déi folgend Kommandoen ausféiert.

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

Mat Composer installéiert, kënnt Dir déi lescht stabil Versioun vum Yii Applikatioun Template ënner engem Apache oder Nginx Web-zougängleche Verzeechnes mam Numm testapp installéieren. Dir kënnt en anere Verzeechnesnumm auswielen wann Dir wëllt.

# 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

Nodeems d'Installatioun fäerdeg ass, konfiguréiert entweder Äre Webserver (kuckt nächst Rubrik) oder benotzt den integréierten PHP Webserver andeems Dir de folgende Kommando am testapp Projet Root Verzeechnes ausféiert.

# cd testapp
# php yii serve

Bemierkung: Par défaut lauschtert den HTTP-Server op den Hafen 8080. Wann dee Port awer schonn am Gebrauch ass, kënnt Dir deen anere Port benotzen andeems Dir --port d'Argument addéiert wéi gewisen.

# php yii serve --port=8888

Elo, öffnen Äre Browser a gitt déi folgend URL fir Zougang zu der installéierter Yii Applikatioun.

http://localhost:8888

Web Server fir Yii konfiguréieren

Op engem Produktiounsserver wëllt Dir vläicht Äre Webserver konfiguréieren fir d'Yii Webapplikatioun iwwer d'URL http://www.example.com/index.php ze déngen amplaz http:// www.example.com/basic/testapp/index.php. An deem Fall musst Dir Äre Webserverdokumentroot op de testapp/web Verzeechnes weisen.

Erstellt eng Konfiguratiounsdatei mam Numm /etc/nginx/conf.d/testapp.conf.

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

Als nächst, kopéiert a paste déi folgend Konfiguratioun dran. Denkt drun tecmintapp.lan duerch Ären Domain Numm an /usr/share/nginx/html/testapp/web duerch de Wee ze ersetzen wou Är App Dateie sinn.

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;
    }
}

Späichert d'Datei an nei start den Nginx fir déi rezent Ännerungen auszeféieren.

# systemctl restart nginx

Benotzt déi folgend Konfiguratioun an der Apache's httpd.conf Datei oder an enger virtueller Hostkonfiguratioun.

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

Späichert d'Datei an nei start den Apache fir déi rezent Ännerungen auszeféieren.

# systemctl restart httpd

Testen Yii Web Applikatioun Via engem Browser

Ier Dir eis Yii Webapplikatioun testen, vergewëssert Iech de Sécherheetskontext vum /web/assets/ Verzeechnes ze aktualiséieren fir et schrëftbar un de Webprozess ze maachen, andeems Dir de folgende Kommando ausféiert.

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

Als nächst, update Är Firewalld Regelen fir HTTP an HTTPS Ufroen duerch d'Firewall op den Nginx Server z'erméiglechen.

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

Endlech, test ob Är Webapplikatioun gutt funktionnéiert a gëtt vun Nginx oder Apache zerwéiert. Öffnen e Webbrowser a weisen op déi folgend Adress:

http://tecmintapp.lan 

D'Standard Yii Applikatioun Websäit soll ugewise ginn wéi am folgende Screenshot gewisen.

Gratulatioun! Dir hutt déi lescht Generatioun vum Yii PHP Kader erfollegräich installéiert an et konfiguréiert fir mat Nginx oder Apache op CentOS 8 ze schaffen.

Fir méi Informatioun a wéi Dir Yii benotzt fir Är Webapplikatioun ze bauen, kuckt den Yii definitive Guide.