Diferencia entre revisiones de «Recetas/apachephpbasico»

De FESOL. Proyectos de Software Libre ULS
Saltar a: navegación, buscar
 
(No se muestran 10 ediciones intermedias del mismo usuario)
Línea 4: Línea 4:
 
== Requisitos ==
 
== Requisitos ==
  
'''Sistema operativo:'''
+
* Debian GNU/Linux Jessie 8.x
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 ==
 
== Instalación de programas ==
Línea 42: Línea 45:
 
  nano /var/www/html/phpinfo.php
 
  nano /var/www/html/phpinfo.php
  
 
+
<syntaxhighlight lang="php">
 
  <?php
 
  <?php
 
   phpinfo();
 
   phpinfo();
 
  ?>
 
  ?>
 +
</syntaxhighlight>
  
# Luego abrimos el archivo con http://localhost/phpinfo.php
+
Luego abrimos el archivo con http://localhost/phpinfo.php
Deberá aparecer el siguiente sitio . [[File:pagina-apache-phpinfo-debian-jessie.png|none|thumbnail|SAlida de phpingo()]]
+
Deberá aparecer el siguiente sitio . [[File:Pagina-apache-phpinfo-debian-jessie.png|none|thumbnail|Salida de phpinfo()]]
  
  
 
=== Creando la base de datos y un usuario en mysql cli ===
 
=== 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 ===
 
=== 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
 +
 +
<syntaxhighlight lang="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);
 +
  ?>
 +
</syntaxhighlight>
 +
 +
Luego abrimos el archivo con http://localhost/mysql.php
 +
Deberá aparecer el siguiente sitio . [[File:pagina-apache-phpmysql-debian-jessie.png|none|thumbnail|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 ==
 
== Referencias ==
  

Revisión actual del 10:56 21 may 2017

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