CodeIgniter es un framework, combo de herramientas que automatiza partes comunes en todo proyecto.
Ejemplo: si siempre trabajas con mysql, bueno codeigniter tiene ya iniciada y solo envias los querys/consultas ahorrando tiempo al no codificar la conexcion.
Codeigniter es famoso porque emplea MVC pero a este le permite que sean un codigo realizable:
NOTA lo expuesto aqui es para novatos.
Codeigniter o CI es para PHP, CI 2 y 3 trabajan con php 5 (5.3 a 5.6) y php7 ( al 7.3) mientras que el CI 4 trabaja solo con php 7 unicamente.
Para desarrollar necesitamso herramientas y programas:
Hay dos maneras.. la facil y rapida descargar venenux que ya tiene incluido todos los programas:
Maquinas desde 2012 hasta 2017 -> https://sourceforge.net/projects/vegnuli/files/VenenuX-1.0/venenux-1.0-osposweb/debian-8-venenux-i386-20190531-snap.iso/download Maquinas 2006 al 2012 muy viejas -> https://sourceforge.net/projects/vegnuli/files/VenenuX-1.0/venenux-1.0-osposweb/debian-7-venenux-i386-20190531-snap.iso/download
La otra manera si no gusta esto es instalacion manual:
Se asume tiene un sistema Debian instalado, necesitara instalar el servicio Web (apache o lighttpd), el engine Php (php5 o php7), la base de datos (Mysql), el editor IDE (geany) y el control de versiones (git).
Adicional a esto, tambien un administrador de base de daatos (mysqlworkbench), un comparador de archivos (meld), un navegador web para ver el proyecto (chrome), y un gestor de archivos para el ftp o ssh (caja o pcmanfm).
Primero instalar el servidor de base de datos:
1 - abrir una consola, y ejecutar “su” para cambiar al usuario root, recuerde que no usamos winbuntu, en esos casos es “sudo”:
2 - Como root ejecutar los siguientes comandos, cada secuencia o comando que debe ejecutar esta separado por una linea de espacio:
apt-get remove --purge --force-all mariadb* mysql*
cat > /etc/apt/apt.conf.d/50venenuxcustom << EOF
APT::Get::AllowUnauthenticated "true";
Acquire::AllowInsecureRepositories "true";
Acquire::AllowDowngradeToInsecureRepositories "true";
Acquire::Check-Valid-Until "false";
EOF
cat > /etc/apt/sources.list.d/51-mysql.list << EOF
deb http://repo.mysql.com/apt/debian/ $(lsb_release -s -c) mysql-5.6
deb http://repo.mysql.com/apt/debian/ $(lsb_release -s -c) mysql-5.7
deb http://repo.mysql.com/apt/debian/ $(lsb_release -s -c) mysql-tools
EOF
apt-get update
apt-get -y --force-yes install mysql-server mysql-client mysql-common mysql-community-server libmysqlclient20
3 - Despues de un rato de descargar, segun la version de Debian este va preguntar o no por la calve de root, y como es para desarrollo no es necesario configurar mas:
ski0="";ski0=$(grep skip-name-re /etc/mysql/mysql.conf.d/mysqld.cnf);[[ $ski0 != '' ]] && echo listo || sed -i -e 's|.*bind-address.*=.*|bind-address\t= 127.0.0.1\nskip-external-locking|g' /etc/mysql/mysql.conf.d/mysqld.cnf
ski1="";ski1=$(grep skip-name-re /etc/mysql/mysql.conf.d/mysqld.cnf);[[ $ski1 != '' ]] && echo listo || sed -i -e 's|skip-external-locking|skip-external-locking\nskip-name-resolve|g' /etc/mysql/mysql.conf.d/mysqld.cnf
ski2="";ski2=$(grep local-infile /etc/mysql/mysql.conf.d/mysqld.cnf);[[ $ski2 != '' ]] && echo listo || sed -i -e 's|skip-name-resolve|skip-name-resolve\nlocal-infile=0|g' /etc/mysql/mysql.conf.d/mysqld.cnf
ski3="";ski3=$(grep symbolic-lin /etc/mysql/mysql.conf.d/mysqld.cnf);[[ $ski3 != '' ]] && echo listo || sed -i -e 's|local-infile=0|local-infile=0\nsymbolic-links=0|g' /etc/mysql/mysql.conf.d/mysqld.cnf
sed -i 's/bind-address.*=.*/bind-address=127.0.0.1/g' /etc/mysql/mysql.conf.d/mysqld.cnf
cat > /etc/security/limits.d/50-mysql.conf << EOF
mysql soft nofile 65535
mysql hard nofile 65535
EOF
/usr/sbin/service mysql restart
Esto permitira conectarnos localmente a nuestra base de datos.
4 - Para poder administrarla y gestionarla emplearemos un completo administrador local el “mysqlworkbench” el cual esta en todos los debian menos el 10, para este descargar de al pagina web de oracle el de ubuntu 18 el cual instalara perfecto.
En los debian desde wheezy hasta jessie, se puede instalar asi:
apt-get -y --force-yes install mysql-workbench
Despues de instalar tendra listo para ejecutar desde el menu “Desarrolo” :
Segundo instalar el servidor web y php:
1 - Igual una consola, y ejecutar “su” para cambiar al usuario root, recuerde que no usamos winbuntu, en esos casos es “sudo”:
2 - Como root ejecutar los siguientes comandos, cada secuencia o comando que debe ejecutar esta separado por una linea de espacio:
apt-get -y install lighttpd spawn-fcgi apache2-utils
/usr/sbin/lighty-enable-mod cgi dir-listing accesslog fastcgi status userdir usertrack
/usr/sbin/service lighttpd restart
rm /var/www/html/index.lighttpd.html
3 - Esto le permitira tener ya el servidor web listo para usar,
para ver si sirve instalar el navegador web firefox
y al abrir firefox navegar la ruta http://127.0.0.1/
debera
si ejecuto todo mostar un pequeño index:
4 - Ahora hay que instalar el engine php y los modulos php requeridos, para esto aun como root en la terminal ejecutar los comandos cada uno separado por una linea en blanco:
apt-get -y --force-yes install php php-common php-cgi php-fpm php-cli \
php-curl php-readline php-gd php-gmp php-imap php-intl php-mbstring \
php-mysql php-odbc php-pgsql php-sqlite3 php-sybase \
php-recode php-snmp php-ssh2 php-bz2 php-bcmath php-enchant \
php-xml php-xmlrpc php-pspell php-json \
php-pear php-xml-dtd php-xml-parser php-xml-rpc2 \
php-oauth php-apcu php-apcu-bc php-net-smtp php-gettext
OPCIONAL - IMPORTANTE: Si el comando anterior falla, es porque en los debian viejos, se llamaban distintos, eran php 5 y hoy dia se llaman php sin version, si usa debian viejo ejecute este comando como root obviamente:
apt-get -y install php5-common php5-gmp php5-readline php5-recode \
php5-odbc php5-imap php5-sybase php5-sqlite php5-mysql \
php5-xml* php5-xsl php5-pgsql php5-intl php5-enchant \
php5-curl php5-mcrypt php5-gd php5-pspell php5-snmp \
php5-cli php5-fpm php5-cgi php5 php5-http php5-apcu
5 - Una vez instalado php hay que activarlo en el servicio web, ejecute los siguientes comandos en la misma consola de root:
/usr/sbin/lighty-enable-mod accesslog cgi fastcgi fastcgi-php
echo "<?php echo phpinfo();" > /var/www/html/infophp.php
/usr/sbin/service lighttpd restart
Ahora para verificar que el engine php sirve en el servidor web,
abrimos el firefox y visitamos la url http://127.0.0.1/infophp.php
y nos deveria aparecer informacion de php:
6 - Para usar el directorio personal con php, activamos nuestro directorio personal de proyectos “Devel” en el mismo servidor web, en la misma consola de root ejecute los comandos separados por linea en blanco:
sed -i -r 's|userdir.path.*=.*|userdir.path = "Devel"|g' /etc/lighttpd/conf-available/10-userdir.conf
for i in $(ls /home);do mkdir -p -m 777 /home/$i/Devel ;done
mkdir -p /etc/skel/Devel
/usr/sbin/lighty-enable-mod userdir usertrack
service lighttpd restart
Esto hara que en nuestro directorio de documentos, el directorio “Devel”
pueda contener archivos de servicio web y php sin tener que se root,
esto se verifica colocando una tilde en la direccion del nombre de usuario,
por ejemplo el /home/usuario/Devel
sera en navegador http://127.0.0.1/~usuario/
asi:
Tercero instalar editor IDE y git:
Ya tenemos en equivalente a entorno LAMP (web server y php con mysql), ahora necesitamos el editor de texto para codigo fuente y el gestor de cambios y control de versiones:
1 - Igual una consola, y ejecutar “su” para cambiar al usuario root, recuerde que no usamos winbuntu, en esos casos es “sudo”:
2 - Como root ejecutar los siguientes comandos, cada secuencia o comando que debe ejecutar esta separado por una linea de espacio:
apt-get -y install geany geany-plugins giggle git meld
3 - Esto colocara en el menu “Desarrollo” tres programas nuevos, el editor Geany, el cvs Giggle, y el diff Meld:
Ya con esto se tiene las herramientas ahora se necesita el framework:
El framework en realidad es un conjunto de archvos php, que se copiaran a su proyecto y seran como la base en el caul se trabajara.
Se puede usar descargando y descomprimiendo o usando git, sea como sean si con git o decargando de aqui en adelante no necesitara ejecutar comandos como usuario root:
cd ~/Devel
wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.11.tar.gz -O CI3.tar.gz
wget https://github.com/scoumbourdis/grocery-crud/archive/v1.6.3.tar.gz -O CI3-GC-v1.6.3.tar.gz
mkdir ~/Devel/projectphp1
cd ~/Devel/projectphp1 && tar -xf ~/Devel/CI3.tar.gz --strip 1
cd ~/Devel/projectphp1 && tar -xf ~/Devel/CI3-GC-v1.6.3.tar.gz --strip 1
chmod 666 ~/Devel/projectphp1/application/log
chmod 666 ~/Devel/projectphp1/application/cache
chmod 666 ~/Devel/projectphp1/assets/uploads
El proyecto estara ya listo para empezar codificar, (la siguiente seccion enseña como), se puede verificar en el navegador, usando la ruta:
El IDE geany nos da todo lo necesario incluso navegacion web, no necesitamos de un navegador pesadisimo como firefox o chrome, para esto debemos configurar los dos plugins mas importantes: “treebrowser” y “webhelper”.
El geany tiene tres regiones principales, tambien movibles aunque inicialmente viene asi:
Despues debemos configurar en el codigo Codeigniter nuestro proyecto, y ver como se ven nuestros cambios en el IDE geany.
Habilitar el plugin de “treebrowser” para ver archivos del proyecto en contexto:
En esa pestaña nueva es que estableceremos el directorio “Devel”, foto:
Habilitar el plugin de “webhelper” para ver archivos del proyecto en contexto:
Abajo aparece “Vista previa web” pero esto ya no esta para debian 10 ni 11:
Abrimos el proyecto desde el area de archivos
Application/config
que es el primero en revisar
en un proyecto CI, y estos son los archivos a comenzar modificar:application/config/config.php
,
en este archivo hay que asegurar los siguientes parametros:
((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
sustituyendo en el espacio donde coloca '';
.'index.php';
ya que es la manera mas compatible entre varios servidores web.4;
sin comillas simples (esta en cero).666;
asi archivo de log
que se generara para que tanto el usuario como el servidor web
puedan leer y generarse.'1234567890asdfghjklñ1234567890as';
claro
que este ejemplo es muy simple, use mas creatividad.application/config/routes.php
aqui se define las rutas que se “llaman” en el navegador:
'welcome'
y
es el nombre del archivo php controller que manejara si no se especifica
ninguna llamada web hacia el proyecto cuando se visite.array('form', 'url', 'html');
para cargar los tres.array('database', 'table');
Abriremos el mysqlworkbench para poder crear la base de datos que usaremos.
El funcionamiento es “yo pido en el navegador” -> “el servidor responde si el controlador existe”, este “servidor responde” se le llama “response” y la peticion que realiza “yo pido en el navegador” se le llama “request”, a este par se le denomina en desarrollo coo “peticon - respuesta” o mejor denominado “request - response” (mal llamado cliente servidor).
Codeigniter maneja estas peticiones en los “controller” que estan
en applications/controller/
cada archivo es un controllador unico,
y cada controlador es uan peticion, entonces
appliactions/controller/welcome.php
http://127.0.0.1/~general/projectphp1/index.php/welcome/
http://127.0.0.1/~general/projectphp1/
En este documento realizamos las siguientes actividades:
lighttpd
como servidor web,
y mariadb
como servidor de base de datos, adicinalmente se instalo
el entorno php
ya que CI funciona es para php.geany
como editor de texto, mysql-workbench
como administrador de la
base de datos, y git
como gestor de control de versiones.geany
para tener el proyecto abierto,
navegar en sus archivos, y previsualizar sin usar navegador web.