domingo, 3 de diciembre de 2017

Instalar Odoo 10.0 en Docker

Docker es la mejor manera de instalar "cosas" en el ordenador para hacer pruebas y programar sin tener que "contaminar" el sistema operativo. Una vez que hemos terminado con lo que teníamos que probar, borramos el contenedor y todo como antes.
Entendiendo que ya tenemos Docker instalado en nuestro sistema operativo, vamos a ver cómo podemos instalar Odoo 10.0 en menos de dos minutos.
Las sentencias que vamos a picar en nuestro sistema son las mismas independientemente del sistema operativo que tengamos, en mi caso lo estoy haciendo en UBUNTU 16.04 y para esto vamos a situarnos en nuestro cd /home/xxxx (sustituyendo xxxx por nuestro usuario) y vamos a poner delante de cada sentencia el "sudo".

1. CREAMOS UN CONTENEDOR PARA LOS DATOS DE LA BASE DE DATOS:
docker create --name odoo-db-data library/postgres:9.4 /bin/true

2. CREAMOS UN CONTENEDOR Y ARRANCAMOS LA BASE DE DATOS:
(sustituimos a continuación odoo-db-password por la contraseña que querramos poner a nuestra base de datos)
docker run -d --name odoo-db --env POSTGRES_USER=odoo --env POSTGRES_PASSWORD=odoo-db-password --volumes-from odoo-db-data library/postgres:9.4

3. CREAMOS UN CONTENEDOR PARA EL ODOO:
docker create -v /var/lib/odoo --name odoo-data odoo:10.0 /bin/true

4. ARRANCAMOS ODOO:
(sustituimos a continuación odoo-db-password por la contraseña que pusimos a nuestra base de datos en el punto 2)
docker run -d --name odoo --link odoo-db:db -p 8069:8069 --volumes-from odoo-data odoo:10.0 odoo --db_password=odoo-db-password

Y ya está odoo corriendo en nuestro Docker. Si queremos acceder podemos poner http://localhost:8069

Si quisiéramos borrar nuestros contenedores hamos lo siguiente:

1. PARAMOS ODOO
docker stock odoo

2. BORRAMOS LOS CONTENEDORES DE ODOO Y DATOS DE ODOO
docker rm odoo
docker rm odoo-data

3. PARAMOS LA BASE DE DATOS POSTGRES
docker stop odoo-db

4. BORRAMOS CONTENEDORES DE LA BASE DE DATOS Y DE LOS DATOS DE LA BASE DE DATOS
docker rm odoo-db
docker rm odoo-db-data

Y así está intacto nuestro sistema como antes de instalar el Odoo.

jueves, 15 de junio de 2017

Activar (permitir) conexiones SSH en Raspbian Jessie Lite

Tienes que sacar la tarjeta micro SD, ponerla en un adaptador para poder acceder a ella desde el PC. En el directorio raiz de la tarjeta tienes que crear un archivo vacío se llame ssh sin extensión ni nada. Esto activará el servidor ssh en tu sistema cuando lo vuelvas a iniciar en la Raspberry.

viernes, 22 de julio de 2016

c# - Quitar el borde del botón que recibe el foco (se pincha)

No hay ninguna propiedad para evitar que se pinte un borde más grueso sobre el botón que se han pinchado en un formulario del visual C#. Hacerlo programáticamente a mí no me ha resultado pero hay un pequeño truco que lo quita para siempre. Se trata de crear un label en el formulario (si ya hay uno creado para otro uso nos vale) y hacer que en el evento CLICK (doble click encima del botón) del botón en cuestión hagamos que el label reciba loco con label.Focus(); sustituyendo la palabra label por el nombre de nuestro label. Si hemos tenido que crear un label para esto, podemos ponerlo enciman del propio botón y con el botón derecho del ratón le damos a "Send to back" (Enviar al fondo) para que quede oculto detrás del botón o de cualquier otro elemento. También si le quitamos la propiedad Text al label y la dejamos vacía no será visible en la ejecución del formulario.

martes, 19 de julio de 2016

WordPress - Cambiar Permisos para Actualizar e Instalar Directamente desde la Web de Administración

Para poder actualizar WordPress directamente desde la web de administración de nuestro sitio cuando los tenemos instalado en nuestro propio servidor hay que hacer una pequeña modificación en lo que respecta a la propiedad y permisos de los archivos y directorios del site:

Primero que nada tenemos que saber cual es el usuario de linux que utiliza nuestro servidor web apache para trabajar, en el caso de ubuntu suele ser www-data. Si quieres saber que usuario usa apache los puedes saber con la sentencia:


$ ps auwwfx | grep apache

Nos devuelve algo así:

www-data 19297  0.0  2.9 409676 50656 ?        S    22:29   0:00  \_ /usr/sbin/apache2 -k start
www-data 19299  0.0  2.5 406560 44276 ?        S    22:29   0:00  \_ /usr/sbin/apache2 -k start
www-data 19835  0.0  2.5 408104 44032 ?        S    22:50   0:00  \_ /usr/sbin/apache2 -k start
www-data 19904  0.0  2.3 406148 41684 ?        S    22:54   0:00  \_ /usr/sbin/apache2 -k start
www-data 19905  0.0  2.3 405772 41368 ?        S    22:54   0:00  \_ /usr/sbin/apache2 -k start


Donde vemos que el usuario en mi sistema es: www-data

