Armando un servidor web

Con una PC de bajos recursos
10/03/2009 MoatSoft Miguel Tuyaré

Este documento tiene licencia: Creative Commons Atribución-No Comercial-Sin Obras Derivadas 2.5 Argentina Sitio de la Licencia: http://creativecommons.org/licenses/by-nc-nd/2.5/ar/ y está registrado SafeCreative.org.

Agradecimientos: A todos los programadores que dan su tiempo y hacen excelente software de uso libre. Lo mejor fue, es y seguirá siendo GNU.

2

Introducción
Seguramente muchos de nosotros tenemos por ahí, tal vez al borde del tacho de basura, alguna computadora obsoleta, digamos un Pentium II de 266Mhz, con 64Mb de memoria, con un HD de 4Gb y con cualquier placa de video. Si tal es el caso le digo que no la tiren, todavía sirve. Si aunque parezca mentira se pueden llegar a asombrar lo que se puede hacer con una máquina de esas características. Si, ya sé que XP ni hablar de instalar, inclusive hasta el Windows 98 se arrastra, pero para el pingüino, GNU/Linux, no hay nada imposible. Les voy a contar como armé un servidor web personal (que inclusive pronto estará on line ya que estoy tramitando el dominio) con una máquina similar, en realidad un poquito mejor, pero para el caso serviría igual a la que nombré al principio. Tenía en un rincón, abandonada ya, una PC Pentium III de 550Mhz, con 128Mb de RAM, HD de 10 Gb., todo sobre una motherboard PC-CHIP M748LMRT (con video, sonido y placa de red on board y soporte USB), una placa madre bastante mala por cierto pero fue lo que pude comprar años atrás. Sobre esta máquina me dispuse a armar un servidor web porque quería tener un lugar físico independiente de mi computadora más nueva donde probar y jugar con Joomla, Drupal, y otros CMS, y también testear un software en PHP de Administración que estoy armando. Aquí les explico cómo lo logré y los invito a que prueben. Se van a quedar más qué felices de tener su propio servidor. Hasta les voy a decir cómo ponerlo on line sin pagar una IP fija utilizando servicios gratuitos de internet.

3

Capítulo I Seleccionando la distribución
Probé varias (manía vieja mía), primero probé SME Server, después Debian (mi amor imposible), más tarde Puppy, Centos, DragonLX, DSL Linux y finalmente antiX. SME Server es servidor armado para PyMES (Pequeñas y Medianas Empresas) Es muy seguro y tiene prácticamente todo lo que una empresa puede llegar ocupar. Es "extremadamente seguro" y fue por eso que lo descarté. Demasiados scripts que retocar para usar Joomla y eso me puso muy nervioso. Tanto Debian y Centos fueron demasiado grandes y pesadas como para soportar la PC, aunque andaban, siempre sin instalar entornos gráficos. Puppy, Dragon LX y DSL Linux “volaban” pero no me gustaba el “aspecto final” y aunque tenían entorno gráfico para trabajar no me convencieron del todo. Finalmente antiX, una distro basada en Mepis y Debian, me dejó más que conforme ya que mi “viejita” –como había bautizado a mi computadora- quedó convertida en un Fórmula 1, anda de lujo. Por eso, les recomiendo esa distribución que los asombrará, no solo para máquinas con pocos recursos sino para máquinas más nuevas también. Además usa repositorios Debian Lenny lo cual la pone a la vanguardia de la movida linuxera. El título anexo al nombre, M8, se refiere a la versión de la distribución Mepis en la que está basada. La ISO completa (con todas las utilidades, incluyendo procesador de texto, planilla de cálculo, reproductor de mp3, grabadora de DVD, reproductor de DVD, etc., etc., si, si, tiene todo eso y más y todo anda) pesa algo de 446Mb y la versión “base” (con entorno gráfico y un paquete “base”) pesa algo 242Mb. Para la descarga accedan a la página http://antix.mepis.org/index.php/Spanish y ahí verán muchos mirrors y torrents. Instalarla lleva entre 5 y 20 minutos dependiendo de la computadora donde la instalen y su memoria. Lean cómo cambiar a los repositorios estables de Debian y hagan ahí lo que les dice.

4

