Archivo

Posts Tagged ‘MySQL’

Instalar un Servidor LAPP (Linux , Apache, PostgreSQL, PHP) en Debian 6

Partiendo de una instalación limpia de Debian 6 NetInstall procederemos a instalar y configurar un servidor LAPP (Linux+Apache+PostgreSQL+Php).

Usaremos las siguientes versiones mayores de cada componente:

  • Debian 6
  • Apache 2
  • Postgresql 9.1
  • Php 5

Iniciaremos la instalación siguiendo estos pasos:

1.- Instalar Apache 2 como servidor Web:

Instalaremos Apache usando el siguiente comando de la consola:

$sudo apt-get install apache2 apache2.2-common apache2-utils ssl-cert

Tras la instalación comprobaremos que el servidor web esta correctamente configurado escribiendo en nuestro navegador la url del servidor que en la mayoría de los casos será:

http://localhost

2.- Instalar PHP5 como lenguaje del lado del servidor:

De nuevo desde la consola ejecutaremos:

$sudo apt-get install php5 libapache2-mod-php5 php5-common

A continuación comprobaremos que PHP se ha instalado correctamente y que Apache es capaz mostrar las páginas escritas en este lenguaje. Para ello debemos crear un fichero simple de texto al que llamaremos info.php con el siguiente contenido:

<?php
   phpinfo();
?>

La función phpinfo() simplemente nos devuelve una tabla resumen de la configuración del servidor, por lo que resulta ideal para nuestros propósitos.

El fichero que acabamos de generar se debe guardar en el directorio raiz de publicación del servidor web, que habitualmente será :

/var/www/

Finalmente, antes de probar el correcto funcionamiento de PHP, debemos reiniciar el servidor web, para lo cual escribimos en la consola:

$sudo /etc/init.d/apache2 restart 

Llegados a este punto, deberiamos ver una página mostrando la configuración de PHP al escribir en nuestro navegador:

http://localhost/info.php

3.- Instalar PostgreSQL 9 como sistema gestor de bases de datos:

Instalar la versión 9 de este RDMS en Debian 6 presenta una pequeña dificultad añadida, ya que esta versión no esta por defecto en los repositorios de la versión estable de debian. La versión usada por los repositorios es la 8.4, que ya empieza a ser algo antigua.

Por ello para poder instalar esta versión en particular debemos recurrir al proyecto denominado debian-backports que básicamente es un conjunto de aplicaciones en sus ultimas versiones, compiladas con las bibliotecas “antiguas” de la versión estable de debian.

Más información sobre el proyecto aqui:
debian-backports

Lo primero que hemos de hacer, es añadir el repositorio de debian-backports a nuestro fichero /etc/apt/sources.list
Esto se consigue editando dicho fichero y añadiendo la línea:

deb http://backports.debian.org/debian-backports squeeze-backports main

Una vez añadida la línea, actualizamos los repositorios de apt escribiendo en la terminal el siguiente comando:

$sudo apt-get update

Finalmente, iniciamos la instalación escribiendo el siguiente comando:

$sudo apt-get -t squeeze-backports install postgresql-9.1

3.1- Configurar la contraseña del usuario postgres:

Una vez instalado PostgreSQL, debemos establecer la contraseña del usuario postgres, que es el usuario con los máximos privilegios dentro de la base de datos, una especie de root.

Primero hemos de asumir la identidad del usuario postgres:

$sudo su postgres

A continuación, accedemos al cliente de linea de ordenes de PostgreSQL:

$psql

El sistema nos permitirá entrar sin pedirnos usuario, puesto que somos el usuario postgres, y sin pedir contraseña, puesto que el usuario postgres por defecto no tiene contraseña.
Una vez dentro, escribiremos:

postgres=# alter user postgres with password ‘passwd’; 

donde passwd es la nueva contraseña que deseamos poner.El sistema debe responder con un:

 ALTER ROLE postgres=# 

Salimos del cliente de linea de ordenes con la orden:

postgres=#\q 

