CÓMO INSTALAR Y CONFIGURAR APACHE WEB SERVER EN GNU/LINUX II

apache-logo¿Qué es LAMP?

LAMP es el acrónimo usado para describir un conjunto de subsistemas de infraestructura, con el fin de alcanzar una solución global de intranet/internet para configurar sitios web dinámicos que usa las siguientes herramientas:

 

 

  • GNU/Linux, el sistema operativo.
  • Apache, el servidor web.
  • MySQL/MariaDB, el gestor de bases de datos.
  • PHP (Perl ó Python) el lenguaje de programación.

 

¿Qué es PHP?

PHP es el acrónimo recursivo de (PHP: Hypertext Preprocessor), es un lenguaje de código abierto muy popular especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML.

Lo que distingue a PHP del lado del cliente con por ejemplo “Javascript” es que el código es ejecutado en el servidor, generando HTML y enviándolo al cliente. El cliente recibirá el resultado de ejecutar el “script”, aunque no se sabrá el código subyacente que era. El servidor web puede ser configurado incluso para que procese todos los ficheros HTML con PHP, por lo que no hay manera de que los usuarios puedan saber qué se está ejecutando.

 

Instalación de PHP

Para instalar PHP en nuestro servidor podemos utilizar apt-get, en sistemas Debian o derivados ó cualquier otro gestor de paquetes dependiendo de nuestra distribución (yum, dnf, yast). El paquete a instalar depende de la versión que deseemos implementar y la versión del servidor Apache. Lo normal es que utilicemos la versión 2 de apache y que instalemos la versión 5 de PHP.

En tal caso deberíamos instalar “libapache2-mod-php5”:

# apt-get install libapache2-mod-php5

Al instalar “libapache2-mod-php5” mediante “apt-get”, automáticamente se configura para integrarse perfectamente en Apache, creando los archivos necesarios en la carpeta de módulos disponibles de Apache ubicados en el directorio “/etc/apache2/mods-available” y creando los enlaces necesarios para habilitarlos en la carpeta de módulos de Apache “/etc/apache2/mods-enabled”.

Para confirmar que se a cargado el módulo en Apache ejecutamos:

# apachectl –M | grep php

MODULO-PHP-CARGADO

Si vamos a conectar a bases de datos MySQL/MariaDB desde PHP, necesitamos instalar el módulo “php5-mysql”:

# apt-get install php5-mysql

Además, tendremos que editar el archivo “/etc/php5/apache2/php.ini” y añadir la línea “extension=mysql.so” como veremos en el siguiente apartado.

 

Configuración de PHP

El archivo de configuración de php5 es el archivo:

“/etc/php5/apache2/php.ini”

Los parámetros más destacables a configurar son:

Safe Mode = Off (activado por defecto)

Modo Seguro. Si el Modo seguro está desactivado, se habilitan todas las funciones del PHP. Si el Modo seguro está activado, se deshabilitan todas las funciones del PHP consideradas peligrosas. Para servicios de “hosting” se recomienda activar el modo seguro.

Display errors = On (lo cambiamos de Off a On)

Mostrar Errores. Muestra los errores en las mismas páginas, cuando las haya. Cuando hay errores en los “scritps”, es más fácil encontrarlos si se muestran en las páginas.

max_execution_time=30 (activado por defecto)

Tiempo máximo en segundos de la ejecución de un script.

post_max_size=8M (activado por defecto)

Tamaño máximo de datos que se pueden enviar al servidor mediante POST.

upload_max_filesize = 8M (de 2M lo cambiamos a 8M)

Tamaño máximo de archivo que se puede subir al servidor.

extension=mysql.so (solo hay que descomentar la entrada, quitar “;”)

Activa el acceso a bases de datos MySQL/MariaDB desde PHP.

extension_mysql

Una vez instalado y configurado, antes de probar debemos reiniciar el servidor web Apache:

# /etc/init.d/apache2 restart

ó

# service apache2 restart

Ahora crearemos una página PHP que utilice la función “phpinfo” que además de comprobar que Apache y PHP están funcionando, nos mostrará una información de la versión. Crearemos el siguiente archivo:

Crear archivo /var/www/phpinfo.php (permisos 644):

 

<HTML>

<H1>Prueba PHP</H1>

Salida del comando phpinfo:

<?

phpinfo();

?>

</HTML>

 

Ahora ejecutaremos el navegador web e iremos a la URL “http://ip-del-servidor/phpinfo.php”. Si nos aparece la información de la versión de PHP significa que está correctamente instalado.

http://192.168.1.224/phpinfo.php (en mi caso para este HowTo)

Captura de pantalla 2015-12-24 a las 17.35.53

 

¿Qué es MySQL/MariaDB?

MySQL/MariaDB es un sistema de administración de bases de datos (Database Management System, DBMS) para bases de datos relacionales. Así, MySQL/MariaDB no es más que una aplicación que permite gestionar archivos llamados de bases de datos.

Destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interactuación con los lenguajes de programación más utilizados como PHP, Perl y Java y su integración en distintos sistemas operativos.

Debemos mencionar la condición de “open source”, que hace que su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo descargar su código fuente. MySQL/MariaDB una de las herramientas más utilizadas por los programadores orientados a Internet.

Si disponemos de un servidor web con soporte PHP y base de datos MySQL/MariaDB, tendremos la arquitectura ideal para crear un portal dinámico utilizando gestores de contenidos como “Drupal”, así como aplicaciones web orientadas al desarrollo rápido de contenidos como Blogs.

 

Instalación de MySQL/MariaDB

