Páginas

domingo, 1 de diciembre de 2013

FreeBSD ddns apache mysql drupal

Si en un momento determinado tenemos la intención de habilitar un servidor web o acceder remotamente a nuestra red, nos encontramos con el tema de que nuestro ISP nos proporciona una ip dinámica (diferente) cada vez que nos conectamos. Por esto se hace necesario registrar una cuenta ddns.

En este caso y a modo de laboratorio realizaremos todo el proceso desde el registro ddns hasta la instalación y puesta en funcionamiento del CMS Drupal.

Dinamic DNS

Configurar ddns en el router vdsl Comtrend VR-3025u 30MB Jazztel



Les presento dnsdynamic.org un ddns gratuito y según dice siempre lo será. Durante el registro nos pedirá una cuenta de correo válida y un password que serán utilizados posteriormente, también hay que elegir un dominio. El password me lo invento por lo tanto no traten de entrar en dnsdynamic.org con esta cuenta, solo serviría para cargar el servidor:

login=nombreusuario@gmail.com # correo registrado
password=26Ac9yodLK4jzH48== # password registrado (inventado)
carlescamilo.dnsdynamic.com # dominio registrado

Ahora vamos a nuestro servidor FreeBSD e instalamos ddclient utilizado para actualizar automáticamente dynamic DNS:
$ ssh -l carlos -p 3434 192.168.3.1
password

$ hostname
$ freebsdsvr.linux.bcn

# cd /usr/ports/dns/ddclient
# make install clean
# rehash

# cd /usr/local/etc
# cp ddclient.conf.sample ddclient.conf
# ee ddclient.conf
# Archivo de configuración /usr/local/etc/ddclient.conf


Guardar y salir.

ddclient.conf contiene el password de su proveedor DNS dinámico, hágalo legible solo por root:
# chmod 600 /usr/local/etc/ddclient.conf

y agregue las siguientes líneas de inicio:
# ee /etc/rc.conf

ddclient_enable="YES"
ddclient_flags="-daemon 600" # comprobar cada 600 segundos

Guardar los cambios y levantar el demonio:

# /usr/local/etc/rc.d/ddclient start
Confirmar que ddclient se está ejecutando:


Si repite el comando ps comprobará el estado de ddclient en cualquier momento. Después de que el tiempo de sueño expire, ddclient
debe comprobar su IP pública y hacer los cambios apropiados a su proveedor DNS dinámico.

El archivo /var/tmp/ddclient.cache guarda la última dirección IP pública conocida del sistema y los mensajes de estado de los registros ddclient, así como errores los guarda en /var/log/messages


Correos electrónicos de estado se enviarán a la dirección de correo electrónico de la cuenta root. (Si configura el reenvío de correo electrónico del usuario root en el archivo /etc/aliases), configure la dirección de correo electrónico a la que desea que lleguen los mensajes agregando esta línea:
# ee /etc/aliases

root: localuser, nombreusuario@gmail.com # su cuenta

Guardar y salir

Nota: El puerto 25 es utilizado por mail para el envío de email por lo tanto el firewall debe permitir su paso y no olvide abrir el puerto 587 en su router ADSL si utiliza gmail, por ejemplo en este caso el 587 abierto para la dirección IP 192.168.1.250)

Adicionalmente debe configurar dnsdynamic en su router de acceso a Internet. Un ejemplo para el Comtrend vr3025u Multi-DSL 30 Megas de Jazztel:

hostname: carlescamilo.dnsdynamic.com # dominio dnsdynamic
username: nombreusuario@gmail.com # mail registro dnsdynamic
password=26Ac9yodLK4jzH48== # password, me lo invento
service: dyndns
interface: ppp1.1

Depurar ddclient. Trate de ejecutar el comando siguiente:

# ddclient -daemon=0 -noquiet -debug
DEBUG:    proxy  =
DEBUG:    url    = myip.dnsdynamic.com
DEBUG:    server = myip.dnsdynamic.com
DEBUG:    get_ip: using web, myip.dnsdynamic.com reports 96.27.155.98
DEBUG:   
DEBUG:     nic_dyndns2_update -------------------
DEBUG:    proxy  =
DEBUG:    url    = http://www.dnsdynamic.org/nic/update?system=custom&hostname=carlescamilo.dnsdynamic.com&myip=96.27.155.98
DEBUG:    server = www.dnsdynamic.org

