Com instal·lar Yii PHP Framework a CentOS 8


Yii és un marc PHP de codi obert, d'alt rendiment, flexible, eficient i segur per crear ràpidament aplicacions web modernes. És un marc de programació web genèric i de pila completa per escriure codi de manera orientada a objectes i ofereix moltes funcions provades i llestes per utilitzar. Ve amb una sèrie de valors predeterminats raonables i eines integrades que us ajuden a escriure codi sòlid i segur.

Aquestes són algunes de les característiques clau de Yii:

  • Un marc basat en POO pur.
  • Una arquitectura basada en components.
  • Implementa el patró arquitectònic MVC (Model-View-Controller).
  • Admet els creadors de consultes i ActiveRecord tant per a bases de dades relacionals com per a bases de dades NoSQL.
  • Compatibilitat amb la memòria cau de diversos nivells.
  • Suport de desenvolupament d'API RESTful.
  • És extremadament extensible i permet als usuaris personalitzar o substituir qualsevol fragment de codi directament des del nucli. A més, els usuaris poden utilitzar o desenvolupar extensions redistribuibles.

Yii 2.0 és la generació actual del marc (en el moment d'escriure aquest escrit) que requereix PHP 5.4.0 o superior, però funciona millor amb l'última versió de PHP 7. Admet algunes de les últimes tecnologies i protocols web, com Composer, PSR. , espais de noms, trets i altres.

En ser un marc de desenvolupament web genèric juntament amb les seves característiques significatives, Yii es pot utilitzar per desenvolupar gairebé qualsevol tipus d'aplicacions web, des de portals d'usuari/administrador, fòrums, sistemes de gestió de continguts (CMS), fins a projectes de comerç electrònic, serveis web RESTful, i molt més a gran escala.

  1. Una instància en execució del servidor CentOS 8.
  2. Una pila LEMP amb PHP 5.4.0 o superior.
  3. A Composer: un gestor de paquets a nivell d'aplicació per a PHP.

En aquest article, us mostrarem com instal·lar el marc PHP Yii en un servidor CentOS 8 per començar a desenvolupar aplicacions PHP amb Yii.

Instal·lació de Yii mitjançant Composer

Hi ha diverses maneres d'instal·lar Yii, però la forma recomanada d'instal·lar Yii és utilitzar el gestor de paquets de Composer, ja que us permet actualitzar Yii amb una sola ordre i també us permet instal·lar noves extensions.

Si encara no teniu Composer instal·lat al vostre servidor CentOS 8, podeu instal·lar-lo executant les ordres següents.

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

Amb Composer instal·lat, podeu instal·lar la darrera versió estable de la plantilla de l'aplicació Yii en un directori d'accés web d'Apache o Nginx anomenat testapp. Podeu seleccionar un nom de directori diferent si voleu.

# 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

Un cop finalitzada la instal·lació, configureu el vostre servidor web (vegeu la secció següent) o utilitzeu el servidor web PHP integrat executant l'ordre següent al directori arrel del projecte testapp.

# cd testapp
# php yii serve

Nota: Per defecte, el servidor HTTP escoltarà el port 8080. Tanmateix, si aquest port ja està en ús, podeu utilitzar el port diferent afegint --port l'argument tal com es mostra.

# php yii serve --port=8888

Ara, obriu el vostre navegador i escriviu l'URL següent per accedir a l'aplicació Yii instal·lada.

http://localhost:8888

Configuració de servidors web per a Yii

En un servidor de producció, és possible que vulgueu configurar el vostre servidor web per servir l'aplicació web Yii mitjançant l'URL http://www.example.com/index.php en lloc de http:// www.example.com/basic/testapp/index.php. En aquest cas, heu d'apuntar l'arrel del document del vostre servidor web al directori testapp/web.

Creeu un fitxer de configuració anomenat /etc/nginx/conf.d/testapp.conf.

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

A continuació, copieu i enganxeu-hi la configuració següent. Recordeu substituir tecmintapp.lan pel vostre nom de domini i /usr/share/nginx/html/testapp/web pel camí on es troben els fitxers de l'aplicació.

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

Deseu el fitxer i reinicieu Nginx per efectuar els canvis recents.

# systemctl restart nginx

Utilitzeu la configuració següent al fitxer httpd.conf d'Apache o dins d'una configuració d'amfitrió virtual.

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

Deseu el fitxer i reinicieu l'Apache per efectuar els canvis recents.

# systemctl restart httpd

Prova de l'aplicació web Yii mitjançant un navegador

Abans de provar la nostra aplicació web Yii, assegureu-vos d'actualitzar el context de seguretat del directori /web/assets/ perquè es pugui escriure al procés web, executant l'ordre següent.

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

A continuació, actualitzeu les regles del tallafoc per permetre les sol·licituds HTTP i HTTPS a través del tallafoc al servidor Nginx.

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

Finalment, comproveu si la vostra aplicació web funciona bé i està sent servida per Nginx o Apache. Obriu un navegador web i apunteu-lo a l'adreça següent:

http://tecmintapp.lan 

La pàgina web de l'aplicació Yii predeterminada hauria de mostrar-se tal com es mostra a la captura de pantalla següent.

Felicitats! Heu instal·lat correctament l'última generació del marc PHP Yii i l'heu configurat perquè funcioni amb Nginx o Apache a CentOS 8.

Per obtenir més informació i com començar a utilitzar Yii per crear la vostra aplicació web, consulteu la guia definitiva de Yii.