12Sep

Afinando un Servidor Web Virtual Dedicado

click fraud protection

Cuando obtiene un servidor virtual dedicado para ejecutar su sitio web, es probable que esté configurado para todo el mundo y no esté personalizado para maximizar el rendimiento al ejecutar un sitio web.

Contenido

[ocultar]

  • 1 Descripción general
  • 2 Configuración de Linux
    • 2.1 Desactivar DNS
    • 2.2 Desactivar SpamAssassain
    • 2.3 Desactivar xinetd
    • 2.4 Limitar el uso de la memoria de Plesk
    • 2.5 Desactivar o desactivar Plesk( opcional)
  • 3 Configuración de MySQL
    • 3.1 Activar 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 secuencia de comandos automatizada
    • 6.2 Copias de seguridad de sincronización fuera de sitio con Rsync
  • 7 Seguridad
    • 7.1 Desactivar raízLogin Over SSH
    • 7.2 Deshabilitar SSH Versión 1
    • 7.3 Reiniciar SSH Server
    • 7.4 Verificar puertos abiertos
    • 7.5 Configurar un firewall
  • 8 Ver también
  • 9 Referencias
instagram viewer

Overview

Hay una serie de áreas problemáticas donde queremost para maximizar el rendimiento:

  • Configuración de Linux
    Generalmente, se ejecutan servicios que no tienen que serlo, desperdiciando memoria que podría usarse 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 en gran medida.
  • Configuración de Apache
    Por defecto, la mayoría de los proveedores de hosting instalan Apache con casi todos los módulos instalados. No hay ninguna razón para cargar módulos si nunca los va a usar.
  • Configuración de PHP
    La configuración predeterminada de PHP es igualmente inflada, por lo general hay una tonelada de módulos adicionales innecesarios instalados.
  • PHP Opcode Cache
    En lugar de permitir que PHP recompile los scripts cada vez, un caché de código de operación guardará en caché los scripts compilados en la memoria para aumentar el rendimiento. Copias de seguridad

  • Probablemente debería configurar algunas copias de seguridad automáticas, ya que su proveedor de hosting no lo hará por usted.
  • Seguridad
    Claro, Linux es lo suficientemente seguro por defecto, pero generalmente hay algunos problemas de seguridad evidentes que puede solucionar con algunas configuraciones rápidas.

Configuración de Linux

Hay una gran cantidad de ajustes que puede hacer, que variarán ligeramente en función del servidor que esté utilizando. Estos ajustes son para un servidor que ejecuta CentOS, pero deberían funcionar para la mayoría de los servidores de DV.

Deshabilitar DNS

Si su proveedor de hosting maneja el DNS para su dominio( probable), entonces puede deshabilitar la ejecución del servicio DNS.

deshabilita dns /etc/init.d/ con el nombre stop chmod 644 /etc/init.d/ con nombre

El comando chmod elimina el permiso de ejecución del script, impidiendo que se ejecute al inicio.

Desactiva SpamAssassain

Si no estás usando cuentas de correo electrónico en tu servidor, no deberías molestarte en ejecutar herramientas anti-spam.(También debe consultar Google Apps, solución de correo electrónico mucho mejor)

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

Deshabilitar xinetd

