17 de agosto de 2014

Servidor PHP5 + Apache + MariaDB server en local con Fedora 20

Como ando profundizando poco a poco en la programación Web y entre tanto framework de cada lenguaje como Zend, Symfony (entre otros) de PHP, Django de Python, Ruby on Rails de Ruby, lenguajes de programación unos orientados a desarrollo Web, otros generalmente para programas o scripts en local... esto acaba siendo un gazpacho de innumerables dimensiones.

Por lo pronto ando mejorando los conocimientos con PHP investigando sobre la orientación a objetos. Así puedo subirme a la "nueva" forma de programar. Y hasta que no domine bien las clases, métodos, atributos y multitud de cosas raras no creo que me vea dentro de un framework como Zend. Eso sí, a finales de este año deberé saber al menos hacer ¡una línea!

Pués, nos subimos al deportivo de las conexiones Web, y montemos el servidor local para trabajar. 

Primero, deberemos instalar los respectivos paquetes, httpd, mariadb-server, php, phpMyAdmin.
$ su -c "yum install php phpMyAdmin mariadb-server httpd"
Segundo, arrancamos los 'demonios' (de daemons en inglés).
$ su -c "systemctl start httpd mysqld"
Tercero, configuramos el servidor MariaDB.
$ su -c "mysql_secure_installation"
Este comando nos generará una serie de preguntas a las que deberemos atender. Generalmente lo que nos importará aquí es que debamos setear la contraseña de root. Que es la que más adelante utilizaremos para acceder a PHPMyAdmin, realizar conexiones con mysqli.... El resto de preguntas con pulsar todo enter no deberíamos tener problemas.

Y por último, una vez finalizada la configuración, accederemos a través de nuestro navegador accedemos a http://127.0.0.1 que es nuestra dirección local dónde tendremos nuestro servidor Web.


Ya tendremos nuestro servidor corriendo. Personalmente, no lo inicio cuando arranque el sistema (boot), porque prefiero lanzarlo solo cuando quiera trastear. Si os interesa mantenerlo iniciado desde el arranque deberéis entonces ejecutar los siguientes comandos:
$ su -c "systemctl enable httpd mysqld"
Para detenerlos.
$ su -c "systemctl stop httpd mysqld"
Antes de finalizar con este post. Os diré que los archivos de nuestros proyectos, o de cualquier cosa que dependa de un servidor, de otro o de ambos queda alojado en el directorio /var/www/html y por último daré un par de consejillos que nos hará la vida un pelín más feliz.

Debuggeando en PHP.

Esto es muy importante, la configuración por defecto de PHP ubicada en /etc/ como php.ini no tiene un buen debug. Esto supongo que está de este modo para utilizar en producción y olvidarse de que 'malechores' se aprovechen de los errores para acceder a los sistemas y 'corromper' o revender los datos de las DBs.

Para ello deberemos editar el fichero /etc/php.ini y modificar estas dos líneas tal que se queden del siguiente modo.
display_errors = On
error_reporting = E_ALL
Una vez hecho esto, reiniciamos el servidor httpd.

¿Permisos? ¿Problem officer?

Cuando pensamos en caliente, no hay nada más pedante que los permisos en GNU/Linux o en sistemas Unix-like. Y cargamos contra ellos. Sin embargo, nos enfriaremos un poco y lo haremos lo más simple posible.

Si vamos a trabajar en una carpeta llamada por ejemplo 'proyectos' en la que dentro de ella, crearemos proyectos independientes basta con hacer lo siguiente:
$ su -c "mkdir /var/www/html/proyectos"
$ su -c "chown tu_usuario:tu_usuario /var/www/html/proyectos"
Si por el contrario vas a poner patás arriba todo el directorio general o principal dónde trabajará el servidor Apache.
$ su -c "chown tu_usuario:tu_usuario /var/www/html/"
Esto es una configuración para un servidor local, ¡no para producción por el amor de dios!

¿Editores de texto? ¡No! Mejor un IDE

¡Cuántos quebraderos de cabeza nos da ya un editor simple de textos! Para eso tenemos un grupo de programas llamados IDE. Un IDE es un Entorno integrado de desarrollo (traducido a mi bardo español) en el que te hará la vida más sencilla a la hora de trabajar con diferentes lenguajes, sean de programación, etiquetas...etc. Te colorean palabras clave, te ayudan a finalizar la sintaxis de los (),[],{}, de las palabras reservadas, textos...

Para que vean un poco a lo que me refiero, en el lado izquierdo tenemos el editor de textos Gedit, y a la derecha Geany. Es notable la diferencia ¿no?
Nota: Gedit también podría actuar como IDE, pero es para dejar un símil de lo que intento explicar.


Personalmente utilizo Geany, es bastante liviano y cumple con lo que necesito ahora mismo. Sublime Text es bastante utilizado y recomendado también. Y por lo visto hay muchos más de ellos como Eclipse, NetBeans...etc ¡Ahí lo dejo a libre elección!

Breves notas explicativas:
  • Apache. Es un servidor Web que mediante el uso del protocolo http y un puerto, el 80 por defecto nos permite interactuar y sobre todo ver los sitios Webs.
  • MariaDB. Es un fork que salió un tiempo después de la adquisión de Sun por parte de Oracle. MySQL es un sistema gestor de base de datos que permite el almacenamiento, consultas... a una base de datos que hayamos creado o a la que nos hayamos conectado previamente.
  • PHPMyAdmin. Es un conjunto de librerías, funciones... que interactúan con el servidor de Apache y MariaDB en este caso para mostrar, modificar, o alterar datos de una base de datos gráficamente mediante una interfaz Web.

Referencias
  • Google
  • PHP.net
  • Geany doc
  • ComunidadPHP
  • StackOverflow
  • Apache Web server
  • Fedora doc

2 comentarios:

  1. Excelente redacción, directo al grano. He pasado por esta instalación varias veces y lo único que podría causar problemas cuando se esta pensando en caliente es SELinux (no lo desactiven!).

    La directiva para evitar una de sus alertas más comunes en un servidor web, el error 403 es:

    # chcon -R -t httpd_sys_content_t /var/www/html/proyectos

    Muy buen artículo, saludos desde México!

    ResponderEliminar
    Respuestas
    1. Muchas gracias Juan Carlos por comentar. Sí SELinux puede da lugar a confundirnos aquí, pero es por los malditos permisos !!. En Windows es tan pro, que ni si quiera hay que setearle nada, lanzas los servicios (como los llaman allí) y listo, haces lo que quieras.

      Gracias por esa corrección de reglas también suelen salir alertando por si fuera poco, saludos desde España!

      Eliminar

Gracias por visitar mi blog y animarte a comentar. Por favor se respetuoso con sus comentarios. Cualquier error es preferible reportárlo que criticarlo por el bien de todos.



Licencia y responsabilidades

Licencia Creative Commons
netSys blog por Álvaro Castillo se encuentra bajo una Licencia Creative Commons Atribución-CompartirIgual 3.0 Unported.

El propietario de este blog no se responsabiliza de los daños que puedan generarse u ocurrir por la información expuesta aquí, en caso de ser utilizada la responsabilidad recae bajo quién la use.

Se les informa de posibles publicaciones donde queden expuestas imágenes a terceros o marcas comerciales que siempre tendrán sus fuentes, y sus atribuciones.

Por último, en caso de confusión por la temática que se trate de los artículos, tutoriales...etc dejaremos claro que este sitio Web no colabora directamente con ningún proyecto de forma oficial.