Capítulo II Instalando el servidor
Llegado a este punto fue también toda una debacle. Probé Apache2, Cherokee y Lighttpd. De Apache2 qué podemos decir si es el más usado en el mundo, hasta la todopoderosa Microsoft lo usa ya que con sus productos no lo puede vencer. Apache es “el server” pero el paquete es grande son 25Mb más todos los anexos y para máquinas como la mía es mucho. Igualmente lo instalé y probé Joomla y si, andaba lento, más lento que trabajar sobre la web. Probé Cherokee, mucho más liviano y fácil de configurar y todo anduvo muy bien, más rápido que Apache, pero finalmente decanté por Lighttpd que está basado en Apache pero sin tantos artilugios, es extremadamente liviano y además fue el de mejor performance de todos: Joomla vuela!, que era lo que quería.

1- Instalando Lighttpd
Suponiendo que ya hayas instalado GNU/Linux te explico cómo instalar Lighttpd. Accedemos a una consola en modo root y ponemos lo siguiente:

#aptitude install lighttpd
Después de la instalación, abrimos cualquier navegador (antiX instala por defecto IceWeasel, un clon del Mozilla-Firefox muy bueno y más liviano) y tipeamos nuestra IP o localhost. Si todo salió bien debería aparecer la "Lighttpd placeholder page".

2- Instalando MySQL y phpmyadmin
Volvemos a la consola de root y tipeamos:

# aptitude install mysql-server mysql-client phpmyadmin
Aquí, durante la instalación de MySQL el sistema pregunta por la contraseña de root que le vamos a poner a MySQL, no se la olviden. También durante la instalación de phpmyadmin preguntará sobre que servidor web vamos a instalar a lo que deberemos seleccionar "Lighttpd".

3- Instalando PHP con soporte para MySQL
Siempre como root tipeamos todo esto:

# aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

5

4- Seteando Lighttpd y PHP
PHP no está habilitado por defecto en Lighttpd, por eso necesitamos configurarlo. Así que realizaremos el siguiente paso: Tipeamos en la consola lo siguiente:

# nano /etc/php5/cgi/php.ini
Esto abrirá en un editor de texto de consola el archivo ini de PHP y agregaremos la siguiente línea al final:

cgi.fix_pathinfo = 1
Ahora necesitamos habilitar el módulo fastcgi de Lighttpd y también habilitar el módulo rewrite que seguramente lo usaremos después en Joomla y otro similares. Tipeamos en la consola:

# nano /etc/lighttpd/lighttpd.conf
Observamos las líneas donde dice "server.modules” y descomentamos o removemos el “#” en la línea “mod_rewrite”, y en una nueva línea agregamos “mod_fastcgi”, (¡no olvidar la coma!). La sección se debería ver algo así:

