Cómo instalar Yii PHP Framework en Ubuntu


Yii (pronunciado Yee o [ji:]) es un marco de programación web genérico gratuito y de código abierto, rápido, de alto rendimiento, seguro, flexible pero pragmático y eficiente para desarrollar todo tipo de aplicaciones web usando PHP.

En este artículo, aprenderá cómo instalar la última versión del marco Yii en las versiones de Ubuntu LTS (soporte a largo plazo) para comenzar a desarrollar aplicaciones web PHP modernas.

Yii tiene las siguientes versiones de Ubuntu LTS (soporte a largo plazo):

  • Ubuntu 20.04 LTS (“Focal”)
  • Ubuntu 18.04 LTS (“Bionic”)
  • Ubuntu 16.04 LTS (“Xenial”)
  • A running instance of the Ubuntu server.
  • A LEMP stack with PHP 5.4.0 or above.
  • A Composer – an application-level package manager for the PHP.

En esta página

  • Installing Yii Framework via Composer in Ubuntu
  • Running Yii Using PHP Development Server
  • Running Yii Project in Production Using an NGINX HTTP Server
  • Enable HTTPS on Yii Applications Using Let’s Encrypt

Hay dos formas de instalar Yii, usando el administrador de paquetes Composer o instalándolo desde un archivo. La primera es la forma recomendada, ya que le permite instalar nuevas extensiones o actualizar Yii con un solo comando.

Si no tiene Composer instalado, puede instalarlo usando los siguientes comandos, que luego instalarán Yii y administrarán sus dependencias.

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

Una vez que haya instalado Composer, muévase al directorio /var/www/html/ que almacenará sus aplicaciones web o archivos de sitios web, luego instale el paquete Yii usando el composer (reemplace testproject con el nombre de su directorio de la aplicación web).

$ cd /var/www/html/
$ composer create-project --prefer-dist yiisoft/yii2-app-basic testproject

En este punto, está listo para comenzar a usar el marco de Yii para el desarrollo. Para ejecutar el servidor de desarrollo PHP, muévase al directorio testprojects (el nombre de su directorio debe ser diferente según lo que especificó en el comando anterior), luego inicie el servidor de desarrollo. De forma predeterminada, debería ejecutarse en el puerto 8080.

$ cd /var/www/html/testproject/
$ php yii serve

Para ejecutar el servidor de desarrollo en otro puerto, por ejemplo, el puerto 5000, use el indicador --port como se muestra.

$ php yii serve --port=5000

Luego abra su navegador web y navegue usando la siguiente dirección:

http://SERVER_IP:8080
OR
http://SERVER_IP:5000

Para implementar y acceder a una aplicación Yii en producción, se requiere un servidor HTTP como NGINX, Apache/HTTPD o cualquier otro software de servidor web compatible.

Para acceder a la aplicación Yii sin escribir su puerto, necesita crear el registro DNS A requerido para apuntar su dominio a su servidor de aplicaciones marco Yii.

Para esta guía, mostraremos cómo implementar una aplicación Yii con NGINX. Por lo tanto, debe crear un archivo de configuración de bloque de servidor o host virtual en el directorio/etc/nginx/sites-available/para su aplicación para que NGINX pueda servirlo.

$ sudo vim /etc/nginx/sites-available/testproject.me.conf

Copie y pegue la siguiente configuración en él (reemplace testprojects.me y www.testprojects.me con su nombre de dominio). También especifique los medios que NGINX pasará las solicitudes FastCGI a PHP-FPM, en este ejemplo, estamos usando un socket UNIX (/run/php/php7.4-fpm.sock):

server {
    set $host_path "/var/www/html/testproject";
    #access_log  /www/testproject/log/access.log  main;

    server_name  testprojects.me www.testprojects.me;
    root   $host_path/web;
    set $yii_bootstrap "index.php";

    charset utf-8;

    location / {
        index  index.html $yii_bootstrap;
        try_files $uri $uri/ /$yii_bootstrap?$args;
    }

    location ~ ^/(protected|framework|themes/\w+/views) {
        deny  all;
    }

    #avoid processing of calls to unexisting static files by yii
    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        try_files $uri =404;
    }

    # pass the PHP scripts to FastCGI server listening on UNIX socket 
    location ~ \.php {
        fastcgi_split_path_info  ^(.+\.php)(.*)$;

        #let yii catch the calls to unexising PHP files
        set $fsn /$yii_bootstrap;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }
       fastcgi_pass   unix:/run/php/php7.4-fpm.sock;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

       #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
    }

    # prevent nginx from serving dotfiles (.htaccess, .svn, .git, etc.)
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

Guarde el archivo y ciérrelo.

Luego verifique que la sintaxis de configuración de NGINX sea correcta, si está bien, habilite la nueva aplicación como se muestra:

$ sudo nginx -t
$ sudo ln -s /etc/nginx/sites-available/testprojects.me.conf /etc/nginx/sites-enabled/testprojects.me.conf

Luego reinicie el servicio NGINX para aplicar los nuevos cambios:

$ sudo systemctl restart nginx

Regrese a su navegador web y navegue con su nombre de dominio.

http://testprojects.me
OR
http://www.testprojects.me

Por último, debe habilitar HTTPS en su sitio web. Puede utilizar un certificado SSL/TLS de Let's Encrypt gratuito (automatizado y reconocido por todos los navegadores web modernos) o adquirir un certificado de una CA comercial.

Si decide utilizar un certificado Let's Encrypt, se puede instalar y configurar automáticamente con la herramienta certbot. Para instalar certbot, debe instalar snapd para instalarlo.

$ sudo snap install --classic certbot

Luego use certbot para obtener e instalar/configurar su certificado SSL/TLS gratuito para usar con el servidor web NGINX (proporcione un correo electrónico válido para la renovación y siga las instrucciones para completar la instalación):

$ sudo certbot --nginx

Ahora vaya a su navegador web una vez más para confirmar que su aplicación Yii ahora se está ejecutando en HTTPS (recuerde que HTTP debería redirigir automáticamente a HTTPS).

http://testprojects.me
OR
http://www.testprojects.me

Para obtener más información, como conectar su aplicación a una base de datos, consulte la documentación del marco de Yii en el sitio web oficial del proyecto Yii. Pruébelo y comparta sus pensamientos sobre Yii o haga cualquier pregunta a través del formulario de comentarios a continuación.