Archivo Swap: Mejorando la memoria de Ubuntu 14

Luego de que varios de mis sitios se cayeran por falta de memoria (y yo que pensaba que era MySQL que no funcionaba) leí que los errores eran por falta de distribución de memoria.

Para eso existen los Swap. Swap es un area en el disco duro que designa un lugar en donde el sistema operativo puede guardar data temporalmente que no se puede mantener en el RAM.

Hice el paso a paso en mi servidor de Digital Ocean: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04 pero luego encontré un script para poder aplicarlo automáticamente al servidor si tener que pasar por cada uno de los pasos.

Presentamos a:

SwapUbuntu

https://github.com/CraftThatBlock/SwapUbuntu

Lo mas sencillo es:

  1. Entras como administrador via SSH en tu servidor
  2. Descargas el archivo
    wget http://git.io/MJDcxw -O swap
  3. Corres el script y asignas el espacio que necesitas (ellos ponen 2G, pero en mi caso usé 4G)
    sh swap {size}
  4. Listo

Lo que hace:

  • Crea el archivo
    /swapfile
  • Asigna la cantidad asignada de espacio que necesitas
  • Cambia los permisos en el archivo para que sea legible
  • Le cambia el parametro swappiness que configura que tan frecuente el sistema debe hacer el swap de data del RAM. Pone el valor 10 (ideal para que el sistema use el swap solo para lo necesario)
  • Cambia el vfs_cache_pressure a 50. Básicamente, esto accesa data sobre el sistema de archivos. Esto generalmente es costoso de verificar y se requiere frecuentemente, así que es buena idea que el sistema lo tenga en cache.
  • Todo los cambios los agrega en el sistema para que funcionen predeterminadamente cuando reinicies el sistema.

Luego siempre es bueno reiniciar el servidor para que los cambios se activen.

# sudo reboot now

Atento y gracias :)

Cómo crear un respaldo (o Backup) de MySQL desde la consola

Si, los respaldos (o backups) automáticos son importantes, pero a veces quieres hacer un respaldo justo antes de hacer un cambio importante en el servidor.

El concepto es que puedas hacer un respaldo completo de la base de datos y guardarla fuera del servidor para poder restablecerla en caso de emergencia.

Aunque parezca complicado, la verdad es que es bastante sencillo.

Crear un respaldo (o Backup)

El comando mysqldump se usa para crear unos “dumps” de la base de datos que maneja MySQL. Esto solo son archivos que tienen toda la lista de comandos necesarios para recrear la base de datos desde cero.

Para respaldar una sola base de datos, puedes hacer un “dump” y tener un archivo con la información así:

mysqldump database_name > nombre_base_de_datos.sql

Puedes respaldar varias bases de dato al mismo tiempo así:

mysqldump --databases basededatos_uno basededatos_dos > dos_basesdedatos.sql

 

Y también es muy sencillo hacer un respaldo de toda la base de datos del servidor:

mysqldump --all-databases > toda_la_basededatos.sql

Restaurando un respaldo

Como los archivos dump son comandos SQL, puedes restaurar la base de datos diciéndole a MySQL que corra los comandos de estos archivos y que ponga la data en las bases de datos correspondientes.

mysql nombre_basededatos < nombre_basededatos.sql

Si restauras una sola base de datos desde un dump de todas las bases de datos, puedes decirle a MySQL así:

mysql --one-database database_name < all_databases.sql

Para finalizar puedes descargar el archivo que necesitas a tu computadora via SSH. En una ventana nueva de tu terminal o consola.

scp <usuario>@<tu-sitio.com>:all_databases.sql /tu/directorio/local

 

Cómo quitar el área restringida para entrar en WordPress de Digital Ocean (y otros)

Hace un par de días instalé un par de sitios WordPress en mi nuevo servidor en Digital Ocean via “One-click WordPress installation”. Cuando quise entrar en el admin me muestra una ventana de “Restricted Area” que me pide usuario y contraseña.

Vale. Intento con la información del servidor y no funciona, con la info de mi cuenta de administrador que acabo de configurar y tampoco. Bueno, ya se está poniendo fastidioso esto.

Entro en mi servidor via SSH aparece la información: tengo que poner una clave diferente que me muestra en el servidor para poder entrar en el administrador. Viva la seguridad! pero esto muy poco práctico.

Bueno, ya logre entrar, instalé un tema, un par de plugins y todo bien. Luego cuando vuelvo a entrar vuelve la misma ventana del amor. AAAaaaarrrgghhh! no de nuevo!

Cómo quito la P*** ventana!?

