Recetas/apachephpbasico

De FESOL. Proyectos de Software Libre ULS
Saltar a: navegación, buscar

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

  • Debian GNU/Linux Jessie 8.x
  • Apache 2.4.10
  • php 5.6.30
  • mysql-server 5.5.55
  • Tener configurado los repositorios, ver Recetas/repositorio

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:

  1. Es un entorno de pruebas y
  2. 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 :

  1. Si estamos en la misma computadora abrimos en el navegador la direccion http://localhost/
  2. 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)
Deberá aparecer el siguiente sitio .
Página por defecto de apache en debian Jessie

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 .
Salida de phpinfo()


Creando la base de datos y un usuario en mysql cli

Nota: La salida de los comandos e han omitido para que el usuario lea el resultado detenidamente y verifique que ha sido lo que esperaba.

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 .
Salida de la prueba de conexión a la base de datos.


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

Referencias

http://php.net/manual/es/mysqli.query.php

http://php.net/manual/es/function.mysql-connect.php