Git pull desde PHP

Git-Logo

Existen muchas maneras de hacer actualizaciones en nuestros sistemas. Particularmente hablando de actualizaciones de repositorios git mediante php, debemos asegurarnos de tener los permisos y owner correctamente seteados en la carpera de nuestro repositorio.

Por ejemplo para hacer una llamada pull desde PHP podemos hacer:

exec("git pull https://usuario:clave@bitbucket.org/usuario/repositorio.git master");

El ejemplo anterior es sobre bitbucket.org pero sirve para cualquier otro servidor de git.

Para que funcione correctamente todo lo anteriormente expuesto nos situamos en /var/www/html y desde allí ejecutamos:

sudo chown www-data:www-data -R nombreRepo/

De ese modo todo el repositorio (nombreRepo) quedará con www-data como dueño y grupo, esto nos permitirá poder hacer llamadas pull desde nuestro sistema php sin problemas.

 

 

 

Anuncios

Como instalar Docker en Ubuntu?

Docker_container_engine_logo

 

Docker es un software que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización. Utiliza características de aislamiento de recursos del kernel de Linux para permitir que “contenedores” independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales. www.docker.com

Ahora, como podemos instalarlo sobre ubuntu?

Primero que nada, en caso de no tener los siguientes paquetes instalados, lo hacemos.

sudo apt istall apt-transport-https ca-certificates

Luego creamos el siguiente archivo de configuración de Docker al que le agregaremos el contenido que corresponda con nuestra versión de Ubuntu.

/etc/apt/sources.list.d/docker.list

Ubuntu Precise 12.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-precise main

Ubuntu Trusty 14.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-trusty main

Ubuntu Wily 15.10

deb https://apt.dockerproject.org/repo ubuntu-wily main

Ubuntu Xenial 16.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-xenial main

Cerramos y guardamos el archivo. Luego actualizamos los repositorios.

sudo apt update

Ya que Docker necesita el paquete linux-image-extra, instalamos el correspondiente a nuestra versión con el comando…

sudo apt install linux-image-extra-$(uname -r)

Para los casos que estemos instalando sobre versiones Ubuntu 12.04 o 14.04 es necesario también que instalemos el paquete apparmor. Esto lo hacemos del siguiente modo…

sudo apt install apparmor

Llegado a este paso, tenemos todos los requisitos para poder instalar Docker, actualizamos los repositorios y procedemos con la instalación.

sudo apt updatesudo apt install docker-engine

Una vez completada la instalación iniciamos el servicio con el siguiente comando…

sudo service docker start

 

Proxy

Ya que Docker se conecta a internet y descarga todos los archivos que sean necesarios para cada caso al ejecutar los comandos que trabajan sobre contenedores, solo en caso de encontrarnos detrás de un proxy debemos editar este archivo con el siguiente contenido:

sudo mcedit /etc/default/docker

Agregamos la línea…

export http_proxy="http://proxy.ejemplo.com:pruerto/"

 

Ahora sí, ya podemos trabajar normalmente con Docker y el mejor modo de comenzar es con un “hola mundo” que provee la plataforma…

sudo docker run hello-world

Al finalizar obtendremos una salida como a continuación donde se nos indica que todo funciona correctamente…

Hello from Docker.
This message shows that your installation appears to be working correctly.

Todo listo! Ya podemos trabar con nuestros contenedores Docker. 🙂

 

 

Donwgrade PHP 7.0 a PHP 5.6

php-300x157

 

Dado que la última versión de Ubuntu 16.04 LTS trae por defecto la versión 7.0 de PHP, si contamos con aplicaciones web un poco viejas nos encontraremos con la necesidad de volver a correr dichas aplicaciones sobre alguna versión anterior de PHP. Si este es tu caso te presento una simple solución para reemplazar la versión que trae el sistema con PHP 5.6.

sudo add-apt-repository ppa:ondrej/php

sudo apt update

sudo apt install --yes php5.6-cli php5.6-dev php-db php-pear php5.6 libapache2-mod-php5.6 php5.6-curl php5.6-gd php5.6-mbstring php5.6-mcrypt php5.6-xml php5.6-xmlrpc php5.6-sybase php5.6-xml python-software-properties build-essential libaio1

sudo aptitude remove php7.0 --purge

Listo! Ahora podemos correr nuestras aplicaciones PHP sin errores.

 

 

PHPMyAdmin sobre Ubuntu 16.04

phpmyadmin

Algunas cosas ya no son como antes, con la llegada de Ubuntu 16.04 entre otros cambios disponemos de PHP 7.0 y nos obliga a realizar algunos cambios para instalar las aplicaciones y servicios que normalmente se utilizan en el desarrollo web.

Estoy hablando puntualmente del caso de PHPMyAdmin, ahora para instalarlo, además del propio paquete phpmyadmin necesitaremos dos más…

