Cómo instalar Yii PHP Framework en CentOS 8


Yii es un marco PHP de código abierto, de alto rendimiento, flexible, eficiente y seguro para crear rápidamente aplicaciones web modernas. Es un marco de programación web genérico y de pila completa para escribir código de una manera orientada a objetos y proporciona muchas características probadas y listas para usar. Viene con una serie de valores predeterminados razonables y herramientas integradas que lo ayudan a escribir código sólido y seguro.

Estas son algunas de las características clave de Yii:

  • Un marco puro basado en OOP.
  • Una arquitectura basada en componentes.
  • Implementa el patrón arquitectónico MVC (Model-View-Controller).
  • Admite creadores de consultas y ActiveRecord para bases de datos relacionales y NoSQL.
  • Compatibilidad con almacenamiento en caché de varios niveles.
  • Compatibilidad con el desarrollo de API RESTful.
  • Es extremadamente extensible, lo que permite a los usuarios personalizar o reemplazar cualquier parte del código directamente desde el núcleo. Además, los usuarios pueden usar o desarrollar extensiones redistribuibles.

Yii 2.0 es la generación actual del marco (en el momento de escribir este artículo) que requiere PHP 5.4.0 o superior, pero funciona mejor con la última versión de PHP 7. Es compatible con algunas de las últimas tecnologías y protocolos web, incluidos Composer, PSR , espacios de nombres, rasgos y otros.

Al ser un marco de desarrollo web genérico junto con sus características importantes, Yii se puede utilizar para desarrollar casi cualquier tipo de aplicaciones web, desde portales de usuario/administrador, foros, sistemas de gestión de contenido (CMS), proyectos de comercio electrónico, servicios web RESTful, y mucho más a gran escala.

  1. Una instancia en ejecución del servidor CentOS 8.
  2. Una pila LEMP con PHP 5.4.0 o superior.
  3. Un Compositor: un administrador de paquetes a nivel de aplicación para PHP.

En este artículo, le mostraremos cómo instalar el marco PHP de Yii en un servidor CentOS 8 para comenzar a desarrollar aplicaciones PHP usando Yii.

Instalación de Yii con Composer

Hay varias formas de instalar Yii, pero la forma recomendada de instalar Yii es usando el administrador de paquetes Composer, ya que te permite actualizar Yii con un solo comando y también te permite instalar nuevas extensiones.

Si aún no tiene Composer instalado en su servidor CentOS 8, puede instalarlo ejecutando los siguientes comandos.

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

Con Composer instalado, puede instalar la última versión estable de la plantilla de la aplicación Yii en un directorio de Apache o Nginx accesible desde la Web llamado testapp . Puede seleccionar un nombre de directorio diferente si lo desea.

# 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

Una vez completada la instalación, configure su servidor web (consulte la siguiente sección) o utilice el servidor web PHP integrado ejecutando el siguiente comando en el directorio raíz del proyecto testapp .

# cd testapp
# php yii serve

Nota: De forma predeterminada, el servidor HTTP escuchará el puerto 8080. Sin embargo, si ese puerto ya está en uso, puede usar el puerto diferente agregando --port el argumento como se muestra.

# php yii serve --port=8888

Ahora, abra su navegador y escriba la siguiente URL para acceder a la aplicación Yii instalada.

http://localhost:8888

Configuración de servidores web para Yii

En un servidor de producción, es posible que desee configurar su servidor web para servir la aplicación web Yii a través de la URL http://www.example.com/index.php en lugar de http:// www.example.com/basic/testapp/index.php . En ese caso, debe apuntar la raíz del documento de su servidor web al directorio testapp/web .

Cree un archivo de configuración llamado /etc/nginx/conf.d/testapp.conf.

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

A continuación, copie y pegue la siguiente configuración en él. Recuerde reemplazar tecmintapp.lan con su nombre de dominio y /usr/share/nginx/html/testapp/web con la ruta donde se encuentran los archivos de su aplicación.

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

Guarde el archivo y reinicie Nginx para efectuar los cambios recientes.

# systemctl restart nginx

Utilice la siguiente configuración en el archivo httpd.conf de Apache o dentro de una configuración de host 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>

Guarde el archivo y reinicie Apache para efectuar los cambios recientes.

# systemctl restart httpd

Prueba de la aplicación web Yii a través de un navegador

Antes de probar nuestra aplicación web Yii, asegúrese de actualizar el contexto de seguridad del directorio /web/assets/ para que se pueda escribir en el proceso web, ejecutando el siguiente comando.

# 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ón, actualice sus reglas de firewalld para permitir solicitudes HTTP y HTTPS a través del firewall al servidor Nginx.

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

Finalmente, pruebe si su aplicación web funciona bien y está siendo atendida por Nginx o Apache. Abra un navegador web y apúntelo a la siguiente dirección:

http://tecmintapp.lan 

La página web predeterminada de la aplicación Yii debería mostrarse como se muestra en la siguiente captura de pantalla.

¡Felicidades! Ha instalado con éxito la última generación del marco Yii PHP y la ha configurado para que funcione con Nginx o Apache en CentOS 8.

Para obtener más información y cómo comenzar a usar Yii para crear su aplicación web, consulte la guía definitiva de Yii.