Apache HTTP Server

Instalar el servidor Apache

Comprobar el archivo /etc/hosts
ee /etc/hosts

#
::1 localhost freebsdsvr.linux.bcn
127.0.0.1 localhost freebsdsvr.linux.bcn
192.168.3.1 freebsdsvr freebsdsvr.linux.bcn
#

Instalar el Servidor Apache
# cd /usr/ports/www/apache22
# make config ; make install clean
# rehash

Agregar las siguientes líneas a httpd.conf
# ee /usr/local/etc/apache22/httpd.conf

ServerAdmin mailvalido@gmail.com
ServerName freebsdsvr.linux.bcn:80

Comprobar errores de sintaxis en el archivo de configuración
# apachectl configtest
Performing sanity check on apache22 configuration:
Syntax OK

Después agregar las siguientes lineas en /etc/rc.conf:
apache22_enable="YES"
apache22_http_accept_enable="YES"

# /usr/local/etc/rc.d/apache22 start


El comando GET es case sensitive. Asegúrese de presionar enter dos veces y fíjese que antes y después del primer slash hay espacio.

Si puede ver el texto it works! en la última línea de salida quiere decir que Apache funciona.

Con el navegador lynx puede hacerse lo mismo
# lynx http://freebsdsvr.linux.bcn:



o desde un cliente de la red invocando freebsdsvr.linux.bcn ó la dirección IP 192.168.3.1:


Archivos LOG de Apache:

/var/log/httpd-access.log
Contiene un log de las direcciones IP, hora, y la actividad enn el servidor HTTP.
/var/log/httpd-error.log
Contiene un log de los mensajes de error producidos opr el seridor HTTP.

PHP5

# cd /usr/ports/lang/php52
# make config ; make install clean
# rehash

Un menú de opciones para php5 diríjase hasta Apache y presione la barra espaciadora para instalar el módulo Apache, luego OK para empezar la instalación.

PHP5-5.4-29

El module requerido para el soporte de aplicaciones PHP  sobre Apache debe instalarse:
# cd /usr/ports/www/mod_php5
make install clean

Antes de construir este puerto vamos a añadir soporte para MySQL y MySQLi (una interfaz mejorada para MySQL) con el fin de comunicarse con el servidor MySQL.
# cd /usr/ports/lang/php5-extensions/
make config

En el menú correspondiente tiene seleccione “MySQL database support” y “MySQLi database support,” luego proceda a construir el puerto:
# make install clean

Ha llegado el momento de configurar PHP para utilizarlo en su sistema insertando en DirectoryIndex declaración index.php:

# ee /usr/local/etc/apache22/httpd.conf

DirectoryIndex index.php index.html

y agregar estas líneas:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

En el caso de PHP5-5.4_29 al final del archivo http.conf agregamos:


Copiar el archivo php.ini-production php.ini que son las opciones recomendadas para entornos de servidores en producción.

# cp /usr/local/etc/php.ini-production /usr/local/php.ini

La directiva session.save_path le dice a PHP donde almacenar los archivos temporales de sesión.

# ee /usr/local/php.ini

session.save_path = "/tmp"

Guardar y salir.

# /usr/local/etc/rc.d/apache22 restart

Para comprobar la instalación de PHP crearemos un archivo llamado phpinfo.php en el directorio raíz del servidor web:

# ee /usr/local/www/apache22/data/phpinfo.php
Añadir estas líneas:

Guardar y salir.

Solicite phpinfo.php de su servidor Apache desde un navegador web. Si lynx está instalado este es el aspecto para el hostname freebsdsvr.linux.bcn:

PHP5-5.4_29




Suprimir el archivo phpinfo.php después de la prueba.
# rm /usr/local/www/apache22/data/phpinfo.php

MySQL junto a PHP es utilizado para crear sitios web dinámicos.
Asegúrese de que el nombre de host de su servidor puede resolverse localmente:
 Comprobar el archivo /etc/hosts
