anotaciones que no quiero recordar, ni olvidar

me

Apache

Bloquar IP de un país determinado vía .htaccess

Ratio: 0 / 5

Inicio inactivoInicio inactivoInicio inactivoInicio inactivoInicio inactivo

Para permitir determinada IP o rango lo hacemos así:

Mostrar/Ocultar código bash

Ver código
<Limit GET POST>
order deny,allow
allow from 1.0.0.0/8
deny from all
</Limit>

Para denegar determinada IP o rango:

Mostrar/Ocultar código bash

Ver código
<Limit GET POST>
order allow,deny
deny from 1.0.0.0/8
allow from all
</Limit>


Actualizo:
Desde esta web obtenemos los rangos de IPs de los países seleccioandos:

https://www.countryipblocks.net/country_selection.php

wget Error 403 Forbidden en tareas cron

Ratio: 5 / 5

Iniciar activoIniciar activoIniciar activoIniciar activoIniciar activo

Si hemos introducido en el crontab una tarea cron que llama un script php y la llamada wget nos devuelve un "ERROR 403: Forbidden" esto puede ser debido a que el script espera poder crear una sessión identificando algunos aspectos del solicitante de la página antes de devolverle el HTTP OK 200.
Para corregirlo basta sólo con añadir un navegador, o sea identificarlo en el wget, en nuestro caso iceweasel la versión libre de firefox en Debian.

Añadiríamos:

-U iceweasel

Quedando al final así:

wget -U iceweasel http://paginaweb.com/script.php >/dev/null 2>&1

PD: Como se puede ver devolvemos el html resultante a null para no acumular residuos en nuestor servidor.

Cómo actualizar la cache APC de php

Ratio: 0 / 5

Inicio inactivoInicio inactivoInicio inactivoInicio inactivoInicio inactivo

Cómo ya vímos anteriormente, la isntalación de la cache APC acelara notablemente nuestros serviores Apache.
Como hasta próximas versiones de PHP no vendrá integrada, no podemos actualizarla por apt, continuamos usando perl.

Actualizamos canales:
# pear update-channels

Si queremos vemos que paquetes hay pendientes y que versiones corresponden:
# pear list-upgrades

Y ahora en lugar de usar el comando "pear upgrade APC" usaremos:
# pecl upgrade APC

Aceptamos las configuraciones por defecto, reiniciamos nuestro Apache, y a volar!

Como instalar la cache APC en Apache para que tu servidor PHP vuele!

Ratio: 5 / 5

Iniciar activoIniciar activoIniciar activoIniciar activoIniciar activo

La cache APC es como dican sus siglas en inglés: Alternative PHP Cache. En pocas palabras es un acelerador de PHP. La idea es muy simple pero muy potente, se basa en guardar en memoria RAM los scripts PHP que requieren ser leidos de disco cada poco tiempo.
A partir de PHP6 vendrá pro defecto en Apache, pero actualmente requiere su instalación y la de otros paquetes necesarios, esots son los dos pasos a efectuar en consola:

# apt-get install php5-dev php-pear apache2-threaded-dev

# pecl install apc

Luego en el php.ini añadimos la carga y los valores que consideremos oportunos:

extension=apc.so
[APC]
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64
apc.max_file_size = 10M
apc.stat=1

Sobre el tema de apc.shm_size... 32, 64, 128, 256, depende de la cantidad de scripts php que tengas y de la carga de tu servidor, ten en cuenta dos cosas, es reserva en RAM permamnente, los llenes o no, y que sólo se cachea el PHP, y los scripts PHP son ficheros de texto que ocupan Kb.

Y por último y evidentemente reiniciamos apache:

# apache2ctl restart

Ya puedes empezar a volar!
Puedes encontrar más info en este enlace: http://www.debian-administration.org/articles/574

Si quieres monitorer o analizar que hace APC, copia el fichero ubicado en /usr/share/php/apc.php a un directorio accesible desde tu web, por ejemplo un raiz y entra en él http://midominio/apc.php. Verás cosas como esta:

Optimizar Apache

Ratio: 0 / 5

Inicio inactivoInicio inactivoInicio inactivoInicio inactivoInicio inactivo

Vamos a ver en un caso especifico que configuraciones de apache nos aportan usabilidad y aprovechamiento de recursos. En otras palabras vamos a tunear apache.

Lo que vamos ha hacer es muy sencillo, y es que en realidad una vez más las configuraciones predeterminadas que llevan los servidores no han cambiado desde hace años y lo que si ha cambiado a sido tanto el hardware como las aplicaciones web.

Como ya debes saber la configuración de Apache afecta a php y demás servidores que corren en él, pero para optimizar mysql pasate por este otro artículo, es también importante: Optimizar MySQL

Insisto una vez más en que según el uso que se le vaya a dar al servidor debemos configurarlo de una manera o de otra.
Nosotros para este caso lo tenemos como podréis ver más abajo.
Destacar algunas cosas, como que si nuestro servidor estuviese destinado al envío de ficheros muy pesados, deberíamos aumentar el timeout. O por ejemplo nuestro KeepAliveTimeout tiene un valor de 5 segundos por que consideramos que es suficiente el tiempo entre conexiones persistentes, así no se ha de esperar el triple que es lo habitual.
En relación a mpm_prefork_module y mpm_worker_module hemos aumentando los valores, haciendo así que apache tenga más procesos en el procesador, tanto mínimos como máximos. No nos importa que consuma más memoria, nos interesa que apache pueda usar más procesos en los 4 cores que tiene el procesador de ésta máquina.

Llegamos al momento de las gráficas, dos imágenes con dos gráficas cada una, una de CPU y otra de RAM. Las dos imágenes son de la misma franja horaria, de casi todo el día laboral, de 8 a 21 horas. La de la izquierda es el día antes de optimizar y a la derecha optimizado.
En AZUL la carga total del sistema.
Como puede verse inicialmente se consumía menos memoria: sobre de 800 MB antes y 1100 MB después, pero los picos del procesador eran antes más altos, tanto los picos altos como los picos medios.


ANTES DE OPTIMIZAR

OPTIMIZADO

Y ahora una vista general de la semana.
Como podemos en la primera línea roja vertical que he añadido a la gráfica, conforme se va llenando la RAM se va requiriendo menos procesador, observemos el pico de caída de la CPU tras aumentar la RAM. En la segunda línea roja vertical es a la inversa.

Ahí va nuestro fichero de configuración, en este caso dejo la explicación que se encuentra antes de cada parámetro para que pueda entenderse mejor y lo acoples a tus necesidades:

# Timeout: The number of seconds before receives and sends time out.
Timeout 300

# KeepAlive: Whether or not to allow persistent connections (more than one request per connection). Set to "Off" to deactivate.
KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests to allow during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
MaxKeepAliveRequests 10000

# KeepAliveTimeout: Number of seconds to wait for the next request from the same client on the same connection.
KeepAliveTimeout 5

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers        5
MinSpareServers    5
MaxSpareServers    30
MaxClients        250
MaxRequestsPerChild   1000


# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
#
#StartServers        5
#MaxClients        250
#MinSpareThreads    5
#MaxSpareThreads    30
#ThreadsPerChild    25
#MaxRequestsPerChild   1000
#