Y salimos de la cuenta en el sistema del usuario postgres con un simple:

$exit 

3.2- Configurar permisos de acceso y acceso remoto a PostgreSQL:

3.2.1 Configurar iterfaces de acceso:

PostgreSQL por defecto, sólo atiende peticiones provenientes de la máquina local, es decir, de la máquina en la que esta instalada. Por ello, si estamos configurando un servidor remoto, deberemos habilitar el acceso desde otras IPs.

Para lograrlo debemos editar el fichero /etc/postgresql/9.1/main/postgresql.conf. Buscaremos la línea siguiente:

#listen-address = 'localhost' 

la copiamos debajo, la descomentamos, y la modificamos quedando :

listen-address = '*' 

Con ello le decimos a PostgreSQL que escuche las peticiones provenientes de cualquier máquina.
Si se quisera que PostgreSQL escuchase sólo las peticiones de determinadas IPs, bastaría con poner estas IPs separadas por comas, y todo el conjunto entre comillas simples. Por ejemplo:

listen-address = '192.168.0.2,192.168.0.3' 

Nota: por custiones de seguridad no se recomienda permitir el acceso desde cualquier máquina.

3.2.2 Configurar permisos de acceso local:

PostgreSQL es muy restrictivo a la hora de gestionar permisos, por lo que por defecto no deja conectarse a casi nadie, ni en local, ni en remoto. Por ello lo primero que hay que hacer es dar ciertos permisos locales.

Para ello debemos editar el fichero /etc/postgresql/9.1/main/pg_hba.conf.
Buscaremos la línea cuyo contenido es:

local all postgres peer

y la modificamos de forma que quede:

local all postgres md5

Con ello permitimos al usuario postgres conectarse desde la maquina local, usando una contraseña encriptada con md5. Ello implica que al reinicar el servidor
podremos acceder al cliente de linea de ordenes de PostgreSQL desde cualquier cuenta de usuario con la cuenta de postgres, escribiendo:

$psql -U postgres -W 

A continuación permitiremos el acceso a cualquier cuenta de usuario desde la maquina local siempre que se especifique una contraseña encriptada mediante md5.
Para lograrlo, buscaremos la línea cuyo contenido es:

local all all peer

y la modificamos de forma que quede:

local all all md5
3.2.2 Configurar permisos de acceso remoto:

Por último, debemos configurar los permisos de acceso remoto. Se trata de responder a las siguientes preguntas:

  • ¿Que usuarios tienen permisos para conectarse?
  • ¿Desde que IPs se pueden conectar?
  • ¿A que bases de datos?
  • ¿Y.. que método de auteticación tienen que usar?

En este post, daremos permisos a todos los usarios de la base de datos, para concetarse a todas las bases de datos, desde cualquier IP, usando una contraseña encriptada con MD5.

Esto lo lograremos editando de nuevo el fichero /etc/postgresql/9.1/main/pg_hba.conf
Al final del mismo añadiremos la línea

host all all 0.0.0.0 0.0.0.0 md5

Una explicación sencilla de esta regla de permisos del fichero /etc/postgresql/9.1/main/pg_hba.conf seria:

  • host Indica que la regla se refiere a conexiones remotas
  • all Responde a la pregunta ¿Que usuarios tienen permiso para conectarse?. En este caso todos.Si quisieramos especificar un usuario determinado, bastaría con sustituir “all” por el nombre del usuario deseado. Si queremos aplicar la misma regla a varios usuarios, tendremos que copiar y pegar la regla, cambiando el nombre de usuario.
  • all Responde a la pregunta ¿A que bases de datos?. En este caso a todas .Si quisieramos especificar una base de datos determinada, bastaría con sustituir “all” por el nombre de la base de datos deseada. Si queremos aplicar la misma regla a varios bases de datos, tendremos que copiar y pegar la regla, cambiando el nombre de la base de datos.
  • 0.0.0.0 0.0.0.0 Responde a la pregunta ¿Desde que IPs se pueden conectar?. En este caso desde todas. el primer grupo de 4 digitos especifca la IP, mientras que el segundo es la mascara de red. Los valores 0.0.0.0 son valores comodin, cuyo significado es “cualquier IP” y “cualquier mascara” respectivamente.
  • md5Responde a la pregunta ¿Que método de auteticación tienen que usar?. En este caso una contraseña encriptada con MD5. Otros posibles valores son : “passowrd” para una contraseña sin encriptar o “trust” para permitir un acceso sin contraseña

