Diferencia entre revisiones de «Recetas/apachephpbasico»
(No se muestran 14 ediciones intermedias del mismo usuario) | |||
Línea 4: | Línea 4: | ||
== Requisitos == | == Requisitos == | ||
− | + | * 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 26: | Línea 29: | ||
=== Probando el servidor apache === | === 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) | ||
+ | |||
+ | Deberá aparecer el siguiente sitio . [[File:pagina-apache-defecto-debian-jessie.png|none|thumbnail|Página por defecto de apache en debian Jessie]] | ||
=== Probando que el servidor apache pueda ejecutar código php === | === 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 | ||
+ | |||
+ | <syntaxhighlight lang="php"> | ||
+ | <?php | ||
+ | phpinfo(); | ||
+ | ?> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 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 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 == | ||
http://php.net/manual/es/mysqli.query.php | http://php.net/manual/es/mysqli.query.php | ||
+ | |||
http://php.net/manual/es/function.mysql-connect.php | http://php.net/manual/es/function.mysql-connect.php |
Revisión actual del 10:56 21 may 2017
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
- 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:
- 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
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 .
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