Página principal » cómo » Ajustar un servidor web virtual dedicado

    Ajustar un servidor web virtual dedicado

    Cuando obtiene un servidor virtual dedicado para ejecutar su sitio web, es muy probable que esté configurado para todos, y no se personalice para maximizar el rendimiento al ejecutar un sitio web..

    Contenido

    [esconder]

    • 1. Información general
    • 2 Configuración de Linux
      • 2.1 Desactivar DNS
      • 2.2 Desactivar SpamAssassain
      • 2.3 deshabilitar xinetd
      • 2.4 Limitar el uso de la memoria de Plesk
      • 2.5 Desactivar o desactivar Plesk (opcional)
    • 3 Configuración MySQL
      • 3.1 Habilitar caché de consulta
      • 3.2 Desactivar TCP / IP
    • 4 Configuración de Apache
    • 5 Configuración de PHP
      • 5.1 Eliminar módulos PHP innecesarios
      • 5.2 PHP Opcode Cache
    • 6 copias de seguridad
      • 6.1 Crear un script de copia de seguridad automatizado
      • 6.2 Sincronización de copias de seguridad fuera del sitio con Rsync
    • 7 seguridad
      • 7.1 Inhabilitar el inicio de sesión de root sobre SSH
      • 7.2 Deshabilitar la versión 1 de SSH
      • 7.3 Reiniciar el servidor SSH
      • 7.4 Comprobar si hay puertos abiertos
      • 7.5 Configurar un Firewall
    • 8 Ver También
    • 9 referencias

    Visión general

    Hay una serie de áreas problemáticas en las que queremos maximizar el rendimiento:

    • Configuración de linux
      Por lo general, hay servicios en ejecución que no tienen que ser, desperdiciando memoria que se podría usar para más conexiones.
    • Configuración de MySQL
      A menudo, la configuración predeterminada se basa en un servidor pequeño, podemos agregar algunos cambios clave para aumentar el rendimiento de manera considerable.
    • Configuracion apache
      Por defecto, la mayoría de los proveedores de alojamiento instalan Apache con casi todos los módulos instalados. No hay razón para cargar módulos si nunca los vas a usar.
    • Configuración de PHP
      La configuración predeterminada de PHP está hinchada de manera similar, generalmente hay una tonelada de módulos adicionales innecesarios instalados.
    • PHP Opcode Cache
      En lugar de permitir que PHP vuelva a compilar los scripts cada vez, un caché de opcode almacenará en caché los scripts compilados en la memoria para obtener un gran aumento de rendimiento.
    • Copias de seguridad
      Probablemente debería configurar algunas copias de seguridad automáticas, ya que su proveedor de alojamiento no lo hará por usted..
    • Seguridad
      Claro, Linux es lo suficientemente seguro de forma predeterminada, pero por lo general hay algunos problemas de seguridad evidentes que puedes solucionar con algunas configuraciones rápidas..

    Configuración de Linux

    Hay una serie de ajustes que puedes hacer, que variarán ligeramente según el servidor que estés utilizando. Estos ajustes son para un servidor que ejecuta CentOS, pero deberían funcionar para la mayoría de los servidores DV.

    Deshabilitar DNS

    Si su proveedor de hosting maneja el DNS para su dominio (es probable), entonces puede desactivar el servicio DNS para que no se ejecute.

    deshabilite dns /etc/init.d/named stop chmod 644 /etc/init.d/named

    El comando chmod elimina el permiso de ejecución de la secuencia de comandos, impidiendo que se ejecute en el inicio.

    Desactivar SpamAssassain

    Si no está utilizando cuentas de correo electrónico en su servidor, no debería molestarse en ejecutar herramientas antispam. (También deberías revisar Google Apps, mucho mejor solución de correo electrónico)

    /etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin

    Deshabilitar xinetd

    El proceso xinetd alberga una serie de otros procesos, ninguno de los cuales es útil para un servidor web típico.

    /etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd

    Limitar el uso de la memoria de Plesk

    Si usa el panel plesk, puede forzarlo a usar menos memoria agregando un archivo de opciones.

    vi /usr/local/psa/admin/conf/httpsd.custom.include

    Agregue las siguientes líneas al archivo:

    MinSpareServers 1 MaxSpareServers 1 StartServers 1 MaxClients 5

    Tenga en cuenta que se sabe que esta opción funciona en servidores MediaTemple DV, pero no se ha verificado en ningún otro. (Ver referencias)

    Desactivar o desactivar Plesk (opcional)

    Si solo usa Plesk una vez al año, hay muy pocas razones para dejarlo funcionando. Tenga en cuenta que este paso es completamente opcional, y un poco más avanzado..

    Ejecute el siguiente comando para desactivar plesk:

    /etc/init.d/psa stop

    Puede deshabilitarlo para que no se ejecute al inicio ejecutando el siguiente comando:

    chmod 644 /etc/init.d/psa

    Tenga en cuenta que si lo deshabilita, no podrá iniciarlo manualmente sin volver a cambiar los permisos de archivo (chmod u + x).

    Configuración MySQL

    Habilitar caché de consulta

    Abra su archivo /etc/my.cnf y agregue las siguientes líneas en su sección [mysqld] de la siguiente manera:

    [mysqld] query-cache-type = 1 query-cache-size = 8M

    Puede agregar más memoria a la caché de consultas si lo desea, pero no use demasiado.

    Desactivar TCP / IP

    Un número sorprendente de hosts permite el acceso a MySQL en TCP / IP de forma predeterminada, lo que no tiene sentido para un sitio web. Puede averiguar si mysql está escuchando en TCP / IP ejecutando el siguiente comando:

    netstat -an | grep 3306

    Para deshabilitar, agregue la siguiente línea a su archivo /etc/my.cnf:

    saltar redes

    Configuración de Apache

    Abra su archivo httpd.conf, que a menudo se encuentra en /etc/httpd/conf/httpd.conf

    Encuentra la línea que se ve así:

    Tiempo de espera 120

    Y cambiarlo a esto:

    Tiempo de espera 20

    Ahora encuentre la sección que incluye estas líneas y ajústese a algo similar:

    StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000

    Configuración de PHP

    Una de las cosas que debe tener en cuenta al ajustar un servidor en la plataforma PHP es que cada subproceso de Apache va a cargar PHP en una ubicación separada en la memoria. Esto significa que si un módulo no utilizado agrega 256k de memoria a PHP, en 40 subprocesos de apache está perdiendo 10 MB de memoria.

    Eliminar módulos PHP innecesarios

    Deberá ubicar su archivo php.ini, que generalmente se encuentra en /etc/php.ini (tenga en cuenta que en algunas distribuciones, habrá un directorio /etc/php.d/ con varios archivos .ini, uno para cada modulo.

    Comente cualquier línea de módulo de carga con estos módulos:

    • odbc
    • snmp
    • pdo
    • odbc pdo
    • mysqli
    • cargador de ioncubos
    • json
    • imap
    • ldap
    • ncurses

    Todo: Añadir más información aquí..

    PHP Opcode Cache

    Hay una serie de cachés de opcode que puede usar, incluyendo APC, eAccelerator y Xcache, el último es mi preferencia personal debido a la estabilidad.

    Descargue xcache y extráigalo en un directorio, y luego ejecute los siguientes comandos desde el directorio de origen de xcache:

    phpize ./configure --enable-xcache make make install

    Abra su archivo php.ini y agregue una nueva sección para xcache. Tendrá que ajustar las rutas si sus módulos php se cargan desde otro lugar.

    vi /etc/php.ini

    Agregue la siguiente sección al archivo:

    [xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername" xcache.admin.pass = "putanmd5hashhere" [xcache]; Cambie xcache.size para ajustar el tamaño de la caché del código de operación xcache.size = 16M xcache.shm_scheme = "mmap" xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; Cambie xcache.var_size para ajustar el tamaño de la caché variable xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.varcp. En xcache.mmap_path = "/ tmp / xcache" xcache.coredump_directory = "" xcache.cacher = On xcache.stat = On xcache.optimizer = Off

    Todo: Necesitamos expandir esto un poco y enlazar a xcache en las referencias..

    Copias de seguridad

    Hay muy poco más importante que tener copias de seguridad automatizadas de su sitio web. Es posible que pueda obtener copias de seguridad de instantáneas de su proveedor de alojamiento, que también son muy útiles, pero prefiero tener copias de seguridad automatizadas también.

    Crear secuencia de comandos de copia de seguridad automatizada

    Generalmente comienzo creando un directorio / backups, con un directorio / backups / files debajo. Puedes ajustar estos caminos si quieres.

    mkdir -p / copias de seguridad / archivos

    Ahora cree un script backup.sh dentro del directorio de copias de seguridad:

    vi /backups/backup.sh

    Agregue lo siguiente al archivo, ajustando las rutas y la contraseña de mysqldump según sea necesario:

    #! / bin / sh THEDATE = "fecha +% d% m% y% H% M" mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backups / files / sitebackup $ THEDATE .tar / var / www / vhosts / my-website-path / httpdocs gzip /backups/files/sitebackup$THEDATE.tar find / backups / files / site * -mtime +5 -exec rm  \; encontrar / copias de seguridad / archivos / db * -mtime +5 -exec rm  \;

    La secuencia de comandos creará primero una variable de fecha para que todos los archivos tengan el mismo nombre para una sola copia de seguridad, luego vuelcan la base de datos, actualizan los archivos web y los procesan. Los comandos de búsqueda se usan para eliminar cualquier archivo anterior a 5 días, ya que no desea que su unidad se quede sin espacio.

    Haga el script ejecutable ejecutando el siguiente comando:

    chmod u + x /backups/backup.sh

    A continuación, deberá asignarlo para que se ejecute automáticamente por cron. Asegúrese de usar una cuenta que tenga acceso al directorio de copias de seguridad.

    crontab -e

    Agregue la siguiente línea al crontab:

    1 1 * * * /backups/backup.sh

    Puede probar el script con anticipación ejecutándolo mientras está conectado a la cuenta de usuario. (Normalmente ejecuto las copias de seguridad como root)

    Sincronización de copias de seguridad fuera del sitio con Rsync

    Ahora que tiene copias de seguridad automatizadas de su servidor en ejecución, puede sincronizarlas en otro lugar mediante la utilidad rsync. Querrá leer este artículo sobre cómo configurar las claves ssh para el inicio de sesión automático: Agregar clave SSH pública al servidor remoto en un solo comando

    Puede probar esto ejecutando este comando en una máquina Linux o Mac en otra ubicación (tengo un servidor Linux en casa, que es donde ejecuto esto)

    rsync -a [email protected]: / backups / files / * / offsitebackups /

    Esto tardará bastante tiempo en ejecutarse la primera vez, pero al final, su computadora local debe tener una copia del directorio de archivos en el directorio / offsitebackups /. (Asegúrese de crear ese directorio antes de ejecutar el script)

    Puedes programar esto agregándolo a una línea crontab:

    crontab -e

    Agregue la siguiente línea, que ejecutará rsync cada hora en la marca de 45 minutos. Notarás que usamos la ruta completa para rsync aquí.

    45 * * * * / usr / bin / rsync -a [email protected]: / backups / files / * / offsitebackups /

    Puede programarlo para que se ejecute a una hora diferente, o solo una vez por día. Eso es realmente de ti.

    Tenga en cuenta que hay muchas utilidades que le permitirán sincronizar a través de ssh o ftp. No tienes que usar rsync.

    Seguridad

    Lo primero que debe hacer es asegurarse de que tiene una cuenta de usuario regular para usar a través de ssh y asegurarse de que puede usar su para cambiar a la raíz. Es una muy mala idea permitir el inicio de sesión directo de root a través de ssh.

    Deshabilitar el inicio de sesión de root sobre SSH

    Edite el archivo / etc / ssh / sshd_config y busque la siguiente línea:

    #PermitRootLogin si

    Cambia esa línea para que se vea así:

    PermitRootLogin no

    Asegúrese de que tiene una cuenta de usuario regular y puede iniciar una sesión de root antes de realizar este cambio, de lo contrario podría bloquearse..

    Deshabilitar la versión 1 de SSH

    Realmente no hay razón para usar otra cosa que no sea SSH versión 2, ya que es más segura que las versiones anteriores. Edite el archivo / etc / ssh / sshd_config y busque la siguiente sección:

    #Protocolo 2.1 Protocolo 2

    Asegúrese de que solo está utilizando el Protocolo 2 como se muestra.

    Reinicie el servidor SSH

    Ahora deberá reiniciar el servidor SSH para que esto tenga efecto..

    /etc/init.d/sshd restart

    Compruebe si hay puertos abiertos

    Puede usar el siguiente comando para ver en qué puertos está escuchando el servidor:

    netstat -an | grep ESCUCHAR

    Realmente no debería tener nada que escuche, excepto los puertos 22, 80 y posiblemente 8443 para plesk.

    Configurar un Firewall

    Articulo principal: Usando Iptables en Linux

    Opcionalmente, puede configurar un firewall de iptables para bloquear más conexiones. Por ejemplo, usualmente bloqueo el acceso a cualquier otro puerto que no sea desde mi red de trabajo. Si tiene una dirección IP dinámica, querrá evitar esa opción..

    Si ya ha seguido todos los pasos de esta guía hasta ahora, probablemente no sea necesario agregar un firewall a la combinación, pero es bueno comprender sus opciones..

    Ver también

    • Usando Iptables en Linux

    Referencias

    • Optimizando su servidor DV (mediatemple.net)
    • XCache