Para una mayor información sobre como funciona el fichero /etc/postgresql/9.1/main/pg_hba.conf se puede consultar la documentación oficial en castellano en la dirección: http://www.postgresql.org/docs/9.1/interactive/auth-pg-hba-conf.html

4.- Instalar ProFTP para acceder al directorio de publicación web de forma remota:

Desde la consola escribiremos el siguiente comando para iniciar la instalación:

$sudo apt-get install proftpd

Durante la instalación, se nos preguntará por modo de funcionamiento del servidor FTP. Elegiremos standalone.

A continuación debemos modificar la configuración básica del servidor para que el directorio raíz del servidor FTP sea le mismo que el directorio raíz del servidor web, permitiendo de esa forma subir y bajar los archivos publicados en Apache.

Para ello editamos el archivo /etc/proftpd.conf y añadimos las siguientes líneas:

 
<global> 
    DefaultRoot /var/www 
    <directory /var/www > 
        <limit All> AllowAll </limit> 
    </directory> 
</global> 
  • La directiva global, indica que los ajustes que se encuadran dentro de ella, se aplican a todos los servidores virtuales que tengamos definidos en nuestro fichero de configuración.
  • La directiva DefaultRoot indica el directorio raiz en el que se ubicaran los usuarios al conectarse. Los usuarios no podrán acceder a los directorios de nivel superior al que definimos con DefaultRoot.
  • La directiva Directory permite hacer ajustes específicos para el directorio indicado.
  • La directiva Limit Indica sobre que comandos FTP deseamos hacer ajustes de permismos. En este caso todos los comandos FTP.
  • La directiva AllowAll indica que los comandos a los que hace referencia la directiva Limit estan permitidos para todos los usuarios.

Así, estas líneas en el fichero de configuración de ProFtpd lo que hacen es hacer que todos los usuarios del servidor FTP accedan por defecto al directorio /var/www y dentro de este directorio, se les permiten todos los comandos de FTP (ls, rename, etc.).

4.1 Permitir el acceso al usuario root

Como normal general es muy desaconsejable permitir el acceso del usuario root al FTP, ya que entre otros riesgos, en el proceso de conexión la clave de dicho usuario viajaría por la red en texto plano, y cualquiera con un sniffer podría leerla. Sin embargo, en determinados entornos de pruebas, puede ser deseable permitir la conexión al FTP de dicho usuario.

Para lograrlo, en primer lugar debemos añadir la directiva RootLogin On a nuestro fichero de configuración de ProFtpd. Para permitir el acceso del root a todos los servidores definidos en el fichero, añadimos esta directiva dentro de la sección global, de forma que esta sección quedaría:

 
<global> 
     RootLogin On
     DefaultRoot /var/www 
     <directory /var/www > 
         <limit All> AllowAll </limit> 
     </directory> 
</global> 

Además, ProFtpd impide el acceso a los usuarios especificados en el fichero /etc/ftpusers por lo que debemos editar este fichero, y si el usuario root apareciera listado, debemos comentar la línea donde aparece, para lo cual añadimos el simbolo # al principio de la misma quedando la línea con el siguiente aspecto:

 
... 
...
#root 
... 
...

Finalmente, para que las nuevas directivas tengan efecto, debemos reiniciar el servidor FTP, para lo cual ejecutaremos en la terminal el siguiente comando:

 $sudo /etc/init.d/proftpd restart
Categorías:apache, Debian, PostgresSql, Tecnología Etiquetas: , , , ,

Instalar un Servidor LAMP (Linux , Apache, MySQL, PHP) en Debian 6