server.modules = ( "mod_access", "mod_alias", "mod_accesslog", "mod_compress", "mod_fastcgi", "mod_rewrite", #"mod_redirect", #"mod_evhost", #"mod_usertrack", #"mod_rrdtool", #"mod_webdav", #"mod_expire", #"mod_flv_streaming", #"mod_evasive" )

Antes de cerrar el archivo agregaremos al final del mismo lo siguiente:

fastcgi.server = ( ".php" => (( "bin-path"=>"/usr/bin/php5-cgi", "socket"=>"/tmp/php.socket", "max-procs"=>1, "bin-environment"=>(

6

"PHP_FCGI_CHILDREN"=>"4", "PHP_FCGI_MAX_REQUESTS"=>"1000" ), )))
Estas líneas agregadas en el lighttpd.conf cumplen dos cometidos. Las primeras líneas le dicen a Lighttpd como tiene que manejar las llamadas de PHP, y los 3 últimas indican cuantos procesos FastCGI pueden estar corriendo y el número de respuestas de PHP, estas dos últimas variables pueden ajustarlas dependiendo del uso que le van a dar al servidor (intensivo o no) para evitar cuelgues o largos delays (demoras). Ahora reiniciaremos Lighttpd para activar los cambios tipeando en la consola:

# /etc/init.d/lighttpd restart

5- Testeando todas las salidas
Creamos un archivo llamado info.php para testear la correcta instalación y funcionamiento de todo. Tipeamos:

# nano /var/www/info.php
Dentro agregamos este código php:

<?php phpinfo(); ?>
Abrimos el navegador y ponemos nuestra IP (o localhost) agregándole la "/" y el nombre del archivo creado, de forma por ejemplo:

http://192.168.1.101/info.php
Ahí podrán ver toda la info de PHP5 y las API activas, incluyendo FastCGI así como también si MySQL está soportado.

6- Habilitando phpmyadmin
Por defecto phpmyadmin no estará enlazado con nuestro localhost por ello es necesario realizar un último paso. Escribimos en la consola:

ln -s /user/share/phpmyadmin /var/www
Y probamos en nuestro navegador ingresando nuestra IP o localhost de la forma:

http://192.168.1.101/phpmyadmin
Voilá!!!! Ya tenemos nuestro web server funcionando.

7

Capítulo III Trabajando en forma remota
Hasta aquí tenemos nuestro servidor funcionando con todos los “chiches” sobre nuestro flamante GNU/Linux Web Server, pero supongamos que queremos trabajar desde otra PC y desde Windows. Para eso deberemos instalar Samba Server que es un servidor que nos permite compartir archivos entre GNU/Linux y Windows.

Instalando Samba Server
Vamos a nuestro Linux y en una consola de root escribimos:

#aptitude install samba-server samba-common
Esto instalará nuestro servidor samba y en determinado momento nos preguntará el Grupo de Trabajo al que responderemos con el mismo Grupo de Trabajo que tengamos en nuestro XP. Sin ponemos el mismo, cuando vayamos al Explorer de Windows o al Entorno de Red simplemente veremos un nuevo Grupo de Trabajo. Luego debemos configurar los usuarios Samba. Aquí hay que tener en cuenta algo MUY IMPORTANTE, el usuario que crearemos debe ser igual a nuestro usuario de Windows y con la misma contraseña, de lo contrario no funcionará. Puede suceder que no usemos contraseña en Windows en ese caso tampoco le asignaremos contraseña al usuario Samba

Agregando usuarios Samba
En nuestra consola de root crearemos un usuario linux pero con el mismo nombre, como dije, del usuario de Windows, escribiremos:

#useradd -s /sbin/nologin usuario-windows #smbpasswd -a usuario-windows
Y aquí les explico algo. La primera línea crea un usuario linux pero sin directorio /home, es decir, no se podrá loguear a linux. En la segunda línea va la misma contraseña que Windows pero sin en Windows no usamos contraseña, luego de tipear la línea presionaremos ENTER (2 veces). siguiente: Si necesitamos usuarios con acceso a Telnet, SSH o a otros servicios, escribiremos lo

#useradd -s /bin/bash usuario-windows #passwd usuario-windows #smbpasswd -a usuario-windows
Esto le dará acceso al shell de Linux y podrá realizar otras tareas. Para nuestro caso no es necesario.

8

Instalando Webmin
Ahora vamos a ver una forma fácil de compartir carpetas pero no solo de eso sino que además podremos administrar en forma remota todo nuestro servidor. Para eso vamos a instalar Webmin. Qué es Webmin? Es un administrador remoto para servidores vía web. Es uno de los mejores que conozco y con él prácticamente podremos realizar cualquier tarea sobre nuestro server desde otra computadora. En la consola de root escribimos:

#aptitude install webmin
Para probar si funciona, abrimos el navegador IceWeasel y ponemos:

https:// 192.168.1.101:10000
Observen dos cosas: primero que no es http solo sino que es http+s, es decir, en modo seguro, y segundo que al poner :10000 le estamos indicando el puerto por donde nos comunicaremos. Estas dos características son propias de Webmin lo que lo hace sumamente seguro. Para loguearse a Webmin deben poner “root” y la contraseña de root del linux instalado. Para ponerlo en castellano vayan al acceso Webmin y hagan click en Change Language and Theme (o algo así). Para compartir archivos con Webmin vayan a la sección “Otros” y hagan click en “Explorador de Archivos” y allí podrán ver todo el árbol de directorios del servidor. Para empezar podemos ir a la carpeta “/var/www” y compartirla, de ese modo podremos pegar nuestro Joomla desde el Windows.

9

Final
Hasta aquí el tutorial sobre armar el servidor web, quedan muchas cosas en el tintero porque es un tema apasionante. Espero que les haya servido para que tengan su propio servidorcito en su casa y se diviertan aprendiendo. Si quieren hacer consultas y sugerencias pueden contactareme vía email a la siguiente dirección: info@moatsoft.com.ar o visitar mi web: http://www.moatsoft.com.ar

10