En verdad es bastante sencillo según el artículo de Digital Ocean (https://www.digitalocean.com/community/tutorials/one-click-install-wordpress-on-ubuntu-14-04-with-digitalocean)

1. Entra en tu servidor via SSH.

Sólo como recordatorio entras desde tu terminal

$ ssh root@<el IP de tu servidor>

 

2. Actualiza la configuración de Apache

Edita el archivo de configuración de Apache usando nano:

nano /etc/apache2/apache2.conf

Dentro del archivo buscas la sección que maneja “/wp-admin/” que se ve mas o menos así:

<DirectoryMatch ^.*/wp-admin/>
    AuthType Basic
    AuthName "Please login to your droplet via SSH for login details."
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</DirectoryMatch>

3. Comenta la sección de /wp-admin/

Para comentar solo tienes que agregar el símbolo de numeral (#) antes de cada línea así:

#<DirectoryMatch ^.*/wp-admin/>
#    AuthType Basic
#    AuthName "Please login to your droplet via SSH for login details."
#    AuthUserFile /etc/apache2/.htpasswd
#    Require valid-user
#</DirectoryMatch>

Cerrar y guardar.

4. Reinicia Apache

Para ver los cambios vas a tener que reiniciar Apache así:

service apache2 restart

Ahora si vas a poder entrar en el administrador /wp-admin/ sin tener que poner tus datos.

Alinear verticalmente centrado divs con jQuery

Este pequeño plugin de jQuery sirve para alinear verticalmente casi cualquier elemento cuando no quieres determinar la altura exacta del contenedor.

(function ($) {
// VERTICALLY ALIGN FUNCTION
$.fn.vAlign = function() {
    return this.each(function(i){
    var ah = $(this).height();
    var ph = $(this).parent().height();
    var mh = Math.ceil((ph-ah) / 2);
    $(this).css('margin-top', mh);
    });
};
})(jQuery);

Para usar el código solo tienes que agregar la clase o identificador como: $('.classname').vAlign(); o $('#image').vAlign(); – Esto tiene que suceder una vez que el documento haya cargado así que tiene que estar dentro de $(document).ready(function(){})

Gracias a ATOMIKU.COM que lo escribió en ingles: Simple jQuery plugin for vertically centering

¿Cómo configurar MySQL para que se encienda luego de un boot del servidor?

Mi servidor de DigitalOcean.com ha estado funcionando bien, pero cada cierto tiempo había tenido que reiniciar MySQL que parecía que no lo hacía automáticamente.

Luego de mucho buscar, encontré que la solución está en la configuración de una recuperación de sistema.

Para resolverlo

Pasos:
1) entras por consola a tu servidor
2) descargas el instalador para manejar procesos visuales apt-get install sysv-rc-conf
3) corres sysv-rc-conf
4) seleccionas los numeros del 2 al 5numeros-mysql
5) listo

Mac OSX 10.10 Yosemite pagina de forbidden en instalación local

Cambiando la configuración local de virtual hosts para el Mac OSX 10.10 me topé con un 403 forbidden que parece de permisos, pero resulta que es una configuración del Apache.

Tienes que editar este archivo /etc/apache2/httpd.conf

Y buscas el Require all que es lo que no permite acceso a los directorios

# 
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
# 
<Directory />
    AllowOverride none
    Require all denied
</Directory>

Solo tienes que comentarlo (quizas en un futuro no quieras ver tus propios archivos)

# 
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
# 
<Directory />
    AllowOverride none
    #Require all denied
</Directory>

Y resetear apache.

sudo apachectl graceful

Presto!

Resuelto: Safari no muestra el poster del video html5

Safari (y al parecer los móviles también) no muestran el poster del video que sirve como referencia de los videos.
Usando css podemos usar la misma imagen del poster para que se muestre detrás del video y lograr el mismo efecto.

<div class="contenido">
	<div class="contenedor_video">
		<video poster="poster-del-video.jpg" controls>
				<source src="el-video.mp4" type="video/mp4">
				Tu explorador no soporta la etiqueta de video.
		</video>	
	</div>
</div>
.contenedor {
	position: relative;
}

.contenedor_video video {
	width: 650px;
	height: 365px;
	position: relative;
	top:0;
	left:0;
	z-index: 2;
}

.contenedor_video::before {
	background: transparent url('poster-del-video.jpg') no-repeat top left;
	width: 650px;
	height: 365px;
	content: "";
	display: block;
	position: absolute;
	z-index: 1;
	top: 6px;
	left: 8px;
}

Puedes verlo en codepen.io