Partiendo de una instalación limpia de Debian 6 NetInstall procederemos a instalar y configurar un servidor LAMP (Linux+Apache+MySql+Php).

Usaremos las siguientes versiones mayores de cada componente:

  • Debian 6
  • Apache 2
  • MySql 5
  • Php 5

Iniciaremos la instalación siguiendo estos pasos:

1.- Instalar Apache 2 como servidor Web:

Instalaremos Apache usando el siguiente comando de la consola:

$sudo apt-get install apache2 apache2.2-common apache2-utils ssl-cert

Tras la instalación comprobaremos que el servidor web esta correctamente configurado escribiendo en nuestro navegador la url del servidor que en la mayoría de los casos será:
http://localhost

2.- Instalar PHP5 como lenguaje del lado del servidor:

De nuevo desde la consola ejecutaremos:

$sudo apt-get install php5 libapache2-mod-php5 php5-common

A continuación comprobaremos que PHP se ha instalado correctamente y que Apache es capaz mostrar las páginas escritas en este lenguaje. Para ello debemos crear un fichero simple de texto al que llamaremos info.php con el siguiente contenido:

<?php
   phpinfo();
?>

La función phpinfo() simplemente nos devuelve una tabla resumen de la configuración del servidor, por lo que resulta ideal para nuestros propósitos.

El fichero que acabamos de generar se debe guardar en el directorio raiz de publicación del servidor web, que habitualmente será :
/var/www/

Finalmente, antes de probar el correcto funcionamiento de PHP, debemos reiniciar el servidor web, para lo cual escribimos en la consola:

$sudo /etc/init.d/apache2 restart 

Llegados a este punto, deberiamos ver una página mostrando la configuración de PHP al escribir en nuestro navegador:
http://localhost/info.php

3.- Instalar MySQL 5 como sistema gestor de bases de datos:

Una vez más haremos uso de la consola, y escribiremos el siguiente comando:

$sudo apt-get install mysql-server mysql-client php5-mysql

3.1- Configurar la contraseña del root:

Una vez instalado MySQL, debemos establecer la contraseña del usuario root.Al hacer las pruebas para escribir este post, el configurador de paquetes de Debian, mostró una ventana de texto donde configurar esta contraseña. Por ello, si es vuestro caso, podéis omitir este paso, ya que la contraseña quedará establecida por el configurador de paquetes. Para aquellos que no han tenido tanta suerte, he aquí el método clásico:

Escribiremos en la consola los siguientes comandos como administrador del sistema:

#mysql -u root -p

Con este comando, accedemos al cliente de linea de ordenes de MySQL. Una vez dentro, escribiremos:

 mysql> USE mysql;
 mysql> UPDATE user SET Password=PASSWORD('nuevo-password') WHERE user='root';
 mysql> FLUSH PRIVILEGES;
 mysql> quit;

3.2- Configurar el acceso remoto a MySQL:

MySQL por defecto, sólo atiende peticiones provenientes de la máquina local, es decir, de la máquina en la que esta instalada. Por ello, si estamos configurando un servidor remoto, deberemos habilitar el acceso desde otras IPs.
Para lograrlo debemos editar el fichero /etc/mysql/my.conf. Buscaremos la línea siguiente:

bind-address = 127.0.0.1

y la comentaremos quedando :

#bind-address = 127.0.0.1

para permitir el acceso desde cualquier máquina.
Nota: por custiones de seguridad no se recomienda permitir el acceso desde cualquier máquina.

Con ello conseguimos que MySQL escuche todas las intefaces de red de la máquina donde esta instalado.
Finalmente debemos dar permisos a los usuarios que deseemos para acceder a las bases que queramos de forma remota. Para ello usaremos de nuevo el cliente de linea de comandos de MySQL:

#mysql -u root

y a continuación escribiremos:

 
 mysql> GRANT ALL PRIVILEGES ON *.* TO USERNAME@IP IDENTIFIED BY "PASSWORD";
 mysql> FLUSH PRIVILEGES;
 mysql> quit;

