viernes, 5 de diciembre de 2014

Mostrar y Revocar privilegios de MySQL

Hace unos días me encontré en la necesidad de revisar que privilegios tenían los usuarios de MySQL, así que me di a la tarea de investigarlo y les comparto una breve guía de como realizarlo.

1. Mostrar privilegios de un usuario
Ingresamos a nuestro servidor MySQL como ya lo hemos hecho anteriormente y solo bastara con escribir el siguiente comando:

mysql> SHOW GRANTS FOR miUser@localhost;

y se nos desplegara la información de los privilegios de este usuario

GRANT USAGE ON *.* TO 'miUser'@'localhost' IDENTIFIED BY PASSWORD '*519FB...'
GRANT SELECT, INSERT, UPDATE, DELETE ON `dbDatos`.* TO 'miUser'@'localhost'
GRANT ALL PRIVILEGES ON `miBase`.* TO 'miUser'@'localhost' 


2. Revocar privilegios
Para revocar privilegios se emplea la función REVOKE, su sintaxis es muy parecida a la de GRANT, he aquí la forma de utilizarla.

mysql> REVOKE ALL ON miBase.* FROM miUser@localhost

Este comando quitara todos los privilegios sobre todos los elementos de la base de datos miBase al usuario miUser.

Con REVOKE se pueden quitar privilegios sobre elementos en particular de las bases de datos. Su sintaxis de acuerdo al manual oficial de MySQL es:

REVOKE
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    FROM user [, user] ...

Para asignar privilegios y borrar usuarios, puedes consultar el siguiente enlace:
http://mgermano.blogspot.mx/2014/04/crear-y-borrar-usuarios-de-mysql-por.html

viernes, 8 de agosto de 2014

Sensibilidad de mayusculas y minusculas en nombres de tablas MySQL

Hace poco me encontré con un problema al pasar una base de datos de Windows a Linux, el problema fue que en Windows los nombres de las bases de datos y las tablas no son sensibles a mayúsculas y minúsculas, una posible solución seria manejar todo en minusculas para que no exista ese problema, pero sabemos que eso, sobre todo si se tiene un estandar de base de datos, no es una solución viable.

La solución es cambiar el valor a una variable de MySQL: lower_case_table_names. He aqui una explicación obtenida del manual de referencia de MySQL.

Valor Significado
0 Los nombres de tablas y bases de datos se almacenan en disco usando el esquema de mayúsculas y minúsculas especificado en las sentencias CREATE TABLE o CREATE DATABASE. Las comparaciones de nombres son sensibles a mayúsculas. Esto es lo predeterminado en sistemas Unix. Nótese que si se fuerza un valor 0 con --lower-case-table-names=0 en un sistema de ficheros insensible a mayúsculas y se accede a tablas MyISAM empleando distintos esquemas de mayúsculas y minúsculas para el nombre, esto puede conducir a la corrupción de los índices.
1 Los nombres de tablas se almacenan en minúsculas en el disco y las comparaciones de nombre no son sensibles a mayúsculas. MySQL convierte todos los nombres de tablas a minúsculas para almacenamiento y búsquedas. En MySQL 5.0, este comportamiento también se aplica a nombres de bases de datos y alias de tablas. Este valor es el predeterminado en Windows y Mac OS X.
2 Los nombres de tablas y bases de datos se almacenan en disco usando el esquema de mayúsculas y minúsculas especificado en las sentencias CREATE TABLE o CREATE DATABASE, pero MySQL las convierte a minúsculas en búsquedas. Las comparaciones de nombres no son sensibles a mayúsculas.Nota: Esto funciona solamente en sistemas de ficheros que no son sensibles a mayúsculas. Los nombres de las tablas InnoDB se almacenan en minúsculas, como cuandolower_case_table_names vale 1.

1. Para verificar que valor tiene esta variable, podemos hacerlo de 3 formas:
  a) buscar la opción de mostrar variables (show variables) en nuestro cliente de MySQL
  b) en la pestaña variables mediante phpMyAdmin buscarla
  c) entrar mediante la consola de comandos a mysql y escribir el siguiente comando:
  mysql> show variables like "%lower%";

2. En Windows por defecto el valor es 1, para cambiar el valor podemos usar el phpMyAdmin, si es que tenemos un usuario con los suficientes privilegios, y mediante la pestaña variables podemos editarla cambiando su valor a 0, posterior a ello tendremos que reiniciar el servicio de MySQL.

En caso de no tener phpMyAdmin o el usuario, habrá que ubicar el archivo de configuración de MySQL (my.ini o my.cnf), la ubicación dependerá de la versión y como hayan instalado, he aquí algunas ubicaciones donde podría estar:

c:\Windows\my.ini
c:\ruta_de_mysql\MySQL\my.ini
c:\Program Data\MySQL\MySQLversion\my.ini


Editamos este archivo actualizando o agregando la siguiente linea en caso de que no exista:
[mysqld]
...
lower_case_table_names = 0


Guardamos y reiniciamos nuestro servicio MySQL. Verificamos que el valor de nuestra variable este en 0.

Posterior a ello tendremos que renombrar nuestras bases de datos y/o tablas sensibles a mayúsculas y minúsculas antes de hacer una migración a nuestro servidor en producción de Linux.

miércoles, 16 de julio de 2014

Actualizar Tomcat 6 al 7 en Ubuntu

Aquí describiremos como actualizar nuestro Tomcat 6 a la versión 7, esta actualización conservara nuestros archivos en webapps, sin embargo se recomienda realizar un respaldo de nuestras aplicaciones para evitar alguna perdida.

Primero detenemos el servicio de tomcat que tenemos en nuestro servidor, posteriormente para actualizar solo escribimos el siguiente comando:

$ sudo apt-get purge tomcat6 && sudo apt-get autoremove && sudo apt-get install tomcat7

