Configurar Ubuntu 13.10 para desarrollo PHP

Decidí pasarme a Ubuntu 13.10 para desarrollo PHP luego de algunas batallas e inconvenientes con Windows, principalmente por no tener tanta flexibilidad, al ser un entorno no nativo para las aplicaciones que corren normalmente en un servidor Linux. Y también porque el portatil que utilizo para estos menesteres es un Dell que tenía Windows 8 instaladoy dije tenía, porque llegó el día en que dije basta! Tengo que deshacerme de esta #$$#¬..piiiipiii(censurado). Ya se que existe Vagrant, pero prefiero mover mi entorno desarrollo a Linux y seguir experimentando con Vagrant.

En fin, mi portatil va mucho mejor con el cambio, y no sé porque, pero le noto cierto brilloy hasta me gusta más. También es cierto, que en el mundo de Linux no existen Photoshop ni Illustrator, pero para el nivel al que los utilizo, con Gimp e Inkscape me apaño, sin mencionar que no tengo que esperar mil años a que cargen, comparando con Photoshop e Illustrator en Windows 8, sólo hasta aquí la comparación.Luego de esta breve introducción, manos a la obra.

INSTALAR Apache, Mysql y PHP

Hay muchas formas de hacerlo, pero la más fácil y rápida es usar tasksel:

Tasksel - Ubuntu 13.10

Nota: Cuando utilices tasksel, asegúrate de no desmarcar ninguna de las opciones que ya esten previamente marcadas, sino se desinstalarán, incluso puedes desinstalarte el sistema operativo. Más info sobre tasksel.

O sino, para ir directos al asunto e instalar Apache, Mysql y PHP:

Pues, hasta aquí ya debemos tener casi todo listo, si visitamos http://localhost , podriamos ver la página de bienvenida.

locahost en Apache2 - Ubuntu 13.10Si no aparece nada, tenemos que reiniciar el servidor apache:

EXTRAS

Añadiremos algunas utilidades, entre ellas: phpmyadmin, Xdebug, algunos módulos para Apache como el mod_rewrite, PEAR y COMPOSER

INSTALAR PHPMYADMIN

Para instalar phpmyadmin en Ubuntu 13.10:

Una vez instalado, podemos ir a http://localhost/phpmyadmin y listo:

PHPMyAdmin - Login

INSTALAR XDEBUG

Cómo estamos en Ubuntu:

Configurar Xdebug

Ejecutar el siguiente comando desde el terminal:

Y agregar:

Reiniciar Apache para que se cargen los cambios en el archivo php.ini:

En mi caso, el parámetro idekey es porque utilizo el IDE PHPStorm.

INSTALAR PEAR

Para instalar pear, ejecutar desde el terminal:

Con este comando tendremos PEAR instalado y podemos agregar paquetes como PHPUnit.

INSTALAR COMPOSER

Composer es otro gestor de paquetes/librerias para PHP que facilita la administración de dependencia entre librerías. Para instalar composer, necesitamos instalar CURL:

Ahora instalamos las librerías PHP para cURL:

Luego, procemos a instalar composer:

Movemos composer.phar a /usr/local/bin

Comprobamos que funciona:

Composer - Ubuntu 13.10

EDITAR PHP.INI

Aumentar tamaño máximo de archivos al cargar

Si vas utilizar a utilizar WordPress o algo que implique subir archivos, tenemos que modificar el archivo php.ini. Para hacerlo ejecutamos el siguiente comando:

Y buscamos por las siguientes líneas y modificamos sus valores:

No cierres el archivo aún. 

Agregar date.timezone

Si vamos a utilizar herramientas de depuración como XDEBUG, tenemos que setear este parámetro también:

Todo depende en que lugar del mundo te encuentres, la lista de las diferentes zonas se encuentra aquí.

Cuando utilizamos PHP desde el terminal, el php.ini que se carga se encuentra en /etc/php5/cli/php.ini , agrega estas modificaciones a este archivo también.

ACTIVAR MÓDULOS APACHE2

Para activar módulos Apache2 utilizamos el comando a2enmod que significa a2apache2, en enable, mod module por si alguien se pregunta que significa estoArmados de este conocimiento, procedemos a activar activar el mod_rewrite:

¿Dónde estan los módulos disponibles y los módulos activados de Apache2? En el directorio /etc/apache2 encontrarás los directorios mods-available y mods-enabled.

CONFIGURACIÓN SERVIDOR APACHE2

Hasta el momento ya tenemos bastante terreno ganado, pero queda un tema por ver, y es el tema de los permisos y directorios. Veamos, por defecto el servidor Apache2 carga los archivos del directorio /var/www, y esto trae consigo algunos inconvenientes. El directorio normalmente pertenece al root, y lo recomendable es cambiar de propietario al directorio /var/www y todo su contenido, al usuario y grupo www-data, que es el que utiliza Apache2. Pero esto tiene un inconveniente a la hora de editar archivos y hacer cambios en nuestro directorio web, los permisosen ningún momento puedes hacer cambios ni modificiones ya que no eres el propietario del directorio,  y como normalmente suele suceder, el grupo sólo tiene permiso de lectura, no de escritura.

¿Entonces qué hacer? Después de googlear y ver todo el drama, tiradas de pelos, gritos de auxilioetc..etc, por el tema de los permisos, pude ver la luz. La solución: habilitar el módulo userdir de Apache2 y cambiar el grupo y usuario de Apache por el nuestro.

El módulo userdir de Apache2

