/etc/apache2/ports.
conf Configuracion donde se define los puertos de apache
==================== MPM(Multiprocemiento en apache)=====================
https://www.vozidea.com/diferencias-entre-apache-prefork-event-worker
Existen 3 tipos de MPM con los que trabaja apache. y estos determinan el tipo de
multiprocesamiento que
realizara apache para las peticiones, estos se tienen que habilitar en la carpeta
de modulos y solo puede
correr uno
mpm-prefork
Apache crear procesos hijos para atender las peticiones, esto sera un problema
si es que tiene
demasiada concurrencia y pocos recursos en cpu y ram, debido que para cada
peticion un hijo se ocupa
y no puede atender a otro hasta que se desocupe
Cada hijo es como si se hubiera levantado otra instancia del servidor originar,
por no decir que es una replica
Una ventaja es la disponibilidad de modulos ya que existen varios modulos no
thread-safe como php_mod
MPM Prefork es el módulo más estable pero también es el que más recursos
consume (en cuanto a
RAM y CPU) ya que mantener los diferentes procesos de Apache es “caro” en
cuanto a recursos
En el prefork(mod_php) el servico de apache se hace cargo del procesos
En el caso de worker y event, este es un proceso del sistema operativo. Apache
solo sirve como proxy
<IfModule mpm_prefork_module>
StartServers 5 con cuantos procesos hijo
empieza apache
MinSpareServers 5 numero de procesos hijos tiene
que tener para cubrir las peticiones
MaxSpareServers 10 numero maximo de procesos hijos
que puede crecer para atender las peticiones
# ServerLimit 1024
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
mpm-worker
Es una mejora de npm-prefork, ya que este trabaja con varios thread por cada
proceso hijo y esto permite
atender mas peticiones, una desventaja es que hay que ver la compatibilidad de
modulos que sean thread-safe
MPM Worker al usar threads sólo soporta módulos de Apache que sean thread-safe,
por lo que el
famoso mod_php no puede ser usado con Apache MPM Worker.
Existe una alternativa a mod_php compatible con Worker que se llama php-fpm, la
cual también
ofrece sus ventajas e inconvenientes frente a mod_php. Resumiendo mucho una
comparativa
entre mod_php y php-fpm podríamos decir:
Ventajas de mod_php: nos ofrece velocidad y facilidad de configuración.
Ventajas de php-fpm: nos ofrece un mejor uso de recursos (RAM y CPU) y
mayor eficiencia.
Inconvenientes de mod_php: consume más recursos.
Inconvenientes de php-fpm: configuración más complicada.
mpm-event
MPM Event hasta hace poco era considerado como experimental pero hoy en día ya
es una
opción estable. Es una mejora de MPM Worker y soluciona un problema de
optimización que
mostraba MPM Worker con la opción Keep Alive de Apache. No quiero entrar en una
explicación
detallada sobre el problema de optimización y confundiros con datos técnicos,
por lo que seré
breve y diré que MPM Event mejora el rendimiento de Apache durante las
peticiones
con Keep Alive, que son muy comunes.
Como MPM Event está basado en MPM Worker, tiene las mismas ventajas e
inconvenientes que este,
por lo que obviamente MPM Event no es compatible con mod_php, habrá que usar
php-fpm.
De igual manera para que podamos usar php con mpm_event, tenemos que optar por
php-fpm
fast-cgi
==================== Modulos ==================
Existen 2 tipo de modulos, los static y shared
static.- Modulo que se carga de forma binaria, es decir que apache lo carga
de forma predeterminada
Impidiendo que nosotros podamos ya sea habilitar o inhabilitar
shared.- Son modulos que nosotros podemos cargar habilitando o
deshabilitandolos, esto se hace para
Que la carga de modulos no sea monolitico
los [NAME_MODULO] son los nombres de los archivos de las carpetas mods-* y
terminan en .conf, .load
a2dismod [NAME_MODULO] comando para deshabilitar un modulo de apache
a2enmod [NAME_MODULO] comando que habilita un modulo de apache
CGI.- Modulo que nos permite ejecutar programas de otros lenguajes
mods-available/mime.conf Modulo qu se encarga de manejar los content-
types de las peticiones al servidor
mods-available/deflate.conf Modulo que nos ayuda a compresion de archivos
que servira el
servidor, y luego el cliente lo descomprimira.
Ayuda a ahorrar el ancho de banda
y la velocidad de respuesta
====================sites ==================
a2dissite [NAME_SITE] Comando que deshabilita una configuracion de las
capetas site-*
a2ensite [NAME_SITE]
sites-enabled/000-default.conf Virtualhost por defecto
===================== conf =================
a2disconf [NAME_CONF] Comando que deshabilita una configuracion de las
capetas conf-*
a2enconf [NAME_CONF]
conf-available/charset.conf Encodificacion que soportara apache(UFT-8,
ACSI, iso...)
conf-available/security.conf Seguridad de apache
============= Directivas ===================
Virtualhost
Directiva donde configuramos un sitio web, estas son algunas opciones que nos
ofrece
ServerName: Es el nombre del host o el puerto que el servidor usa para
identificarse a si mismo.
ServerName puede aceptar también número de puerto mientras que
ServerAlias no puede.
ServerName ow‐fastcgi.com
ServerAlias: Son nombres alternativos para un host usados para coincidir con
requests para hosts
virtuales. ServerAlias puede aceptar comodines (por ejemplo:
*.miweb.com) mientras que ServerName no puede.
ServerAlias www.ow‐fastcgi.com
DocumentRoot: Indiicamos desde que path vamos a usar como directorio para est
Virtualhost
DocumentRoot /var/www/mysite/public
Directory(Directiva).............
FilesMatch(Directiva).............
ErrorLog: Indicamos donde se va a guardar los logs
ErrorLog ${APACHE_LOG_DIR}/example.com‐error.log
LogLevel: Indicamos el nivek de los logs: debug, info, notice, warn, error,
crit
En produccion no hay que usar debug ya que es peligroso y ademas
afecta al rendimiento
LogLevel debug
CustomLog: investigar...
CustomLog ${APACHE_LOG_DIR}/ow‐fastcgi.com‐access.log combined
Directory
Directiva donde configuramos los permisos que tendra cierto directorio, recibe
como parametro el path
del directorio
<Directory /var/www/html >
...
...
</Directory>
Options
Existen 2 tipo de operados que sirven ya sea para asignar o quitar
permisos, estos son:
- Operador qu quita permisos
+ Operador qu agreaga permisos
Indexes: Opcion que nos permite mostrar o no los archivos que estan en
este directorio, por seguridad
se quitan estos permisos
Options -Indexes
FollowSymLinks: Opcion que nos permite decidir que si existe un enlace
simbolico, si podemos seguirlo o no
Se recomiendo deshabilitarlo, ya que puede conducir a
otros directorios
MultiViews: Options MultiViews permite mostrar una página distinta en
función del idioma
del navegador.
- Si utilizamos esta opción, al nombre de los ficheros hay
que añadir el código
del idioma. Por ejemplo index.html.es, index.html.en o
index.html.de si se trata
de una página en castellano, inglés o alemán.
- En /etc/mods-enabled/negotitation.conf se especifica la
prioridad del idioma
en el caso de que no se encuentre una página adecuada para
el idioma suministrado
por el navegador.
Options +MultiViews
DirectoryIndex: indicamos cual va ser el archivo index que debe cargar en este
directorio
DirectoryIndex inicio.html
AllowOverride: averiguar
AllowOverride All
Require: averiguar
Require All granted
FilesMatch
versiones 2.4.10+ se puede usar socket unix(buscar el socket en el
directorio /var/run/...)
SetHandler "proxy:unix:/var/run/php5‐fpm.sock|fcgi://localhost/"
Caso contrario para versiones mas antiguas usar un socket tcp
SetHandler "proxy:fcgi://127.0.0.1:9000"
=============================== apache-utils===================================
Utilidades de apache
=============== ab =======
comando que nos permite simular peticiones a nuestro servidor
ab [OPCIONTS] URL:PORT/
[OPTIONS]
-c [N] numero de peticions concurrentes(cuantas maquinas o clientes)
-n [N] Total de peticiones que se realizaran entre todas las concurrencias
Ejemplo
ab -c 1000 -n 10000 http://192.168.1.16:80/contenido