sudo aptitude intall phpmyadmin php-mbstring php-gettext

Ahora sí una vez todo instalado reiniciamos apache…

sudo systemctl restart apache2

Todo listo, podemos utilizar normalmente PHPMyAdmin ingresando a http://localhost/phpmyadmin

 

 

NetData – Monitor del Sistema en Tiempo Real

netload

Una excelente opción para monitorear el sistema y obtener estadísticas sin duda es netdata. Nos muestra información casi al instante (apenas unos segudos de retardo) que nos permitire conocer el estado de nuestro sistema en apartados como Memoria, CPUs, Discos, Redes, etc.

Además cada item estadístico cuenta con subcategorías que hacen muy simple su consulta. Toda la información se muestra utilizando gráficos interactivos muy agradables, permitiendo entre sus opciones por ejemplo arrastrar una gráfica para ver “hacia atrás” en el tiempo.

Un dato más que importante, netdata nos muestra todas sus estadísticas mediante una página web (http://localhost:19999), brindando diferentes y muy variadas opciones a la hora de consultar su información. Por ej, desde el smartphone para poder revisar el estado de nuestros servidores remotamente.

La página oficial del proyecto netdata.

 

Pasos para instalación sobre Debian / Ubuntu:

Primero necesitamos instalar algunos paquetes que se utilizarán en el proceso:

sudo aptitude install zlib1g-dev gcc make git autoconf autogen automake pkg-config

Luego clonamos el proyecto descargando desde github:

git clone https://github.com/firehol/netdata.git --depth=1

Accedemos al nuevo directorio:

cd netdata

Y ejecutamos el script de instalación:

sudo ./netdata-installer.sh

Al finalizar la instalación podemos acceder a las estadísticas ingresando desde un navegador web a http://localhost:19999.

Podemos detener netdata haciendo:

killall netdata

E iniciarlo mediante:

/usr/sbin/netdata

 

Eso es todo!

 

 

 

 

Identificar Versiones en GIT

Git-Logo-White

 

En todas las aplicaciones que desarrollemos es siempre importante el hechode poder identificar fácilmente las diferentes versiones, dato sumamente importante en el momento publicar la app.

La forma más simple es utilizando el siguiente comando git:

git log --abbrev-commit --pretty=oneline

Donde obtenemos una salida donde podemos identificar el hash de la versión seguido del comentario que se hizo sobre ese commit, como en el siguiente ejemplo:

ea5b2f6 Comit inicial.

Otro método bastante cómodo para identificar fácilmente las diferentes versiones de nuestro código sobre GIT es mediante el uso de tags:

git tag -a v1.1 -m 'Versión 1.1'

Hacemos push de los tags:

git push --tags

Luego utilizamos el comando git describe:

git describe --tags --long

Esto produce la siguiente salida:

v2.5-0-deadbeef
^    ^ ^
|    | |
|    | Hash del HEAD
|    |
|    Número de commits desde la creación del último tag
|
último tag

SQLMap

sqlmap

Es el turno de una herramienta que considero entre las mejores para realizar tests de penetración y así evaluar la seguridad en sistemas informáticos.

Parece un simple comando pero sqlmap es una completa herramienta que permite automatizar el proceso de detectar y explotar ataques mediante SQL injection y a través de ellos tomar control de servidores de bases de datos o incluso con un poco más de dedicación aplicaciones completas.

Posee un motor de detección muy poderoso que entre otras cosas nos permite buscar a través de datos de la base de datos, también acceder al sistema de archivos y ejecutar comandos en el sistema operativo remoto.

Algunos parámetros entre los más interesantes…

python sqlmap.py --tor --forms --dbms=oracle -u http://ejemplo.com --dbs

En el ejemplo anterior se testeará la URL indicada con -u http://ejemplo.com utilizando la red TOR para mantener nuestra privacidad gracias al parámetro –tor. Además estamos indicando que se busquen formularios donde llenar datos con el parámetro –forms y con el parámetro –dbms le decimos que motor de base de datos posee el servidor que atacamos (en caso de conocerlo). El último parámetro –dbs listará las bases de datos que existan en el server.

De modo similar una vez que hemos logrado ingresar al servidor seleccionado y listar las bases de datos que posee, podemos listar las tablas e incluso descargar su contenido en archivos .csv que luego es posible importar en nuestro servidor.

Lo anteriormente descrito podría lograrse haciendo…

python sqlmap.py --tor --forms --dbms=oracle -u http://ejemplo.com --dbs -D nombreBaseDeDatos --tables --dump

El parámetro -D nos permite seleccionar una base de datos existente con la cual trabajar, seguido el parámetro –tables listará las tablas pertenecientes a esa base de datos. Por último –dump descargará el contenido de cada tabla generando un archivo .csv por cada tabla y volcando los datos en él.

Hastá acá una breve descripción de algunas de las opciones más generales que nos provee esta gran herramienta sqlmap.