Instalar y configurar LAMP en Centos 6 PHP-FPM

Hace poquito tiempo estuve configurando un webserver desde cero así que aprovecho para armar una guia "paso a paso" de cómo instalar un Centos con LAMP (Linux,Apache,MySQL,PHP|Perl??|Python:) con algunas caracteristicas que me gusta usar. Me queda registro de la instalación y de paso comparto el how to.

/images/lamp.png

En primer lugar dejo nota de algo que no quiero olvidarme. El servidor que instale era un IBM x3250 M4. Este server tiene el firmware UEFI y me hizo renegar bastante con 2 cosas unas cuantas horas. Creo que el último server físico que había instalado fue en el 2011. Estar con poco entrenamiento seguro que me trajo estos problemas :D.

La configuración del RAID no está en el BIOS sino que hay que dejar que el equipo este a punto de arrancar e ingresar a una herramienta especifica con ctrl+h. Esto es realmente feo, porque si entras a la config del BIOS te deja seleccionar RAID y al próximo restart tenés un menú "storage" que lo único que te detecta es la lectora DVD. Ahora el problema: El cd "minimal" de Centos tiene un error con UEFI. Por lo tanto no bootea (desde CD con un pendrive fue imposible directamente). Para solucionarlo utilice el workaround del primer comentario.

"it, I just edited the grub menu item at boot, to load the kernel from /isolinux instead of /images/pxeboot."

SALVADOR!

Instalar apache, mysql y PHP

(usando el repo 'remi' que tiene versiones un poco más nuevas que el oficial.)

yum --enablerepo=remi install httpd mysql mysql-server php php-common
yum --enablerepo=remi install php-mysql php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
/usr/bin/mysqladmin -u root password 'algocomplejo'
/usr/bin/mysql_secure_installation

Marcar los 2 servicios para que levanten al inicio

chkconfig --levels 235 httpd on
chkconfig --levels 235 mysqld on

Con esto ya tenemos todo funcionando. Para mejor performance voy a cambiar el manejador de php por PHP-FPM. Detalles en http://php-fpm.org/

yum --enablerepo=remi install php-fpm
chkconfig --levels 235 php-fpm on

Editar /etc/php-fpm.d/www.conf

;listen = 127.0.0.1:9000
listen = /tmp/php5-fpm.sock
pm.status_path = /status
ping.path = /ping

Luego hay que Instalar mod_fastcgi

yum --enablerepo=remi install mod_fastcgi

Deshabilitar mod_php

mv /etc/httpd/conf.d/php.conf php.conf.disable

Para la config que sigue abajo hay que crear el directorio "/usr/lib/cgi-bin/". Editar el archivo /etc/httpd/conf.d/fastcgi.conf para que quede de la siguiente manera:

<IfModule mod_fastcgi.c>
      DirectoryIndex index.php index.html index.shtml index.cgi
      AddHandler php5-fcgi .php
      Action php5-fcgi /php5-fcgi
      Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
      FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /tmp/php5-fpm.sock -pass-header Authorization

      # For monitoring status with e.g. Munin
      <LocationMatch "/(ping|status)">
              SetHandler php5-fcgi-virt
              Action php5-fcgi-virt /php5-fcgi virtual
      </LocationMatch>
 </IfModule>

Done! Faltaría configurar los vhosts, etc pero eso es standard.

Copiar archivos a un celular con Android 4 desde linux

/images/evil-google.jpg

Hace unos días cambie mi celu por uno con Android 4. Hace unos minutos lo conecte a la compu para copiarle música y me entero de que no se puede montar como hice hasta hoy con cualquier otro android. Resulta que los muchachos de Google decidieron migrar a un protocolo MTP...

En fin después de unas buenas $&$^&@#^$&#PUTAMADREGOOGLEYLADETUHERMANA$^%^&$###$%% hice busqueda rápida en la wiki de Arch --> https://wiki.archlinux.org/index.php/Mtp y encontré jmtpfs que funcionó perfecto. (mtpfs no andaba bien)

http://research.jacquette.com/jmtpfs-exchanging-files-between-android-devices-and-linux/

30 años de GNU

Hace treinta años Richard Stallman (RMS) lanzó el proyecto GNU. Gracias por eso :D

"Considero que la regla de oro requiere que si a mi me gusta un programa debo compartirlo con otros a quienes les gusta también. No puedo, en mi sano juicio firmar un acuerdo de licencia software o de no divulgación.

De tal modo que puedo seguir usando computadoras sin violar mis principios, he decidido juntar un cuerpo suficiente de software libre de tal modo que pueda proseguir sin la necesidad de software que no sea libre."

https://static.fsf.org/nosvn/misc/GNU_30th_badge.png

#python | Requests: HTTP for Humans

/images/requests-sidebar.png

Buscando otra cosa me encontre con esta libreria que es una "abstracción" de urllib2. simple MUY SIMPLE!

Requests is an Apache2 Licensed HTTP library, written in Python, for human beings.

Python’s standard urllib2 module provides most of the HTTP capabilities you need, but the API is thoroughly broken. It was built for a different time — and a different web. It requires an enormous amount of work (even method overrides) to perform the simplest of tasks.

Things shouldn’t be this way. Not in Python.

http://docs.python-requests.org/en/latest/index.html