sábado, octubre 25, 2008

Nuevo blog

Estoy traspasando todos los contenidos y añadiendo nuevos al nuevo blog a Toma2tazas.

Espero que os guste.

miércoles, abril 09, 2008

Hacer que Apache escuche en otro puerto, además del puerto 80

Puede ser útil hacer que nuestra web sea accesible por otro puerto que no sea el 80 estándar (y así evitar problemas con proxies/cachés y demás, en peticiones en las que nos interesa obtener siempre una respuesta del servidor final).

Vamos a suponer que queremos poner como puerto adicional el 666

Método 1) Configuración de Apache

Buscamos "Listen" en /etc/httpd/conf/httpd.conf
y hacemos que quede así:

Listen 80
Listen 666

Y luego en la configuración del VirtualHost en particular:

<VirtualHost 207.x.x.x:80>

Lo cambiaremos, añadiendo la misma IP pero con el otro puerto:
<VirtualHost 207.x.x.x:80 207.x.x.x:666>

Método 2) Firewalling

Como alternativa, podemos forzar el tema desde iptables en unix:

$IPT -t nat -A PREROUTING -p tcp --dport 666 -i eth0 -j REDIRECT --to-port 80
(donde $IPT el comando iptables correspondiente)

Xcache y Suhosin para PHP

Ya tengo todos los servidores que controlo usando Xcache y Suhosin para PHP.

Xcache es una caché como Turck MMCache, pero más eficiente (y esta última ya había quedado obsoleta por abandono del programador). Sólo echo de menos la escritura de variables de sesión en memoria, pero lo cierto es que va como un tiro. El autor participa también en el proyecto lighttpd (un webserver ligero-eficiente).
http://xcache.lighttpd.net/

En cuanto a Suhosin, añade alguna capa más de seguridad al núcleo de PHP, aunque es mucho más recomendado en servidores compartidos, que no es mi caso, donde no te puedes fiar del código que ponga la gente por ahí. El autor es un descontento con las políticas de seguridad de los PHP developers.
http://www.hardened-php.net/

De modo que ahora este es el "output" de mis instalaciones de PHP ;)

PHP ****** Copyright (c) 1997-2008 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo
with Zend Extension Manager v1.2.0, Copyright (c) 2003-2007, by Zend Technologies
with Suhosin v0.9.20, Copyright (c) 2002-2006, by Hardened-PHP Project
with Zend Optimizer v3.2.8, Copyright (c) 1998-2007, by Zend Technologies

viernes, febrero 01, 2008

Permitir conexiones remotas a MySQL fácilmente

mysql> GRANT ALL PRIVILEGES ON *.* TO USERNAME@IP IDENTIFIED BY "PASSWORD";
mysql> FLUSH PRIVILEGES;

Donde USERNAME, pues eso.
Donde IP puede ser '%', para permitir la conexión "desde cualquier parte".
Donde PASSWORD es la contraseña tal cual.

jueves, enero 19, 2006

Borrar todos los archivos *.xxx de toda una rama de directorios

Esta línea para Unix buscará y pedirá confirmación para borrar todos los archivos *.xxx que encuentre a partir del path indicado, buscando en carpetas y subcarpetas:

find /some/path -name \*.xxx -ok rm {} \;

miércoles, enero 18, 2006

Ganando un poco de rendimiento en los accesos a disco

En linux, por defecto con el filesystem ext3 se escribirá en disco información de cuándo se accedió por última vez a un archivo. Podemos desactivar esto para ganar eficiencia ahorrándonos escrituras cuando sólo queremos leer.

A?adiremos el atributo 'noatime' a las particiones que queramos en /etc/fstab

# nano /etc/fstab

LABEL=/ / ext3 defaults,usrquota,grpquota,noatime 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
LABEL=/home /home ext3 defaults,usrquota,grpquota,noatime 1 2
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
LABEL=/tmp /tmp ext3 defaults,noatime 1 2
LABEL=/usr /usr ext3 defaults,noatime 1 2
LABEL=/var /var ext3 defaults,usrquota,grpquota,noatime 1 2
LABEL=SWAP-sdb2 swap swap defaults 0 0

No hace falta reiniciar para que los cambios surtan efecto. Si hemos a?adido 'noatime' en / /home /var /usr y /tmp, pondremos:

# mount -oremount /
# mount -oremount /home
# mount -oremount /var
# mount -oremount /usr
# mount -oremount /tmp

Y para comprobar que está todo ok vemos el estado actual de los mount con este comando:

# cat /proc/mounts

martes, enero 17, 2006

PHP sobre Linux y AMD Opteron64

Andaba yo montando un servidor web sobre un AMD Opteron64...

Para ver que todo estaba OK con respecto al PHP, pruebo a sacar la versión de PHP y escupe errores:

# php -v
PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/ldap.so' - /usr/lib/php4/ldap.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/mysql.so' - /usr/lib/php4/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

Parece que no encuentra esas librerías, así que intento ver dónde están realmete.

# locate ldap.so
warning: locate: could not open database: /var/lib/slocate/slocate.db: No such file or directory
warning: You need to run the 'updatedb' command (as root) to create the database.
Please have a look at /etc/updatedb.conf to enable the daily cron job.

Hay hacer primero un 'updatedb' para poder usar 'locate'

# updatedb

Y repetimos...

# locate ldap.so
/usr/lib64/libnss_ldap.so
/usr/lib64/autofs/lookup_ldap.so
/usr/lib64/libuser/libuser_ldap.so
*** /usr/lib64/php4/ldap.so ***
/lib64/security/pam_ldap.so
/lib64/libnss_ldap.so.2

Vaya por dios, hemos instalado la versión 64 bits del sistema operativo, para aprovechar el Opteron, así que es /usr/lib64/php4 y no /usr/lib/php4

Actualizamos /etc/php.ini

# nano /etc/php.ini

Y cambiamos:

; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/lib/php4"

por:

extension_dir = "/usr/lib64/php4"

Y ahora ya funciona bien si hacemos:

# php -v