VPS y a correr
Rodrigo Aguilera
Drupal camp Spain 2013
#vpsyacorrer
Quien soy
Rodrigo Aguilera
https://drupal.org/user/408170
@marinero
http://rodrigoaguilera.net
[email protected]
¿Por qué?
-Bajada de precios de VPS
-Shared hosting ya no es la opción más barata
-Pros
-Nos permite más flexibilidad (solr, memcache, mongodb, etc)
-podemos escalar sin migrar
-Contras
-No nos dan nada hecho
-En alguna ocasión necesitaremos un sysadmin
Proveedores
Notas previas
No es una sesión de rendimiento
Instalaremos últimas versiones estables
No es un servidor de desarrollo
Puede usarse para una maquina de verdad
Configuraciones sensatas
Nginx
Grupo de Drupal https://groups.drupal.org/nginx
Configuración de perusio
Hay módulos que instalan configuraciones
apache (.htaccess)
Microcache
Crear maquina
Disco: 20GB
Memoria: 512MB
CPUs: 1
Transferencia: 1TB
SO: debian 7.2 x64
Claves ssh añadidas automáticamente
Primeros pasos
-Asociar ip de la maquina con un dominio en
hosts o comprar un dominio
ssh
[email protected]
Dotdeb.org
Repositorio de paquetes para convertir una
maquina debian en un servidor web potente.
edit /etc/apt/sources.list.d/dotdeb.list
deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all
wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
Instalar paquetes
apt-get update
apt-get dist-upgrade
apt-get install mosh vim git php-pear php5-curl php5-gd
php5-mcrypt php5-memcached php5-mysqlnd php5-fpm
nginx-extras memcached mysql-server
Drush
pear channel-discover pear.drush.org
pear install drush/drush
La configuración que vamos a usar no permite
update, install o cron desde el navegador por lo que drush
es un requerimiento
Configurar Nginx
mv /etc/nginx /etc/nginx.ORI #apartamos la configuracion Original
#Clonamos la nueva configuracion
git clone https://github.com/perusio/drupal-with-nginx.git /etc/nginx
#Creamos una rama propia para integrar cambios futuros
git checkout -b D7_dcspain2013
#directorios necesarios para nginx
mkdir /var/cache/nginx /etc/nginx/sites-enabled
#En el nuevo /etc/nginx/nginx.conf necesitamos estas dos configuraciones
variables_hash_max_size 1024;
types_hash_max_size 2048;
server_names_hash_bucket_size 64;
Configurar nginx
# en /etc/nginx.conf
#include upstream_phpcgi_tcp.conf;
include upstream_phpcgi_unix.conf;
# en /etc/nginx/upstream_phpcgi_unix.conf dejar solo una línea de server
server unix:/var/run/php5-fpm.sock;
quitando el bloque de backup
Crear vhost
cd /etc/nginx/sites-available/
cp example.com.conf dcspain2013.com
sed -i 's/example.com/dcspain2013.com/g' dcspain2013.com
#quitar HTTPS y referencias a ipv6
ngxensite dcspain2013.com
Instalar Drupal
mkdir -p /var/www/sites
cd /var/www/sites
drush dl drupal
ln -s drupal-7.23 dcspain2013.com
cd dcspain2013
drush si --db-url=mysql://root:password@localhost/test
Configurar cron
nano /etc/cron.daily/drupal
#!/bin/sh
cd /var/www/drupal/sites/default && sudo -u www-data drush cron
chmod +x /etc/cron.daily/drupal
Módulos a instalar
drush dl filefield_nginx_progress
entitycache memcache_storage
memcache_status swiftmailer
drush -y en idem
memcache_storage
# En settings.php
$conf['cache_backends'][] = 'sites/all/modules/memcache_storage/memcache_storage.inc';
$conf['cache_default_class'] = 'MemcacheStorage';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
$conf['memcache_storage_key_prefix'] = 'misitio';
$conf['memcache_options'] = array(
Memcached::OPT_TCP_NODELAY => TRUE,
Memcached::OPT_BUFFER_WRITES => TRUE,
Memcached::OPT_NO_BLOCK => TRUE
);
memcache_status
mkdir -p sites/all/libraries/memcache
cd sites/all/libraries
wget http://pecl.php.net/get/memcache-3.0.8.tgz
mv memcache-3.0.8/memcache.php memcache/memcache.php.inc
#sustituir myserver por localhost
nano memcache/memcache.php.inc
Reparto de memoria
PHP y Zend Opache 256 y 128 MB
respectivamente
/etc/php/fpm/php.ini
memcache (64MB)
/etc/memcached.conf
mysql (32MB de query cache size)
/etc/mysql/my.cnf
Optimizar base de datos
https://launchpad.net/mysql-tuning-primer/+download
# fichero /etc/mysql/my.cnf
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
max_connections = 100
table_cache = 4096
table_definition_cache = 1200
query_cache_limit = 4M
query_cache_size = 32M
Configurar mail
Configurar todo un stack de mail es complicado
Conectaremos a un smtp externo
Válido para bajo tráfico de emails
Módulo swiftmailer
Añadir swap
#2Gb de swap
dd if=/dev/zero of=/swapfile1 bs=4096 count=524288
mkswap /swapfile1
chmod 0600 /swapfile1
swapon /swapfile1
#nueva linea en /etc/fstab
/swapfile1 swap swap defaults 0 0
# comprobar que ha surtido efecto
free -m
Claves
Dotdeb
Configuración nginx de perusio
Reparto de memoria
Gracias
Preguntas
To be continued on IRC…
Comentarios de: VPS y a correr - Drupalcamp Spain 2013 1 (0)
No hay comentarios