Donde USERNAME se refiere al usuario al que se quiere garantizar el acceso, IP es la ip desde la que el usuario se podrá conectar, y PASSWORD es la clave de dicho usuario.
Si deseamos que el usuario se pueda conectar de manera remota desde cualquier ubicación, sustituiremos la ip por sel simbolo % entre comillas simples.
Por otro lado *.* se refiere a todos los objetos del a base de datos, si deseamos permitir sólo el acceso a una determinada tabla, sustituiremos *.* por el nombre de dicha tabla.
Asi pues, para garantizar el acceso del usuario root a todas las tablas de la base de datos desde cualquier ubicación, usaremos los siguientes comandos:

 mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY "PASSWORD";
 mysql> FLUSH PRIVILEGES;
 mysql> quit;

4.- Instalar ProFTP para acceder al directorio de publicación web de forma remota:

Desde la consola escribiremos el siguiente comando para iniciar la instalación:

$sudo apt-get install proftpd

Durante la instalación, se nos preguntará por modo de funcionamiento del servidor FTP. Elegiremos standalone.

A continuación debemos modificar la configuración básica del servidor para que el directorio raíz del servidor FTP sea le mismo que el directorio raíz del servidor web, permitiendo de esa forma subir y bajar los archivos publicados en Apache.

Para ello editamos el archivo /etc/proftpd.conf y añadimos las siguientes líneas:

<global>
     DefaultRoot /var/www
    <directory /var/www >
         <limit All>
              AllowAll
          </limit>
     </directory>
</global>
  • La directiva global, indica que los ajustes que se encuadran dentro de ella, se aplican a todos los servidores virtuales que tengamos definidos en nuestro fichero de configuración.
  • La directiva DefaultRoot indica el directorio raiz en el que se ubicaran los usuarios al conectarse. Los usuarios no podrán acceder a los directorios de nivel superior al que definimos con DefaultRoot.
  • La directiva Directory permite hacer ajustes específicos para el directorio indicado.
  • La directiva Limit Indica sobre que comandos FTP deseamos hacer ajustes de permismos. En este caso todos los comandos FTP.
  • La directiva AllowAll indica que los comandos a los que hace referencia la directiva Limit estan permitidos para todos los usuarios.

Así, estas líneas en el fichero de configuración de ProFtpd lo que hacen es hacer que todos los usuarios del servidor FTP accedan por defecto al directorio /var/www y dentro de este directorio, se les permiten todos los comandos de FTP (ls, rename, etc.).

4.1 Permitir el acceso al usuario root

Como normal general es muy desaconsejable permitir el acceso del usuario root al FTP, ya que entre otros riesgos, en el proceso de conexión la clave de dicho usuario viajaría por la red en texto plano, y cualquiera con un sniffer podría leerla. Sin embargo, en determinados entornos de pruebas, puede ser deseable permitir la conexión al FTP de dicho usuario.

Para lograrlo, en primer lugar debemos añadir la directiva RootLogin On a nuestro fichero de configuración de ProFtpd. Para permitir el acceso del root a todos los servidores definidos en el fichero, añadimos esta directiva dentro de la sección global, de forma que esta sección quedaría:

<global>
     RootLogin On
     DefaultRoot /var/www
    <directory /var/www >
          <limit All>
              AllowAll
         </limit>
     </directory>
</global>

Además, ProFtpd impide el acceso a los usuarios especificados en el fichero /etc/ftpusers por lo que debemos editar este fichero, y si el usuario root apareciera listado, debemos comentar la línea donde aparece, para lo cual añadimos el simbolo # al principio de la misma quedando la línea con el siguiente aspecto:

...
...

#root

...
...

Finalmente, para que las nuevas directivas tengan efecto, debemos reiniciar el servidor FTP, para lo cual ejecutaremos en la terminal el siguiente comando:

$sudo /etc/init.d/proftpd restart
Categorías:apache, Debian Etiquetas: , , ,