El proceso xinetd contiene 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 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 los servidores DV de MediaTemple, pero no se ha verificado en ninguna otra.(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 desactivarlo para que se ejecute al inicio ejecutando el siguiente comando:

chmod 644 /etc/init.d/ psa

Tenga en cuenta que si lo deshabilita, no puede iniciarlo manualmente sincambiando los permisos de archivos hacia atrás( chmod u + x).

Configuración de MySQL

Habilitar Query Cache

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

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

Puedeagregue más memoria al caché de consultas si lo desea, pero no use demasiado.

Deshabilitar 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:

skip-networking

Configuración de Apache

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

Busque la línea que se ve así:

Tiempo de espera 120

Y cámbielo a esto:

Tiempo de espera 20

Ahora busque 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 paraTenga en cuenta que cuando ajuste un servidor en la plataforma de PHP, cada subproceso de apache cargará PHP en una ubicación separada de la memoria. Esto significa que si un módulo no utilizado agrega 256k de memoria a PHP, a través de 40 hilos de Apache está desperdiciando 10MB 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 módulo

comentarios cualquier líneas LoadModule con estos módulos:

  • ODBC
  • SNMP
  • pdo
  • ODBC pdo
  • mysqli
  • ioncube-loader
  • JSON
  • IMAP
  • LDAP
  • ncurses

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

PHP Código de Operación caché

Hayhay una cantidad de cachés de opcode que puede usar, incluidos APC, eAccelerator y Xcache, el último de mis preferencias personales debido a la estabilidad.

Descargue xcache y extráigalo en un directorio, y luego ejecute los siguientes comandos desde la fuente xcachedirectorio:

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 memoria caché de opcode 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 memoria caché variable xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Desactivado xcache.readonly_protection =En xcache.mmap_path = "/tmp/ xcache" xcache.coredump_directory = "" xcache.cacher = En xcache.stat = En xcache.optimizer = Apagado

Todo: Necesita expandir esto un poco y vincularlo a xcache en las referencias.

Backups

Hay muy poco más importante que tener copias de seguridad automáticas 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 también prefiero tener copias de seguridad automatizadas.

Crear secuencia de comandos de copia de seguridad automatizada

Normalmente comienzo creando un directorio / backups, con un directorio de archivos /backups/ debajo. Puede ajustar estas rutas si lo desea.

mkdir -p /backups/ archivos

Ahora cree una secuencia de comandos 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 = `date +% d% m% y% H% M` mysqldump -uadmin -pPASSWORD DATABASENAME & gt;/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 buscar el sitio /backups/files/ * -mtime +5 -exec rm{ } \;encontrar /backups/files/ db * -mtime +5 -exec rm{ } \;

El script creará primero una variable de fecha para que todos los archivos tengan el mismo nombre para una sola copia de seguridad, luego vuelque la base de datos, cargue los archivos web y los gzips. Los comandos de búsqueda se utilizan para eliminar cualquier archivo de más de 5 días, ya que no desea que su unidad se quede sin espacio.

Haga que el script sea 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 utilizar 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 de antemano ejecutándolo mientras está conectado a la cuenta de usuario.(Por lo general, ejecuto las copias de seguridad como root) Copias de seguridad de sincronización

fuera de sitio con Rsync

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

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

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

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

Puede 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 a rsync aquí.

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

Puede programarlo para que se ejecute en un momento diferente, o solo una vez por día. Eso depende de ti.

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

Security

Lo primero que debe hacer es asegurarse de tener una cuenta de usuario normal para usar a través de ssh y asegurarse de que puede usar su para cambiar a root. Es una muy mala idea permitir el inicio de sesión directo para root sobre ssh.

Deshabilite el inicio de sesión raíz sobre SSH

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

#PermitRootLogin yes

Cambie la línea para que se vea así:

PermitRootLogin no

Asegúrese de tener una cuenta de usuario normal y de suraíz antes de realizar este cambio; de lo contrario, podría bloquearse.

Deshabilitar SSH Versión 1

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

# Protocolo1 Protocolo 2

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

Reinicie el servidor SSH

Ahora necesitará reiniciar el servidor SSH para que esto surta efecto.

/etc/init.d/ sshd restart

Comprobación de puertos abiertos

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

netstat -an |grep ESCUCHAR

Realmente no debería haber nada escuchando excepto los puertos 22, 80 y posiblemente 8443 para plesk.

Configuración de un firewall

Artículo principal: Uso de Iptables en

de Linux

Opcionalmente puede configurar un firewall de iptables para bloquear más conexiones. Por ejemplo, generalmente bloqueo el acceso a otros puertos que no sean de 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, probablemente no sea necesario agregar un firewall a la mezcla, pero es bueno comprender sus opciones.

Vea también

  • Uso de Iptables en Linux Referencias

  • Optimización de su servidor DV( mediatemple.net)
  • XCache