Servidor web casero con Apache, Php y Mysql en debian

lamp

Este howto es para todos aquellos que quieran servir páginas web desde su casa, ya sea publicando directamente en el servidor o instalando algún portal en php como wordpress o joomla.

El primer paso es dar de alta un dominio de segundo nivel en www.dyndns.com o alguna página similar. Hay que tener en cuenta que las ip’s asignadas a los usuarios caseros suelen ser dinámicas, por lo que deberemos estar pendientes de que la ip que damos de alta en dyndns sea la correcta, y si nos la cambia nuestro ISP, deberemos cambiarla en dyndns.

Con el nombre de dominio que hemos obtenido en dyndns (en el presente ejemplo server1.example.com), procedemos a nombrar nuestra debian, respecto a nuestra ip externa (la que no es 127.0.0.1).

$ nano /etc/hosts

127.0.0.1       localhost.localdomain   localhost

192.168.0.100   server1.example.com     server1

 # The following lines are desirable for IPv6 capable hosts

::1     ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

 $ nano /etc/hostname

                server1

$ /bin/hostname -F /etc/hostname

$ shutdown -r now

Cuando conectamos un ordenador directamente a Internet le exponemos a muy diversos peligros. El primero es el de todos los puertos abiertos, es decir, multitud de caminos por los que un hacker puede hacerse con el control de nuestra máquina. En mi caso, tengo un firewall externo, la airport extreme. Si no es vuestro caso, os recomiendo instalar iptables.

El siguiente consejo es cambiar la configuración del servidor ssh, si os es necesario acceder a la shell desde fuera de casa. Si no es así cerrar el puerto 22. Para tener un servidor ssh medianamente seguro, lo mejor es desactivar el acceso del root y darle permisos a un usuario para ejecutar sus tareas. Primero configuraremos sudo al modo ubuntu, y después editaremos la configuración de ssh.

 Instalar sudo

$ apt-get install sudo

dar permisos de root a un usuario

Si no le tenemos creado, lo creamos

$ adduser user1

le damos permisos de root desde sudo

$ visudo

añadimos la línea

user1 ALL=(ALL) ALL

Asegurar ssh.

Vamos a cambiar el puerto por defecto de ssh, desactivar el acceso del root y establecer los usuarios que podrán acceder.

$ nano /etc/ssh/sshd_config

– Buscamos

Port 22 – y lo cambiamos por un numero diferente (12345) para ponerselo más difícil a los hackers

– Cambiamos:

PermitRootLogin no

X11Forwarding no

UsePAM no

– y añadimos estas líneas al final:

UseDNS no

AllowUsers user1

Para reiniciar ssh

            $ /etc/init.d/ssh reload

Salimos e iniciamos una sesión ssh con el nuevo usuario

* desde OSX o Linux:

ssh -p 12345 user1@123.45.6.78

* Desde Windows:

putty user1@123.45.6.78 1234

Si deseais configurar postfix como servidor de correo, visitar el enlace: http://www.howtoforge.com/perfect_setup_debian_etch_p5  ejecutando antes desde ssh “$ sudo su” para actuar como root.

Instalar apache con php5

            $ sudo apt-get install apache2 php5 libapache2-mod-php5 php5-common php5-dev php5-mysql php5-tidy php5-xmlrpc php5-xsl php5-cgi php5-mcrypt php5-curl php5-gd php5-memcache php5-mhash php5-pspell php5-snmp libmagick9-dev php5-cli

Y testeamos php generando un archivo de prueba

$ nano /var/www/test.php

con el contenido

<?php phpinfo()?>

            Visitamos con el navegador http://midominio/test.php

Solucionar problemas con imagick:

sudo aptitude -y install make php-pear

sudo pecl install imagick

(y presionamos <ENTER> )

Ajustamos php.ini:

$ sudo nano /etc/php5/cgi/php.ini

Aumentamos la memoria para WordPress :

Buscamos la línea:

memory_limit = 16M y la cambiamos a: memory_limit = 48M

Y al final del archivo añadimos la siguiente línea:

extension=imagick.so

Instalar MySQL y asegurarlo

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

Para asegurarlo

$ mysql_secure_installation

Instalar phpmyadmin

$  sudo apt-get install phpmyadmin

 Editamos el archivo de configuración de apache

$ sudo nano /etc/apache2/apache2.conf

Y añadimos la siguiente línea

Include /etc/phpmyadmin/apache.conf

Reiniciamos apache

$ sudo /etc/init.d/apache2 restart

Ahora deberíamos ver la página de phpmyadmin en http://midominio/phpmyadmin

Introducimos root y password_root

Instalar webmin

Descargar la ulrima version para debian desde www.webmin.com

 $ wget http://heanet.dl.sourceforge.net/sourceforge/webadmin/webmin_1.430_all.deb

instalamos programas necesarios

$ apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl

instalamos webmin

$ dpkg –i webmin_1.430_all.deb

Podemos acceder a webmin desde https://midominio/webmin:10000/

Para subir páginas hay varios procedimientos, a través de un servidor ftp, a través de la red local con samba, afp o nfs, o a través de ssh.  En un próximo howto configuraremos vsftpd.

A disfrutarlo

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.