Iniciamos nuestro servicio, después solo tendremos que copiar nuestras aplicaciones a la nueva ruta de tomcat: /var/lib/tomcat7/webapps, posterior a ello sera necesario instalar las herramientas de administración y configurar nuestros usuarios en /etc/tomcat7/tomcat-users.xml. (http://mgermano.blogspot.mx/2014/04/configurar-usuario-admin-en-tomcat.html)

$ sudo apt-get install tomcat7-admin

jueves, 26 de junio de 2014

Instalar Tomcat 6 en Ubuntu

Instalar tomcat en Ubuntu es más sencillo que en CentoOs, aquí describimos los pasos a seguir:

1. Instalamos nuestro servidor mediante el siguiente comando

$ sudo apt-get install tomcat6

De esta forma se instalara el servidor con ROOT webapp que muestra una página sencilla que dice It works (http://localhost:8080).

Por defecto el tomcat trabaja en el puerto 8080 (conector http), si deseas cambiarlo, toda la configuración del tomcat se encuentra en /etc/tomcat6/server.xml, las lineas a modificar serian las siguientes:
<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000"
           redirectPort="8443" />

2. Para que tomcat trabaje tenemos que tener instalado el JDK, lo hacemos mediante la siguiente linea:

$ sudo apt-get install default-jdk

3. Para la administración del tomcat instalamos el paquete correspondiente:

$ sudo apt-get install tomcat6-admin

Podemos instalar también la documentación y ejemplos del tomcat:

$ sudo apt-get install tomcat6-docs tomcat6-examples

4. Antes de reiniciar nuestro servidor, no se olvide que tenemos que crear nuestro usuario de administración del tomcat, como se describe en: http://mgermano.blogspot.mx/2014/04/configurar-usuario-admin-en-tomcat.html, y tendremos nuestro servidor tomcat listo para trabajar (http://localhost:8080).

$ sudo service tomcat6 restart




martes, 3 de junio de 2014

Montar particiones al inicio en Linux

1. Primero tenemos que identificar que partición es la que vamos a montar con el siguiente comando:

$ sudo fdisk -l
Disco /dev/sda: 500.1 GB, 500107862016 bytes
Identificador del disco: 0x40a6023f

Disposit. Inicio    Comienzo    Fin    Bloques  Id    Sistema
/dev/sda1    *       2048    206847    102400    7    HPFS/NTFS/exFAT
/dev/sda2          206848 204799999 102296576    7    HPFS/NTFS/extFAT
/dev/sda3       204800000 400112499  97656250   83    Linux
/dev/sda4       400112500 404113407   1999872   82    Linux swap
La partición que usaremos sera la /dev/sda3

2. Identificamos el UUID (Universally Unique IDentifier) con el siguiente comando

$ sudo blkid /dev/sda3
/dev/sda3: UUID="8ff9f53e-732c1935aa" TYPE="ext4"

3. Creamos una carpeta donde se montara la partición dentro de /media, en este caso la llamaremos appweb

$ sudo mkdir /media/appweb

4. Editamos el archivo fstab para que se monte inicialmente

$ sudo nano /etc/fstab

Ahora dependiendo del tipo de partición configuramos según sea el caso:
# <file system>  <mount point>  <type>  <options>  <dump>  <pass>
NTFS
UUID=8ff9f53e-732c1935aa  /media/appweb  ntfs-3g default 0 0

FAT
UUID=8ff9f53e-732c1935aa  /media/appweb  vfat rw,uid=1000,gid=1000 0 0

Ext4
UUID=8ff9f53e-732c1935aa  /media/appweb  ext4  errors=remount-ro 0 1
En este caso nuestra partición es Ext4, recuerda agregar tu UUID y la carpeta donde montaras esta partición, así como los espacios en blanco se refieren a tabuladores.

Guardamos nuestro archivo y reiniciamos nuestro servidor, al cargar nuestro sistema deberíamos tener montada nuestra partición.

Directorios virtuales para Apache en Ubuntu

Cuando instalamos apache, la carpeta por defecto donde alojamos nuestras aplicaciones se encuentra en /var/www, pero en la práctica es mejor tener un directorio donde montar nuestras aplicaciones, a continuación describiremos los pasos a seguir.

1. Creamos la carpeta donde alojaremos nuestras aplicaciones, aquí por ejemplo creamos una carpeta llamada appweb dentro de nuestro home de usuario.

$ sudo mkdir /home/miusuario/appweb

2. Definimos y configuramos nuestro directorio virtual, para ello creamos un archivo con un nombre que haga referencia a nuestro directorio dentro de /etc/apache2/sites-available.

$ cd /etc/apache2/sites-available
$ sudo nano appweb.conf

Dentro de este archivo agregamos las siguientes lineas

# domain appweb
# public /home/miusuario/appweb

<VirtualHost *:80>
# definimos como accederemos al directorio
ServerName appweb
ServerAlias appweb

DirectoryIndex index.php index.html
# definimos el directorio donde estaran las aplicaciones
Documentroot /home/miusuario/appweb

# definimos nuestro log de acceso y de errores
ErrorLog /home/miusuario/appweb/log/error_log.log
CustomLog /home/miusuario/appweb/log/access_log.log combined

# definimos los permisos en nuestro directorio
<Directory /home/miusuario/appweb/>
    Options All
    Require all granted
</Directory>
</VirtualHost>

Terminado de agregar las líneas, guardamos nuestro archivo.

Nota: La configuración de los permisos es para Apache 2.4, para versiones anteriores debe cambiar dentro del Directory a las siguientes lineas:

<Directory /home/miusuario/appweb/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

3. Creamos los archivos del log dentro de nuestro directorio ya que no existen.

$ sudo touch /home/miusuario/appweb/log/error_log.log
$ sudo touch /home/miusuario/appweb/log/access.log

4. Ahora activamos el directorio

$ sudo a2ensite appweb

5. Después tenemos que configurar el archivo hosts en /etc

$ sudo nano /etc/hosts

en el archivo agregamos nuestro sitio:

127.0.0.1    localhost
127.0.0.1    appweb

# The following lines are desirable for IPv6 capable hosts

6. Ahora reiniciamos o cargamos nuevamente la configuración de nuestro servidor apache

$ sudo service apache2 restart
   ó
$ sudo service apache2 reload

7. Por ultimo creamos un index.php agregandole la función phpinfo() en nuestro directorio virtual /home/miusuario/appweb, lo guardamos y probamos desde nuestro navegador

http://appweb

y nos debería listar la configuración de nuestro PHP.

Nota: si la carpeta donde guardaras tus aplicaciones se encuentra en /media y no se monta al inicio cuando arrancas tu servidor, podría generarte un error de permisos, por lo cual recomiendo que se monte esta unidad al arrancar el sistema, como se describe en el siguiente post: Montar particiones al inicio en linux


miércoles, 21 de mayo de 2014

Agregar headers de expiración (Add Expires headers)

Los encabezados (headers) de expiración nos sirven para indicar cuando expira un determinado tipo de archivo, esto hace que no sea necesaria una nueva carga del mismo si es que aun no ha expirado. Esto es muy útil para archivos del tipo imagen, vídeo, javascript y hojas de estilo entre otros, ya que nos reduce las solicitudes HTTP lo que nos lleva a la carga de nuestra página en un menor tiempo.

Si tenemos acceso a nuestro servidor podremos editar el archivo de configuración del apache.

Para CentOS, RedHat Fedora
$ sudo nano /etc/httpd/conf/httpd.conf

Para Ubuntu, Debian
$ sudo nano /etc/apache2/apache2.conf

Si no tuviesemos acceso al servidor podemos editar el archivo .htaccess de nuestro sitio o crearlo en caso de que no exista.

$ sudo nano /larutademisitio/.htaccess
Para cualquiera de los casos dentro del archivo, las lineas que debemos agregar o editar son las siguientes:

<IfModule mod_expires.c>
# Habilitar la expiración
ExpiresActive On

# Para las imágenes (1 mes)
ExpiresByType image/gif "access plus 1 months"
ExpiresByType image/png "access plus 1 months"
ExpiresByType image/jpg "access plus 1 months"
ExpiresByType image/jpeg "access plus 1 months"

# Para archivos CSS (1 semana)
# 60*60*24*7, de acuerdo a la modificación del archivo
ExpiresByType text/css M604800

# Para archivos JavaScript (2 meses)
ExpiresByType application/javascript "access plus 60 days"

# Directiva por default para los demás archivos
ExpiresDefault "access plus 1 months"

</IfModule>

Puedes adecuar el tiempo en que expirara cada archivo de acuerdo a tus necesidades, como recomendación es mejor darle mas tiempo a aquellos archivos que no cambien regularmente como las imagenes o javascript.

Posterior a ello, guardamos el archivo y reiniciamos el servicio de apache.

Para Ubuntu, Debian
$ sudo service apache2 restart

Para Centos, RedHat, Fedora
$ sudo service httpd restart

Nota: 
A continuación listamos los tipos de expiración que podemos agregar
  • years
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds
Así por ejemplo podemos colocar "access plus 4 weeks" para indicar que durara 4 semanas. 

También es posible asignar el tiempo de forma manual multiplicando segundos, minutos, horas, días según sea el caso. Por ejemplo para indicar 30 dias, seria 60(segundos) * 60(minutos) * 24 (horas) * 30 (días) = A2592000.

Ahora podemos usar M o A según se ajuste a nuestra necesidades:

  • M - Tiempo base sería la ultima modificación del archivo
  • A - Tiempo base sería el ultimo acceso del usuario al archivo

miércoles, 14 de mayo de 2014

Instalación y configuración de vsftpd en Linux

VSFTPD (Very Secure FTP Daemon) se utiliza para implementar servidores de archivos a través del protocolo de transferencia de archivos FTP (File Transfer Protocol), de esta forma tendremos un servidor rápido, ligero, seguro y de fácil configuración.

Instalación


Para instalarlo, solo tenemos que escribir el siguiente comando en nuestra consola:

Para CentOs, Fedora o RedHat
$ sudo yum -y install vsftpd

Para Ubuntu, Debian
$ sudo apt-get install vsftpd

Configuración


Una vez que tenemos instalado el vsftpd procederemos a configurarlo, crear usuarios y enjaularlos.

1. Editaremos el archivo vsftpd.conf que se encuentra en /etc/vsftpd/,

$ sudo nano /etc/vsftpd/vsftpd.conf

El archivo es fácil de entender, pero aquí explicaremos lo básico para configurar nuestro servidor FTP.

Usuario anónimo
Por defecto viene como YES, lo cambiamos a NO para no permitir el acceso de usuarios anónimos.
anonymous_enable=NO

Mensaje de Bienvenida
Aqui podemos colocar un mensaje de bienvenida al conectarse por FTP
ftpd_banner=Bienvenida al servidor FTP de pruebas

Permitir escritura en el servidor
Esta opción es importante ya que nos permitirá escribir en el servidor, por defecto viene como YES.
write_enable=YES

Sesiones locales
Permite que los usuarios locales puedan también iniciar sesión.
local_enable=YES

Enjaular usuarios
Aquí vienen tres lineas importante para enjaular a los usuarios y restringir el acceso a otras carpetas que no sean su directorio HOME.

Evita que los usuarios registrados puedan salir de su directorio HOME
chroot_local_user=YES

Habilita la lista de usuarios que serán enjaulados
chroot_list_enable=YES

Ruta de la lista de usuarios a enjaular, este archivo no existe lo crearemos después.
chroot_list_file=/etc/vsftpd/chroot_list

2. Creamos el archivo chroot_list en /etc/vsftpd/

$ sudo touch /etc/vsftpd/chroot_list
$ sudo nano /etc/vsftpd/chroot_list

En el archivo solo agregamos en forma de lista los usuarios a enjaular, una ves terminado de agregar, guardamos los cambios.
usuario1
usuarioftp2
otrousuario

3. Creamos los usuarios ftp
$ sudo useradd -d /var/www/html/homeusuario1 -s /bin/false -g ftp usuario1

-d, indicamos la carpeta HOME del usuario
-s, indicamos el shell del usuario
-g, indicamos el grupo al que pertenecerá el usuario

Nota:
Podemos colocar tanto /bin/false como /sbin/nologin en el shell del usuario con la finalidad de impedir el acceso al shell completo,  cada uno con algunas diferencias, /sbin/nologin evita la entrada por consola y ssh, en cambio /bin/false evita la entrada por consola, ssh y ftp, por eso en nuestro caso usaremos /bin/false ya que es mas restrictivo.

Sin embargo vsftpd utiliza PAM (Pluggable Authentication Modules) para autentificar a los usuarios y por ello no admite ningun shell que no este listado en /etc/shells, para ello tendremos que agregar este shell a nuestro archivo.

$ sudo nano /etc/shells

en el archivo agregamos /bin/false y guardamos los cambios
...
/bin/tcsh
/bin/csh
/bin/ksh
/bin/false
Sino realizamos estos cambio no podremos ingresar a través de FTP, mostrandonos un error de login del usuario.

4. Agregamos la contraseña al usuario
# passwd usuario1
Changing password for user usuario1
New UNIX password:

5. Iniciamos el servicio FTP
Iniciamos nuestro servicio vsftpd con cualquiera de los dos comandos:

# service vsftpd start
ó
# /etc/init.d/vsftpd start

Nota:
Es necesario verificar que el puerto 21 por TCP no este bloqueado en nuestro firewall, para ello tenemos que checarlo en nuestro servicio iptables.

6. Probamos nuestro servidor FTP
Podemos probar que todo funcione correctamente accesando a través de nuestro navegador con la IP de nuestro servidor (ftp://190.190.200.1)  donde se nos pedirá un usuario y contraseña que serán los que agregamos en el paso 4. Como observaremos solo tendremos acceso a nuestra carpeta HOME permitida.


Podemos también usar otro software como Filezilla© o el complemento Fireftp de Mozilla Firefox©.

Actualización 13/Abril/2016
Si se cuenta con un firewall perimetral para no abrir todos los puertos al permitir un FTP Pasivo, realizar las siguientes modificaciones:

1. Permitir un rango de puertos para la conexión del FTP Pasivo, para ello agregamos las siguientes lineas al archivo /etc/vsftpd/vsftpd.conf. El rango puede ser del 1024 al 65535, este rango es el que se debe habilitar en nuestro firewall perimetral.

pasv_min_port=60000
pasv_max_port=60009

2. Para no realizar más cambios a IPTABLES podemos utilizar el módulo Connection Track FTP, el cual abrira y cerrara el puerto (del rango definido) necesario para realizar la conexión mediante el siguiente comando:

/sbin/modprobe ip_conntrack_ftp

Si se desea que este comando sea persistente desde el inicio, habrá que agregar la línea anterior al archivo /etc/rc.local

martes, 6 de mayo de 2014

Solucionar el error "Got a packet bigger than 'max_allowed_packet' bytes" en MySQL

Cuando importamos o realizamos una carga de datos a una instancia ya existente en MySQL, y se nos muestra un error como el siguiente:

ERROR 1153 (08S01) at line 625: Got a packet bigger than 'max_allowed_packet' bytes

Es porque desde nuestro cliente enviamos un paquete mayor del que esta configurado nuestro servidor, por defecto esta variable (max_allowed_packet) esta configurada con 1Mb. Tanto el cliente como el servidor tienen su propia variable max_allowed_packet así que si se desea gestionar paquetes grandes, se debe aumentar esta variable tanto en el cliente como en el servidor.

A) Para cambiar esta variable en nuestro servidor tenemos que modificar el archivo my.cnf (my.ini en Windows),

$ sudo nano /etc/my.cnf

y cambiar el tamaño de la variable o agregarla si es que no existe:

[mysqld]
max_allowed_packet = 16M

En versiones inferiores a MySQL 4.0 el tamaño maximo permito es de 16Mb, en versiones superiores es de 1GbEs seguro incrementar el valor de esta variable porque la memoria extra tan solo es utilizada cuando se necesita.

Despues de modificar el archivo, tendremos que reiniciar nuestro servicio:

$ sudo service mysqld restart

B) Para cambiar la configuración del cliente, solo necesita en su instancia indicar el tamaño a usar, aunque una vez configurado nuestro servidor ya no sera necesario en nuestro cliente:

mysql> mysqld --max_allowed_packet=16Mb




viernes, 25 de abril de 2014

Actualizar manualmente phpMyAdmin en Linux

Explicaremos como actualizar de forma manual el phpMyAdmin a la versión más reciente, para ello primero bajaremos el paquete comprimido mas actual de la siguiente dirección http://www.phpmyadmin.net/home_page/downloads.php, antes de ello tendremos que verificar los requerimientos mínimos del paquete. En mi caso bajare la versión 4.1.13 donde se indica que se requiere como mínimo PHP 5.2 y MySQL 5, aunque se recomienda PHP 5.3 y MySQL 5.5. Les recomiendo que el archivo que bajemos se descomprima por consola en nuestro servidor.

1. Subir el archivo a nuestro servidor
Puede ser en nuestra carpeta home o directamente en la ubicación del phpMyAdmin: /usr/share

2. Renombrar el phpMyAdmin anterior

$ sudo mv /usr/share/phmyadmin /usr/share/phpmyadmin-backup

Esto con la finalidad de tener un respaldo por si algo llega a salir mal.

3. Descomprimir el archivo
La ruta donde lo tenemos que descomprimir es en /usr/share

$ sudo tar -xvf phpMyAdmin-4.1.13-all-languages.tar.gz

Renombramos la carpeta que se genero al descomprimir como: phpMyAdmin

$ sudo mv phpMyAdmin-4.1.13-all-languages phpMyAdmin

4. Probamos el acceso a phpMyAdmin

En el navegador probamos que podamos acceder: http://localhost/phpMyAdmin, y listo ya tenemos phpMyAdmin actualizado.

Una vez que no existan problemas al acceder, podemos eliminar el archivo comprimido (.tar.gz) y el phpMyAdmin con la versión anterior (phpMyAdmin-backup). Recordemos que en caso que se requiera editar la configuración podemos acceder a /etc/phpmyadmin/config.inc.php el cual es nuestro archivo de configuración del phpMyAdmin.

jueves, 24 de abril de 2014

Instalar FreeTDS en Ubuntu para usar mssql en PHP

A partir de PHP 5.3 la extensión (mssql) para permitir el acceso a base de datos MS SQL Server ya no esta disponible en Windows, en lugar de ello tendremos que usar la extensión de ODBC pero ese es otro tema, aqui veremos una opción para acceder a bases de datos de SQL Server utilizando la libreria FreeTDS (Tabular Data Stream).

FreeTDS es un conjunto de librerias distribuidas libremente bajo licencia GNU/GPL, que nos permite comunicar PHP con bases de datos de SQL Server y Sybase.

1. Desde linea de comandos instalamos freeTDS asi como la libreria sybase de PHP

$ sudo apt-get install freetds-common freetds-bin tdsodbc php5-sybase

Reiniciamos nuestro servidor web y probamos en el navegador, creando un archivo php con la función phpinfo(), verificando que la libreria mssql se encuentra ya instalada.



2. Configuramos FreeTDS
Editamos el archivo freetds.conf que se encuentra en /etc/freetds

$ sudo nano /etc/freetds/freetds.conf

Dentro del archivo vienen algunos ejemplos de configuración, he aquí un ejemplo de como configurar:

[nombreservidor]
host = 100.100.100.1
port = 1433
tds version = 7.2

con [nombreservidor] es como haremos referencia a nuestro servidor , en host agregamos nuestra IP del servidor, el puerto (port) para servidores de SQL Server es el 1433, tds version es la versión del SQL que estaremos usando.
  1.  7.0 -- Microsoft SQL Server 7
  2.  7.1 -- Microsoft SQL Server 2000
  3.  7.2 -- Microsoft SQL Server 2005 o posterior
Una vez terminado de configurar el archivo, lo guardamos.

3. Probando nuestra conexión
Para ver si todo esta correcto realizamos una prueba:

$ tsql -S nombreservidor -U usuariosql

en seguida se pedira el password, si no hay problema, habremos ingresado a nuestro servidor SQL. Recordemos que nombreservidor es nuestra referencia que ingresamos en nuestro archivo de configuración freetds.conf.

4. Probando nuestra conexión en PHP
Ya tenemos todo listo para comenzar a trabajar en php con mssql, podemos crear un archivo en php y probar nuestra conexion.

<?php
/** Conexión a SQL Server **/
$host    = "nombreservidor"; // esta es nuestra referencia
$usuario = "sa";
$pass    = "12345;
$bd      = "miBase";
$conexion = mssql_connect($host, $usuario, $pass);
if (!$conexion) die ("Error al conectar a SQL server");
mssql_select_db($bd) or die ("Error al seleccionar la Base de datos");
echo "Conexion establecida con éxito";
?>

Guardamos nuestro archivo y lo probamos en nuestro navegador, si no hubiese problemas debe mostrarse el mensaje de Conexión establecida con éxito.

Instalar Apache, PHP y MySQL en Ubuntu

Una vez que tenemos instalado Ubuntu, si deseamos tener un servidor Web, como Apache, con PHP y MySQL, he aquí explicaremos como realizar esta instalación mediante consola, cabe mencionar que es una instalación básica no tan segura y por lo tanto no recomendada para un servidor en producción, pero esto nos servirá para montar un servidor local para nuestros trabajos.

1. Instalamos el servidor Apache:
$ sudo apt-get install apache2 -y

El parametro -y no pregunta y asume que si a todo. Una vez que termina de instalar podemos probar en nuestro navegador con:
http://localhost ó http://127.0.0.1
nos aparecerá un mensaje que nuestro servidor se encuentra trabajando.

2. Instalamos PHP 5
$ sudo apt-get install php5 libapache2-mod-php5 -y

Una vez instalado, reiniciamos nuestro servidor web
$ sudo service apache2 restart
o bien
$ sudo /etc/init.d/apache restart

El directorio por default para subir todas nuestras aplicaciones de php sera en: /var/www, en lo posterior tendremos que tener un usuario que tenga permisos sobre esta carpeta, por el momento en esta carpeta podremos probar si el php esta función, creando un archivo con la función phpinfo(), por ejemplo

$ sudo nano info.php

dentro del archivo colocamos las lineas:

<?php    phpinfo();    ?>

Lo guardamos (ctrl + x), cargamos nuestra página en el navegador (http://localhost/info.php) y nos debe mostrar la configuración de nuestro servidor web.

3. Instalamos MySQL 5
$ sudo apt-get install mysql-server mysql-client -y

Casi al terminar la instalación se nos pedirá la contraseña del root y su confirmación, es muy importante recordar esta contraseña y no perderla. Para probar la instalación tendremos que accesar a nuestro servidor MySQL.
$ mysql -u root -p

Acto seguido se pedira la contraseña que será la que ingresamos en la instalación, la ingresamos y listo tenemos nuestro servidor MySQL instalado.

4. Instalar modulos faltantes de PHP
En seguida tendremos que instalar todos los módulos que hacen falta, entre ellos va el soporte de la librería GD, CURL, MySQL, etc.
$ sudo apt-get install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl -y

Una vez terminada la instalación tendremos que reiniciar nuevamente nuestro servidor web, como ya se describio en las lineas anteriores, y listo ya tenemos instalado Apache, PHP y MySQL.

miércoles, 9 de abril de 2014

Configurar usuario admin en Tomcat

Una vez que tenemos instalado nuestro servidor Tomcat, ahora es necesario configurar un usuario admin para subir, arrancar, detener o simplemente ver nuestras aplicaciones. Para ello tenemos que editar el archivo tomcat-users.xml que se encuentra en nuestra carpeta de configuración del Tomcat (por ejemplo /etc/tomcat6/).

Dentro de los tag <tomcat-users> creamos el role de manager, seguido de la linea donde agregamos los datos de usuario, quedando de la siguiente forma:

<!--
  NOTE:  By default, no user is included in the "manager-gui" role required
  to operate the "/manager/html" web application. If you wish to use this app,
  you must define such a user - the username and password are arbitrary.
-->
<tomcat-users>

    <role rolename="manager" description="Tomcat Manager"/>
    <user username="admin" password="MiPassword" roles="manager"/>

</tomcat-users>

Después de editar el archivo, guardarlo y reiniciar el Tomcat.

# service tomcat6 restart

Para usuarios del tomcat 7 los roles requeridos para administrar la aplicación fueron cambiados.

    <role rolename="manager-gui" description="Tomcat Manager"/>
    <user username="admin" password="MiPassword" roles="manager-gui"/>

Cabe mencionar que en tomcat7 existen roles específicos del manager:
  • manager-gui, interfaz gráfica en HTML y estatus de las aplicaciones
  • manager-script, interfaz en modo texto y estatus de las aplicaciones
  • manager-jmx, accesar al proxy JMX(Java Managment eXtensions) y estatus de las aplicaciones
  • manager-status, solo el estatus de las aplicaciones

lunes, 7 de abril de 2014

Evitar listado de directorios en Apache

Cuando recién instalamos nuestro servidor, por default viene con la característica de permitir el listado de directorios, el prevenirlo, nos permitirá tener una mayor seguridad en nuestro sitio.

Existen varias opciones para ello, una forma "rápida" y sencilla es crear un index (htm, html ó php) en cada directorio y subdirectorio de nuestro sitio, sin embargo podemos tener decenas de ellos lo cual seria una tarea laboriosa y tendríamos que estar agregando un index cada vez que agreguemos uno nuevo. Ahora dependiendo del acceso que tengamos a nuestro servidor tendremos dos opciones que se listan a continuación:

A. Crear un archivo .htaccess

Mediante consola, creamos un archivo llamado .htaccess en la raíz de nuestro sitio y agregamos la siguiente linea:

Options -Indexes

Lo guardamos, y con esto evitaremos que cualquier directorio que se encuentra abajo del principal liste su contenido. Esta opción es útil cuando no tenemos acceso a la configuración de nuestro servidor.

B. Modificar el archivo de configuración de Apache

En esta opción se tiene que modificar el archivo de configuración de nuestro servidor apache (httpd.conf), para ello buscamos en el archivo la linea Options Indexes FollowSymLinks:

# The option directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mode/core.html#options
# for more information.
#
Option Indexes FollowSymLinks

Una vez ubicada la linea agregaremos el caracter (-) a Indexes, quedando de la siguiente forma:

Option -Indexes FollowSymLinks

guardamos el archivo y reiniciamos nuestro servidor apache

# service httpd restart

Ahora probamos poniendo la dirección de nuestro servidor en el navegador e intentar acceder a un directorio como el de imágenes, y nos mostrara un mensaje indicando que no tenemos permiso para listar ese directorio.


viernes, 4 de abril de 2014

Importar y Exportar bases de datos MySQL por consola en Linux

Existen muchas formas de administrar el MySQL, desde la linea de comandos, usando el phpMyAdmin, hasta un software de terceros como HeidiSQL, SQLYog, MySQL Workbench entre otros, el utilizar cada una tiene sus ventajas y desventajas.

A continuación veremos como importar y exportar a través de la linea de comandos. Para ello necesitaremos iniciar una conexión remota con SSH y acceder como root o un usuario con suficientes privilegios.

Importar


Para importar una base de datos, primero es necesario subir el archivo sql que contiene la información (puede realizarse por FTP), y puede almacenarse en nuestra carpeta home. En seguida colocar el siguiente comando para importar la base de datos:

$ mysql -u miusuario -p nombreMiBd < miArchivoSQL.sql

Se pedirá a continuación la contraseña del usuario de MySQL, una vez introducida, comenzará el proceso de importación que será de pocos segundos. Esta forma es muy útil para subir base de datos de un tamaño grande.

Exportar


Para exportar una base de datos, primero tenemos que ubicarnos en la carpeta donde se realizará la exportación que puede ser nuestra carpeta home que después podremos bajar vía FTP. El comando para exportar es el siguiente:

$ mysqldump -u miusuario -p nombreMiBd > miArchivoSQL.sql


En seguida se pedirá la contraseña y acto seguido comenzara la exportación que igual durara unos pocos segundos.

Nota:
Se puede realizar tanto la importación como exportación a un servidor remoto desde nuestro servidor, para ello agregamos el parametro -h donde pondremos nuestro servidor remoto (ya sea por dominio o IP):

$ mysqldump -u miusuario -p -h www.miservidorremoto.net nombreMiBd > miArchivoSQL.sql

Este comando exportara la base de datos nombreMiBd del servidor www.miservidorremoto.net al archivo miArchivoSQL.sql en la carpeta de nuestro servidor. Para permitir esta acción tiene que estar habilitado el acceso remoto del servidor MySQL.

Si al importar la información llegase a salir el error de Got a packet bigger than 'max_allowed_packet' bytes, puedes checar la solución en mi siguiente post http://mgermano.blogspot.mx/2014/05/solucionar-el-error-got-packet-bigger.html

jueves, 3 de abril de 2014

Crear y borrar usuarios de MySQL por consola

Existen 4 formas diferentes de crear y/o modificar usuarios en MySQL:
  1. La sentencia GRANT
  2. La sentencia CREATE USER
  3. Insertando directamente en la tabla user
  4. Utilizando un administrador de MySQL como SQLyog
He aquí unas recomendaciones para crear usuarios, según la documentación oficial de MySQL:
  • Los nombres de usuario pueden tener un máximo de 16 caracteres.
  • Si se utiliza el modificar directamente la tabla user, tener cuidado de no modificar la estructura de ninguna tabla de la base mysql.

CREAR USUARIOS:

Aquí veremos como crear usuarios con la primer opción: grant
La sentencia grant nos permite crear cuentas de usuarios para MySQL y darles permiso, esta información es almacenada en las tablas de la base mysql. Primero tenemos que ingresar a nuestro servidor de base de datos como root o con una cuenta con nivel de root.

$ mysql -u root -p

Con grant se pueden asignar permisos a diferentes niveles, he aquí algunos ejemplos:

Nivel Global
En este ejemplo se crea un usuario llamado usuario con la contraseña miclave que tiene permisos sobre todas las bases de datos de nuestro servidor
mysql> GRANT ALL ON *.* TO 'usuario'@'localhost' IDENTIFIED BY 'miclave';

Nivel de Base de datos
En este ejemplo se crea un usuario llamado usuario1 con la contraseña miclave que tiene permisos sobre todas las tablas de la base de datos mibase
mysql> GRANT ALL ON mibase.* TO 'usuario1'@'localhost' IDENTIFIED BY 'miclave';

Nivel de Tabla
En este ejemplo se crea un usuario llamado usuario2 con la contraseña miclave que tiene permisos sobre la tabla mitabla de la base de datos mibase
mysql> GRANT ALL ON mibase.mitabla TO 'usuario2'@'localhost' IDENTIFIED BY 'miclave';

Con grant podemos también indicar que tipo de permisos un usuario tendrá sobre un objeto, en el siguiente ejemplo creamos un usuario que tiene permisos de seleccionar e insertar en la tabla tabla1 de la base de datos mibase2:
mysql> GRANT SELECT, INSERT ON mibase2.mitabla1 TO 'miusuario'@'localhost' IDENTIFIED BY 'miclave';
Nota:
Después del @ nosotros indicamos el contexto del usuario, en los ejemplos anteriores todos los usuarios podrán conectarse solo por la maquina local (localhost), es decir, que se impedirá conectarse de forma remota. Si queremos que se conecte el usuario desde cualquier equipo tendra que agregar el caracter %.
mysql> GRANT ALL ON mibase.* TO 'usuario'@'%' IDENTIFIED BY 'miclave';
ELIMINAR USUARIOS

Para eliminar usuarios utiliza el comando DROP USER, para utilizar este comando debe tener el permiso global de CREATE USER o el permiso DELETE para la base de datos mysql. Para borrar una cuenta y sus permisos la sintaxis es la siguiente:

mysql> DROP USER miusuario;

Si tiene el mismo usuario en diferentes ámbitos, solo necesitara especificar el usuario deseado en el ámbito correcto:

mysql> DROP USER miusuario@localhost;

NOTA:
En MySQL 5.0.0 DROP USER solo borra cuentas que no tienen permisos, para eliminar completamente la cuenta incluyendo sus permisos en estas versiones, tendrá que usar SHOW GRANTS para ver que permisos tiene ese usuario y con REVOKE tendrá que revocar sus permisos. A partir de MYSQL 5.0.2 ya se pueden eliminar cuentas que tienen permisos.

PERMISOS

PermisoSignificado
ALLDa todos los permisos simples, excepto GRANT OPTION
ALTERPermite el uso de ALTER TABLE
CREATEPermite el uso de CREATE TABLE
CREATE USERPermite el uso de CREATE USER, DROP USER, RENAME USER y REVOKE ALL PRIVILEGES
CREATE VIEWPermite el uso de CREATE VIEW
DELETEPermite el uso de DELETE
DROPPermite el uso de DROP TABLE
INSERTPermite el uso de INSERT
SELECTPermite el uso de SELECT
UPDATEPermite el uso de UPDATE
GRANT OPTIONPermite dar privilegios

miércoles, 12 de marzo de 2014

Instalar phpMyAdmin en Centos 5.x

Ya que tenemos instalado y configurado nuestro servidor con apache, php y mysql, instalaremos el gestor de MySQL phpMyAdmin para administrar nuestras bases de datos.

1. Instalamos el phpMyAdmin con el siguiente comando:

# yum install phpmyadmin

Si nos aparece un mensaje indicando que no encuentra el paquete, entonces hay que instalar el repositorio EPEL (Extra Packages for Enterprise Linux).

CentOS/RHEL 5, 32 Bit (i386):
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

CentOS/RHEL 5, 64 Bit (x86_64):
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

Una vez instalado el repositorio intentamos nuevamente instalar el phpMyAdmin con el comando del paso 1. Este repositorio no tiene las versiones mas actuales del phpMyAdmin, he aqui las que podemos instalar:
  1. yum install phpmyadmin (instala la versión 2.11.11.3-2)
  2. yum install phpmyadmin3 (instala la versión 3.5.8.1-1)

2. Ahora configuraremos el phpMyAdmin para poder acceder de forma remota, para ello editamos el archivo phpMyAdmin.conf

# nano /etc/http/conf.d/phpMyAdmin.conf

Editamos la linea siguiente:
<Directory /usr/share/phpMyAdmin/>
     Order Deny,Allow
     Allow from All
     Allow from 127.0.0.1
     Allow from ::1
</Directory>

Con esta linea desde cualquier equipo se podrá acceder, en caso de que desees que solo sea de una maquina tendrás que negar el acceso a todos y permitir solo el de tu IP:

Deny from All
Allow from 192.168.1.2

Guardar el archivo y reiniciar el servidor Apache:
# service http restart

3. Ahora prueba accediendo desde tu navegador: http://miip_o_dominio/phpMyAdmin/

Ingresa tu usuario y contraseña, y listo el phpMyAdmin esta instalado.
Si deseas actualizar a la versión más reciente, puedes visitar este post: Actualizar manualmente phpmyadmin

martes, 11 de marzo de 2014

Instalar Tomcat 6 en Centos 5.10

1. Ingresar al directorio donde están nuestros repositorios, y agregar el repositorio de JPackage

# cd /etc/yum.repos.d
wget http://www.jpackage.org/jpackage50.repo

2. Revisamos si algunos de los canales están habilitados en el repositorio /etc/yum.repos.d/jpackage50.repo, en su caso activarlos (enabled=1):
  • jpackage-generic
  • jpackage-rhel
  • jpackage-generic-nonfree
  • jpackage-rhel-updates
  • jpackage-generic-nonfree-updates
3. Actualizamos

# yum update

Si durante la actualización se muestra un error similar a este: "Missing Dependency: /usr/bin/rebuild-security-providers is needed by package" podemos seguir las instrucciones para estas dependencias en: http://plone.lucidsolutions.co.nz/linux/centos/jpackage-jpackage-utils-compatibility-for-centos-5.x

4. Instalamos el Tomcat6

# yum install tomcat6 tomcat6-webapps tomcat6-admin-webapps

5. Corremos el servicio

# service tomcat6 start

y probamos en nuestro navegador para ver que se esta ejecutando de forma correcta:
http://localhost:8080 o http://nuestraip-o-dominio:8080



Listo tendremos nuestro servidor tomcat

Nota: Si hubiese algún problema para acceder remotamente desde otra máquina, tendremos que verificar el puerto 8080:

# telnet 10.1.2.1 8080

nos dará una salida como esta:
Trying 10.1.2.1...
Conected to 10.1.2.1.
Escape character is '^]'.

sino, habrá que permitirlo en el firewall:

# setup

ir a "Firewall Configuration"->"Customize"->"Other ports", agregar 8080:tcp ->Ok



después nos aseguramos que este activo y  reiniciamos nuestro servicio de tomcat

# chkconfig tomcat6 on
# service tomcat6 restart

martes, 4 de marzo de 2014

Comenzar con un proyecto de phonegap 3.x en Windows 7 con linea de comandos

PhoneGap es un framework para el desarrollo de aplicaciones móviles, utilizando herramientas genéricas tales como JavaScript, HTML5 y CSS3. Las aplicaciones resultantes son híbridas, es decir que no son realmente aplicaciones nativas al dispositivo. En la tercera versión de PhoneGap se incorpora el uso de una interfaz de comandos a través de consola, una nueva arquitectura de complementos descentralizados y la posibilidad de utilizar un código web unificado para crear múltiples proyectos. Aquí indicaremos lo que se requiere para iniciar un nuevo proyecto en este framework:

1. Instalar NodeJs:
http://nodejs.org

2. Instalar el SDK:
descomprimirlo y colocarlo todo en una carpeta o en c:\androidsdk
http://developer.android.com/sdk/

3. Instalar apache ant:
descomprimirlo y colocarlo todo en una carpeta o en c:\apacheant

4. Instalar un JDK:
http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

5. Configurar las variables de entorno

--- Añadir el SDK al PATH ---
agregar en el PATH de las variables del sistema, carpetasdk debe ser nuestra carpeta donde esta el SDK:
;c:\carpetasdk\adt-bundle\sdk\tools

--- Configurar la variable ANT_HOME ---
crear una nueva variable del sistema, carpetaapacheant debe ser nuestra carpeta donde esta el apache ant:
ANT_HOME con el valor c:\carpetaapacheant

Añadimos la variable ANT_HOME al path
;%ANT_HOME%\bin

--- Crear la varible JAVA_HOME ---
JAVA_HOME con el valor donde este instalado el JDK, por ejemplo: C:\Program Files\Java\jdk1.7.0_51

Una vez que tengamos configuradas todas nuestras variables, tenemos que reiniciar nuestro equipo

6. Instalar cordova o phonegap, para el caso es lo mismo
1) phonegap
npm install -g phonegap

2) cordova
npm install -g cordova

