CodeIgniter 4 Estructura de la aplicación

Es muy importante al trabajar con CodeIgniter 4 comprender como se estructura de forma predeterminada nuestra aplicación en una instalación nueva.

Directorios predeterminados

luego de la Instalación de CodeIgniter 4 en la raíz de la aplicación nos encontraremos con 5 directorios, los cuales cuentan con un papel muy importante en nuestra aplicación que se estructuran de la siguiente forma.

App

El directorio App es donde reside todo el código necesario para la aplicación y cuenta con varios directorios en su interior, se estructura de la siguiente forma

  • Config/: directorio donde se almacenan todos los archivos de configuración esenciales para el correcto y optimo funcionamiento de la aplicación, por ejemplo los archivos App.php(archivo de configuración de la aplicación), Routes.php(archivo de configuración donde se establecen las rutas de la aplicación),Database.php(archivo de configuración donde se establece la base de datos o bases de datos  a usar en la aplicación) se encuentran aquí. 
  • Controllers/:Directorio donde se definen los controladores para la aplicación.
  • Database/:Almacena las migraciones de las bases de datos y los archivos semilla.
  •  Filters/: Almacena las clases filtros que pueden ejecutarse antes y después del los controladores.
  •  Helpers/:Almacena una colección de helpers  dicho de otra forma colección de funciones independientes que pueden facilitar el trabajo del desarrollador.
  • Language/:Almacena el soporte para idiomas de la aplicación.
  • Libraries/:Una colección de clases que puede utilizar para agregar funcionalidad a su aplicación. La biblioteca en sí no es una parte central de CodeIgniter y puede eliminarse o actualizarse según sea necesario.
  • Models/:Almacena los modelos que funcionan con la base de datos de la aplicación.
  • ThirdParty/:Almacena bibliotecas de terceros que se pueden utilizar en la aplicación.
  • Views/: Almacena las vistas con las que interactúa el usuario.

System

Este directorio almacena los archivos que componen el propio marco del framework, si bien tiene mucha flexibilidad en cómo usa el directorio de la aplicación, los archivos en el directorio del sistema nunca deben modificarse. En su lugar tiene que ampliar las clases o crear nuevas clases para proporcionar la funcionalidad deseada.

Public

La carpeta pública contiene la parte de su aplicación web accesible al navegador, lo que impide el acceso directo a su código fuente. Contiene el archivo .htaccess principal, index.php , y cualquier recurso de aplicación que agregue, como CSS, JavaScript o imágenes.

Esta carpeta está destinada a ser la «raíz web» de su sitio y su servidor web estaría configurado para apuntar a ella.

Writable

Este directorio contiene todos los directorios necesarios para escribir durante la vida de una aplicación. Esto incluye directorios para almacenar archivos de caché, registros y cualquier carga que un usuario pueda enviar. Debe agregar aquí cualquier otro directorio en el que su aplicación deba escribir. Esto le permite mantener sus otros directorios principales sin escritura como medida de seguridad adicional.

Tests

Este directorio está configurado para contener sus archivos de prueba. el directorio _support contiene varias clases simuladas y otras utilidades que puede utilizar mientras escribe sus pruebas. No es necesario transferir este directorio a sus servidores de producción.

https://codeigniter.com

https://codeigniter.com/download

https://codeigniter.com/user_guide/intro/index.html

https://codeigniter.com/user_guide/concepts/structure.html


Cómo Configurar un VirtualHost en Apache para un Proyecto CodeIgniter

En este tutorial, aprenderás a configurar un VirtualHost en Apache para tu proyecto de CodeIgniter. Un VirtualHost te permite acceder a tu proyecto a través de un dominio personalizado en lugar de usar la dirección IP o una ruta larga. Sigue estos pasos:

Paso 1: Crear proyecto de CodeIgniter 4 usando composer

En este paso se debe tener en cuenta que se debe contar con los permisos necesarios para la creación de nuestro proyecto dentro del directorio /var/www/ en ubuntu,debian o en alguna de las distribuciones derivadas de estas.

le asignaremos los permisos necesarios de la siguiente forma

Asignar a nuestro usuario como propietario del directorio /var/www/

sudo chown  grupodelusuario:usuario -R  /var/www

con este comando se le asigna al usuario ser el propietario del directorio,hay que remplazar el grupodelusuario por el grupo al que pertenece el usuario con el que se esta trabajando y remplazar usuario por el nombre de nuestro usuario.

Asignar permisos de escritura y lectura a el directorio /var/www

sudo chmod 755 /var/www/

de esta manera le asignamos los permisos a el propietario de escritura y lectura,mientras que los demás usuarios solo puede ver los archivos nada mas.

Crear el proyecto de CodeIgniter 4 usando composer

para eso solo basta que nos dirijamos desde la terminal hasta el directorio /var/www y ejecutamos el siguiente comando.

composer create-project codeigniter4/appstarter miproyecto

de esta manera ya tenemos instalado y creado nuestro proyecto de CodeIgniter 4 en nuestro servidor.pero no podemos probar aun ya que debemos configurar nuestro virtual host.

Paso dos:Crear el archivo de configuración del VirtualHost

para este paso debemos crear un archivo de configuración en el directorio /etc/apache2/sites-available y lo llamaremos mi_proyecto.conf.

Nos dirigimos al directorio de configuración de apache

cd /etc/apache2/sites-available/

Creamos el archivo mi_proyecto.conf,podemos utilizar el editor de nuestra preferencia,podemos remplazar nano por vim,emacs,gedit,xed,featherpad o el editor de nuestra preferencia

sudo nano mi_proyecto.conf

Añade lo siguiente al archivo configuración que estamos creando :

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName mi_proyecto.local
    DocumentRoot /var/www/miproyecto/public

    <Directory /var/www/miproyecto/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Paso 3: Modificar el archivo host:

Modificando el archivo host permitiremos que nuestro dominio personalizado apunte a nuestro servidor local,de esta manera cuando ingresemos mi_proyecto.local en nuestro navegador apuntara a nuestro proyecto.

nos dirigimos al el directorio /etc/

cd /etc/

abrimos el archivo hosts

sudo nano hosts

añadimos la siguiente linea a nuestro archivo hosts

127.0.0.1   mi_proyecto.local

Paso 4: Habilitar el nuevo VirtualHost:

Para habilitar nuestro nuevo virtualhost debemos ejecutar el siguiente comando .

sudo a2ensite mi_proyecto.conf

Ahora que ya habilitamos nuestro nuevo host solo basta con reiniciar nuestro servidor apache.

sudo systemctl restart apache2

Paso 5: Comprobar el correcto funcionamiento de nuestro VirtualHost

para ello hay que asignarle permisos de escritura y lectura a la carpeta /writable de nuestro proyecto,para ello ejecutamos los siguientes comandos

Asignamos a www-data como propietario del directorio writable de nuestro proyecto

sudo chown www-data:www-data /var/www/miproyecto/writable

le asignamos los permisos correspondientes

sudo chmod 755 /var/www/miproyecto/writable/

Ahora en nuestro navegador colocamos la siguiente url

http://mi_proyecto.local/

tendremos que obtener lo siguiente en nuestro navegador