Ahora vamos al directorio donde tenemos nuestro site apache:

$ cd /var/www/html/wordpress

Cambiamos el grupo de todos los archivos y subdirectorios del site con:

$ sudo chgrp -R www-data ./*

Cambiamos los permisos de los archivos con:

$ sudo chmod -R g+rw ./*

Por último modificamos el archivo de configuración de WordPress:

 $ sudo nano /var/www/html/wordpress/wp-config.php

Justo después de la linea:

require_once(ABS_PATH . 'wp-settings.php');

Añadimos:

define('FS_METHOD', 'direct');

Y esto es todo...


jueves, 5 de febrero de 2015

MYSQL --> LOAD DATA INFILE produce como resultado FILE NOT FOUND aún con la certeza de que existe el archivo

Recientes versiones del Ubuntu Server (desde la 10.04) se empaquetan con AppArmor y MySQL's en modo enforcing por defecto. Puede chequear esto ejecutando:sudo aa-status obteniendo un resultado aproximado a esto:
# sudo aa-status
5 profiles are loaded.
5 profiles are in enforce mode.
   /usr/lib/connman/scripts/dhclient-script
   /sbin/dhclient3
   /usr/sbin/tcpdump
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/sbin/mysqld
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode :
   /usr/sbin/mysqld (1089)
0 processes are in complain mode.
Si mysqld está incluido en el modo enforce, entonces esto es lo que puede producir este resultado tanto para lectura como escritura. Lo que puedes hacer es editar:

nano/etc/apparmor.d/usr.sbin.mysqld y añadir /ruta-de-carpeta/ and /ruta-de-carpeta/* al final del todo como muestra el ejemplo a continuación:
...
/usr/sbin/mysqld {
    ...
    /var/log/mysql/ r,
    /var/log/mysql/* rw,
    /var/run/mysqld/mysqld.pid w,
    /var/run/mysqld/mysqld.sock w,
    /ruta-de-carpeta/ r,
    /ruta-de-carpeta/* rw,

}
Después de esto tienes que recargar los perfiles del AppArmor con:.
# sudo /etc/init.d/apparmor reload
CUIDADO: este cambio propuesto permitirá a MySQL leer y escribir en la ruta incluida del directorio. Valora las implicaciones de seguridad que esto conlleva en tu caso concreto.

sábado, 13 de diciembre de 2014

Asegurar un Servidor Apache


1. Activar los módulos 'ssl' y 'rewrite' de apache2 

Activamos los módulos ssl:
sudo a2enmod ssl

Activamos el módulo 'rewrite':
sudo a2enmod rewrite

Nos dirá que tenemos que ejecutar 'sudo service apache2 restart' para que estas  activaciones tengan efecto pero lo haremos al final de todos los comandos para no hacerlo varias veces.

2. Esconder la versión del servidor








sudo nano /etc/apache2/apache2.conf

Para ocultar la versión del servidor hemos de incluir al final del archivo de configuración global de Apache2 (/etc/apache2/apache2.conf) las siguientes dos lineas:

ServerSignature Off
ServerTokens Prod

3. Deshabilitar la visibilidad del contenido de los directorios del servidor


Hay que incluir en el mismo archivo de configuración del punto anterior, al final, el siguiente texto:
<Directory /var/www/html>
     Options -Indexes
</Directory>

4. Forzar https

sudo nano /etc/apache2/sites-available/000-default.conf

Para redirigir todas las llamadas http (puerto 80) al puerto seguro 443 (https) deberemos incluir en archivo del virtual host por defecto del puerto 80 (/etc/apache2/sites-available/000-default.conf) las siguiente lineas justo después de <VirtualHost domain.com:80>

RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [NC,R,L]


Nota imporanta: después de cada punto o al final de realizarlos todos se ha de reiniciar el servidor apache tecleando en el prompt: 

sudo service apache2 restart

lunes, 10 de febrero de 2014

Instalar ssmtp en ubuntu con gmail - PHP mail() funcionando

1. Instalamos SSMTP
> sudo apt-get install ssmtp

2. Editamos en archivo de configuración:
> sudo nano /etc/ssmt/ssmtp.conf

(En verde sustituir por nuestros datos y en rojo lo que hay que poner tal cual)

Modificamos las siguentes líneas:
root=nuestra.dirección.de.gmail.completa
mailhub=smtp.gmail.com:587
hostname=nuestra.dirección.de.gmail.completa
#FromLineOverride=YES

UseSTARTTLS=YES
AuthUser=nuestra.dirección.de.gmail.completa

AuthPass=nuestra.contraseña.de.gmail.completa

3. Configurar usuarios...
> sudo nano /etc/ssmt/revaliases

Escribimos una linea para cada usuario que queramos de la siguiente manera:
usuarioejemplo:ejemplo@gmail.com:smtp.gmail.com:587

4. Configuramos PHP con php.ini
> sudo nano /etc/php5/apache2/php.ini

y buscamos la siguiente linea, la descomentamos (quitarle el punto y coma de delante) y la dejamos así:

sendmail_path = /usr/sbin/ssmtp -t

y reiniciamos apache con:

> sudo service apache2 restart

Para enviar un email desde php y hacer una prueba utilizamos el siguiente código:

<?php
$envio = mail("destinatario@dominio.com", "Este es el asunto...", "Este es el cuerpo del mensaje");
var_export ($envio);
?>

Esto nos devolverá "true" si el mensaje se envió correctamente.