Estoy traspasando todos los contenidos y añadiendo nuevos al nuevo blog a Toma2tazas.
Espero que os guste.
sábado, octubre 25, 2008
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)
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
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.
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 {} \;
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
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
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
Suscribirse a:
Entradas (Atom)