ee /etc/hosts

::1 localhost freebsdsvr.linux.bcn
127.0.0.1 localhost freebsdsvr.linux.bcn
192.168.3.1 freebsdsvr freebsdsvr.linux.bcn

Instalar MySQL Server
# cd
/usr/ports/databases/mysql55-server
# make -D BUILD_OPTIMIZED install clean
# rehash

Ejecute el script de mysql_install_db para establecer las tablas de permisos necesarios para MySQL. Almacenan información acerca privilegios, Permisos de usuario de MySQL y otras opciones de seguridad.

# mysql_install_db --user=mysql

Iniciar el demonio MySQL y configurar la contraseña de root de MySQL:

# mysqld_safe &
# mysqladmin -u root password 'localpassword'

MySQL incluye ejemplos de configuración ubicados en el directorio /usr/local/share/mysql, cada uno de los cuales configurado para un sistema determinado:

my-medium.cnf

Sistemas con más de 128MB de RAM (recomendado para servidores web)

# cp /usr/local/share/mysql/my-medium.cnf /var/db/mysql/my.cnf

Si MySQL va a utilizarse para aplicaciones PHP basadas en la web desactivar las redes TCP hará la instalación MySQL más segura.

Se aplica si el servidor web y la base de datos MySQL funcionan en el mismo ordenador. Descomentar la línea skip-networking del archivo /var/db/mysql/my.cnf

# ee /var/db/mysql/my.cnf
skip-networking

Configurar MySQL para iniciarse automáticamente con el sistema

# ee /etc/rc.conf
mysql_enable="YES"

Aplicar los cambios reiniciando MySQL:

# /usr/local/etc/rc.d/mysql-server restart

Para ver los mensajes de log error si los hubieran, el path es /var/db/mysql/freebsdsvr.linux.bcn.err y su nombre coincide con su hostname.


También hay que asegurarse que los permisos del directorio /tmp son los correctos:

# ls -ld /tmp
drwxrwxrwt  6 root  wheel  512 Nov 26 10:03 /tmp

Si no fuera así root puede corregirlos:

# chown root:whell /tmp
# chmod 777 /tmp
# chmod =t /tmp

Instalar el gestor de contenidos (CMS) Drupal7:

Primero hay que crear la base de datos.

# mysql -u root -p
Enter password: 
mysql> create database drupal;
mysql> grant all on drupal.* to
    -> drupal@localhost identified by 'password';
mysql> quit

Sustituya password por la contraseña de su elección. Esta contraseña la necesitará más adelante, no la olvide!.

Instalar Drupal7

# cd /usr/ports/www/drupal7
# make config; make install clean


Configurar Drupal para utilizarlo en su sistema:

Este archivo indica a apache la ubicación correcta de los archivos de Drupal y hace la administración más fácil. De forma predeterminada Apache busca en el directorio /usr/local/apache22/Includes para los archivos de configuración. Crear un archivo para Drupal:

# ee /usr/local/etc/apache22/Includes/drupal.conf

Agregue las líneas siguientes:


Guardar y salir. Reiniciar Apache.

# /usr/local/etc/rc.d/apache22 restart

Crontab es un servicio del sistema que permite la ejecución automática de scripts o programas de acuerdo con un calendario establecido en el archivo /etc/crontab. Hay que añadir una línea a /etc/crontab para permitir las tareas de mantenimiento de Drupal.

# ee /etc/crontab

45 */4 * * * root /usr/local/bin/lynx http://freebsdsvr.linux.bcn/drupal/cron.php

Abrir http://freebsdsvr.linux.bcn/drupal/install.php en su navegador sustituyendo su hostname y directorio, si lo ha modificado.

Introducir los datos utilizados previamente en la creación de la base de datos, nombre, nombre de usuario y contraseña. Guardar los cambios.


Seguir el asistente y al finalizar clic en su new site.


Desde fuera de nuestra red, he configurado soporte SSL para Apache::




Desde nuestra propia red:


Unix es genial!.

No hay comentarios:

Publicar un comentario