Para la instalación del servidor y el cliente de MySQL/MariaDB, debemos instalar los paquetes “mysql-server”, “mysql-common” y “mysql-client” mediante “apt-get” o cualquier otro gestor de paquetes. Instalaremos la versión 5 de MySQL/MariaDB:

# apt-get install mysql-server mysql-common mysql-client

En el caso de Ubuntu, durante la instalación nos saldrá una TUI (Terminal User Interface) en la que nos pedirá la contraseña para el usuario “root” (que no tiene nada que ver con el usuario administrador del sistema), tenéis la posibilidad de introducir una contraseña o dejarla en blanco. Otras distribuciones no preguntan por la contraseña dejándola en blanco, esto se trata más adelante en la sección de administración.

instalacion_mysql

 

Arranque y parada del SGBD MySQL/MariaDB

El servidor de datos MySQL/MariaDB, al igual que todos los servicios en Debian, dispone de un “script” de arranque y parada en la carpeta “/etc/init.d”.

# /etc/init.d/mysql restart

ó

# service mysql restart

 

Arranque automático del servidor MySQL/MariaDB al iniciar el sistema.

Para un arranque automático del servicio al iniciar el servidor, debemos crear los enlaces simbólicos correspondientes ó utilizar la herramienta ya mencionada “sysv-rc-conf”

 

Configuración del SGBD MySQL/MariaDB

El archivo de configuración de MySQL/MariaDB es:

“/etc/mysql/my.cnf”

En dicho archivo se configuran aspectos generales como la ruta donde se almacenarán los archivos de la base de datos, el puerto a utilizar, etc.

 

Administración del SGBD MySQL/MariaDB

MySQL/MariaDB es un SGBD completo que permite crear usuarios y establecer permisos sobre bases de datos, tablas y campos deseados a dichos usuarios. Los permisos pueden ser de consulta, inserción, modificación y borrado de datos además de creación, modificación, eliminación de tablas, bases de datos y de administración de usuarios y permisos.

Quizás la primera acción que se debería hacer nada más arrancar el SGBD MySQL/MariaDB sería poner una contraseña al usuario “root” si es que durante la instalación del paquete no nos la solicitó (como fue mi caso). Para ello debemos iniciar MySQL/MariaDB con el comando:

# /etc/init.d/mysql start

Posteriormente iniciamos el cliente de MySQL/MariaDB como “root” y cuando aparezca el prompt de MySQL/MariaDB (mysql>) ejecutamos una orden “grant” para establecer la contraseña de “root”:

# mysql -u root

 

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 5 to server version: 4.0.20-log

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> grant all privileges on *.* to root@localhost identified by ‘contraseña’ with grant option;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

Bye

 

Analizando el comando “grant” de MySQL/MariaDB

Como podemos observar más arriba una vez dentro de MySQL/MariaDB hemos ejecutado en su prompt (mysql>) el siguiente comando:

mysql> grant all privileges on *.* to root@localhost identified by ‘contraseña’ with grant option;

Bien, analicemos cada parte del comando:

grant:

Es el comando que permite “conceder” privilegios a un usuario.

all privileges:

Se conceden todos los privilegios a este usuario, los posibles privilegios pueden ser: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, etc.

 on:

Los objetos a los que se aplican los privilegios, el formato es “base_de_datos.tabla”, por lo tanto (*.*) quiere decir, todas las bases de datos y todas las tablas. Otros ejemplos podrían ser: “ventas.*” (para todas las tablas de la base de datos “ventas”, “contabilidad.nominas” (para la base de datos “contabilidad” y su tabla “nominas”), etc.

to:

El usuario al que se le conceden los privilegios, el formato es usuario@”equipo”, en el ejemplo el usuario es “root” cuando se conecte desde “localhost”, es decir, solo conectado localmente el usuario “root” tiene acceso total. El comodín en este caso es (%), así que si se indica root@’%’, el acceso podrá ser desde cualquier equipo (no muy buena idea en el caso de root). En “equipo” es válido una dirección IP, un nombre de dominio.

identified by:

La contraseña se indica en esta parte y se escribe en texto plano. Una vez que presiones “Enter” la contraseña se encripta.

with grant option:

esta última parte es opcional, e indica que el usuario en cuestión puede a la vez otorgar privilegios a otros usuarios sobre los que el tenga permisos, que en este caso son todos. Aquí se nota la importancia de que “root” solo sea accesible localmente (localhost) por que queda con posibilidades de otorgar privilegios a otros usuarios.

NOTA:

El comando termina con punto y coma (;), tal como dice la información del prompt de MySQL/MariaDB, cada comando debe terminar con (;) ó (\g).

De ésta manera habremos puesto como contraseña de “root” la palabra “contraseña”. La próxima vez que entremos, debemos añadir la opción “-p” para que nos la pida ya que de lo contrario no nos dejará entrar:

# mysql -u root -p

Ahora debemos introducir la contraseña para acceder.

Y hasta aquí el final de la segunda parte del post:

CÓMO INSTALAR Y CONFIGURAR APACHE WEB SERVER EN GNU/LINUX II

En otra futura entrada, trataré el tema de la administración de MySQL/MariaDB desde phpMyAdmin, que es una herramienta escrita en PHP para manejar la administración de MySQL/MariaDB a través de páginas web.

 

Saludos cordiales.

 

 

 

Una respuesta a “CÓMO INSTALAR Y CONFIGURAR APACHE WEB SERVER EN GNU/LINUX II

  1. Pingback: CÓMO INSTALAR Y CONFIGURAR APACHE WEB SERVER EN GNU/LINUX I | A Linux a Day

Deja un comentario