Recetas/apachephpbasico
Contenido
Resumen de la receta
En esta receta se instala apache2 php5 y mysql en un Debian Jessie y se crea un mini aplicación básica que se conecte a la base de datos de mysql.
Requisitos
Sistema operativo:
Debian GNU/Linux Jessie 8.x Apache 2.4.10 php 5.6.30 mysql-server 5.5.55
Instalación de programas
apt-get install apache2 php5 libapache2-mod-php5 php-db
- apache2: Servidor web apache
- php5: Lenguaje php
- libapache2-php2: Módulo de apache para que pueda interpretar código de php
apt-get install mysql-server php5-mysql php-db
- mysql-server : Servidor mysql
- php5-mysql: Módulo de php para realizar conexiones a mysql
- php-db: Funciones mysqi para php (las extesión mysql_connect) ha quedado obsoleto
Cuando se instala mysql-server pide una clave para el usuario root de mysql (no confundirlo con el usuario root del sistema operativo). Se recomienda no ingresar clave alguna cuando:
- Es un entorno de pruebas y
- No se instalará algún sistema que requiera la clave de root de mysql para configurarse, por ejemplo phpmyadmin
Configuración
Probando el servidor apache
Para probar el servidor apache :
- Si estamos en la misma computadora abrimos en el navegador la direccion http://localhost/
- Si estamos en otra computadora, abrir en el navegador la dirección de la computadora http://<IP de la computadora remota donde se instalo apache> (Por ejemplo 192.168.1.5)
Probando que el servidor apache pueda ejecutar código php
Para verificar que el servidor puede ejecutar código php lo que hacemos es:
Verificar cuál es el directorio que publica nuestro servidor web, para nuestro caso como es una instalacion nueva, la vemos en el archivo
nano /etc/apache2/sites-enabled/000-default.conf
Ahí notamos que la carpeta que publica es la /var/www/html/
Ahora solo creamos un archivo llamado /var/www/html/phpinfo.php con el siguiente contenido:
nano /var/www/html/phpinfo.php
<?php phpinfo(); ?>
Luego abrimos el archivo con http://localhost/phpinfo.php
Deberá aparecer el siguiente sitio .
Creando la base de datos y un usuario en mysql cli
Para la crear el usuario y la base de datos, se puede hacer desde modo grafico con mysql workbench, modo web con phpmyadmin o en modo cli. Acá lo haremos en modo cli.
Ingresamos al modo cli
mysql -u root
Nota: en caso de que le hayamos asignado una clave al usuario, se debe pasarle el parámetro -p de modo que el comando quedaría como mysql -u root -p
Creamos la base de datos
mysql> create database prueba;
Creamos el usuario y la clave para la base
mysql> grant all privileges on prueba.* to 'usuario'@localhost identified by 'prueba';
Aplicamos los cambios de privilegios
mysql> flush privileges;
Nos vamos a la base de mysq para ver cuales son los usuarios que tiene mysql
mysql> use mysql mysql> select * from user;
Verificamos los privilegios que tiene el usuario usuario que se conecta desde localhost
mysql> show grants for 'usuario'@localhost;
Nos conectamos a la base de datos prueba
mysql> use prueba
Creamos una tabla simple de pruebas llamad curso
mysql> create table curso(identificacion int);
Verificamos que la tabla haya sido creada
mysql> show tables;
Mostramos los campos de la tabla creada
mysql> describe curso;
Insertamos datos en la tabla
mysql> insert into curso values(2); mysql> insert into curso values(3);
Verificamos los datos insertados
mysql> select * from curso;
Nos salimos
mysql> exit
Ahora verificamos la conexión con el usuario que creamos
mysql -p -u usuario
E ingresamos la clave que le configuramos. Si todo salio bien, deberá aparecernos el cli de mysql
Probando código php para acceder a la base de datos
Creamos un archivo llamado /var/www/html/mysql.php con el siguiente contenido:
nano /var/www/html/mysql.php
<?php
$mysqli = new mysqli("localhost", "usuario", "prueba", "prueba");
if ($mysqli->connect_errno) {
echo "Falló la conexión con MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$resultado = $mysqli->query("select * from curso");
printf("La selección devolvió %d filas.\n", $resultado->num_rows);
?>
Luego abrimos el archivo con http://localhost/mysql.php
Deberá aparecer el siguiente sitio .
Nota: En caso de que no muestre nada o no funcione, podemos ver los logs del apache para ver que parte es la que esta fallando con el comando:
tail /var/log/apache2/*.log
ó
tail -f /var/log/apache2/*.log
Con la opción -f muestra las lineas conforme se van agregando. Para salirse de ese modo solo se presionan las teclas Ctrl + C