Al instalar el servidor web Apache2 en Ubuntu, se instalan varios módulos, pero permanecen silenciosamente inactivos, hasta que son llamados a la acción con el comando a2enmod (repeat after mea2 deen demod de).  Este módulo nos permite utilizar una carpeta pública dentro de nuestro home, y nos liberamos de todo el drama de los permisos. Sí, así es, podremos editar archivos, carpetas todo localmente, sin necesidad de rompernos la cabeza con los permisos y utilizar los permisos de ley para todo servidor Web, directorios -> 0755 y archivos -> 0644, pero esta vez el propietario y grupo será tu usuario. Estamos hablando de desarrollo local, esto no es lo recomendable para un entorno de produción.

Para empezar, habilitamos el módulo:

Y luego tenemos que configar el módulo userdir editando el archivo userdir.conf de la siguiente manera:

El contenido de este archivo debe quedar así:

Aún no reinicies el servidor apache2, tranquilopor ahora con esta configuración hemos conseguido que apache2 carge los archivos desde /home/<usuario>/public_html, y se puede ver desde el navedor con la ruta http://localhost/~usuario/. Por defecto, apache2 no servirá archivos PHP desde esta ruta, por razones seguridad (comprensible). Entonces, debemos habilitarlo, desde un terminal ejecutamos:

Las líneas finales de este archivo, que inician con <IfModule mod_userdir.c> y terminan en </IfModule>, todo este bloque es el que impide la ejecución de archivos PHP, así que debemos deshabilitarlo añadiendo # :

Esto es un fragmento del archivo, la parte final debe quedar así como aquí arriba.

Modificar ENVARS de Apache2

En este paso modificamos las variables de entorno que hacen que Apache se ejecute al iniciar bajo un usuario y grupo distinto. Abrimos el archivo de configuración de apache:

Y buscamos por las siguientes y reemplazamos www-data por nuestro usuario:

Finalmente, ya podemos reiniciar el servidor apache:

Ahora sólo nos queda crear el directorio web en nuestro home. Para esto, primero nos aseguramos que estamos en nuestro directorio con el comando pwd:

pwd

Y creamos nuestro directorio public_html:

Victor..te olvidaste de utilizar sudo. Para nada, pequeño saltamonte, ahora que estamos en un directorio en el que tenemos el controlya no necesitamos invocar sudo. Ahora podemos hacer una pequeña prueba (espero que esa terminal siga abierta):

Y si apuntas el navegador hacia http://localhost/~usuario/info.php , en este caso, ~usuario = ~victor , y veremos:

Página phpinfo

Y eso es casi todosi por ejemplo trabajas con WordPress y quieres tener más de una instalación, o estas trasteando con algún framework, etc. Para tenerlo todo mejor ordenado en carpetas y bajo su propio dominio, tenemos que echar mano de lo que se conoce como VirtualHost.

Configuración de VirtualHosts con Apache2

Configurar VirtualHosts con Apache2 y en Ubuntu es super fácil, comparado con todo lo anterior. El proceso es el siguiente:

  1. Agregar los dominios locales al archivos hosts.
  2. Agregar la configuración para cada dominio virtual en /etc/apache2/sites-available
  3. Hábiliar los dominios virtuales
  4. Sit back, relax and code!

Utilizo el dominio .local para todos mis dominios virtuales, puedes usar el mismo o utilizar el que gustes, para los ejemplos usaré .local.

Agregar los dominios locales al archivo hosts

Como siempre, utilizamos nuestro aliado incondicional, terminal:

Digamos que quiero tener dos dominios virtuales con WordPress, y uno sólo para PHP:

Configuración para cada VirtualHost

La estructura que utilizaré para las carpetas que servirán para los dominios virtuales es la siguiente:

Donde, htdocs será el directorio para nuestros archivos web, y logs para el log de errores específico al dominio

Por motivos de espacio, sólo pondré la configuración de uno sólo, wpsitio1.local, los otros se configuran de forma similar:

Y agregamos lo siguiente como contenido (hacer los cambios correspondientes, por ejemplo, el usuario):

Hacer lo mismo para los otros sitios, haciendo los reemplazos necesarios según el caso.

Habilitar el dominio virtual

Y listo, ahora puedes instalar WordPresso lo que haga falta.

TUNNING FINAL

Sí, aún queda un pequeño tunning final, y es el de los permisos.si pensaste que ya no teniamos más que ver con el tema, en parte si y en parte no. Lo normal en un servidor apache, es que los permisos de los directorios sean 755 para directorios y 644  para archivos.

Para cambiar permisos de los directorios a 755 y de forma recursiva:

Para cambiar los permisos de los archivos a 644 y de forma recursiva:

Y con eso hemos por fin terminado la configuración de nuestro entorno de desarrollo PHP con Ubuntu 13.10. Happy coding!

Hola, soy Víctor Saldarriaga, Programador Web en continuio entrenamiento. Este es mi rincón digital sobre programación PHP y otras salsas. Más info en el apartado sobre mí o si tienes algún proyecto del que quieras hablar o simplemente decir hola :) puedes hacerlo a través del formulario de contacto.

Servicios AutoSEO

IMPULSA tu sitio web al TOP de Google, Yahoo y Bing. Seleccione uno de nuestros servicios y ¡disparar tu ranking!.

Ofrecemos servicios profesionales de SEO que ayudan a los sitios web a aumentar drásticamente su puntaje de búsqueda orgánica para competir por los rankings más altos en los buscadores. incluso cuando se trata de palabras clave altamente competitivas.

Más de nuestro blog

See all posts
 

Realice un comentario