7. Probar que todo funcione correctamente
Creamos un proyecto con phonegap o cordova segun sea el caso:

1) phonegap
phonegap create MiDirectorio mx.phonegap.directorio "MiDirectorio"

2) cordova
cordova create MiDirectorio mx.cordova.directorio "MiDirectorio"

Entramos al directorio creado, en este caso:

cd MiDirectorio

Añadimos nuestra plataforma, android en este caso

1) phonegap platform add android

2) cordova platform add android

y por ultimo hacemos un build

1) phonegap build

2) cordova build

Si no nos marca un error, tenemos todo listo

8. Podemos usar eclipse para modificar nuestro proyecto

Nos vamos a File->New->Other...escogemos Android Project from Existing Code
buscamos el proyecto en nuestro directorio donde se creo, buscar en platforms la carpeta android.
Damos aceptar y listo ya tenemos nuestro proyecto phonegap para comenzar a trabajar

martes, 25 de febrero de 2014

Comprimir directorios(carpetas) en Linux desde consola

El comprimir directorios completos es muy útil para realizar backups o copias de seguridad, o restaurar información, ya que nos permite descargar o subir un solo archivo de forma más segura y comoda. Es muy facil realizar la compresión con el comando tar:

tar -czvf nombre_archivo.tar.gz directorio_a_comprimir

Donde:

  • c, crear un nuevo archivo
  • z, comprimir archivos usando gzip
  • v, mostrar el proceso durante la creación del archivo
  • f, nombre del archivo


Ahora, bien detallaremos como descomprimir dicho archivo por consola con el comando tar:

tar -xvf nombre_archivo.tar.gz

Donde:
  • x, extrae el contenido del archivo comprimido en el directorio actual
  • v, mostrar el proceso durante la creación del archivo
  • f, nombre del archivo

Entradas Populares