Bueno, en este otro manual (también prometido je) les enseñaré paso a paso cómo montar un webserver en linux Debian o cualquier distribución basada en Debian. Como les menciono siempre, en caso de utilizar alguna otra distribución los detalles que cambian son de los instalación y no los de configuración, asà que de igual manera animense!!
Sé que muchos están bastante familiarizados con aplicaciones como appserv (que es para Win2) que con su Next .. Next les proporciona apache, php, mysql y hasta perl. Acá les voy a enseñar cómo hacer las cosas, cómo adquirir ese nuevo conocimiento en caso de carecer de él (hasta este instante). Luego de haber aplicado los conocimientos que se proporcionarán en este manual, espero que puedan tener un servidor Web en su máquina, mucho más seguro y estable, y que puede ser muy útil para proyectos personales.
Introducción
Para montar un sistema Web, necesitamos de servicios tales como Apache, php, MySQL y/o PostgreSQL(básicamente). Acá les dejo la libertad sobre cuál gestor de bases de datos utilizar, MySQL es uno de los más conocidos en la actualidad, más que todo en el underground no?(uhh que cool se leyó xD), pero PostgreSQL es un gestor de bases de datos mucho más potente y con muchos más años de desarrollo, asà que bueno, los dejo bajo su propio criterio y elección.
Además, también les explicaré detalladamente cómo agregar sitios y Alias para que puedan ser publicados por Intranet o públicos en inet dependiendo del alcance del DNS con el que cuenten. Para ese apartado supondré que ya se tiene un servidor DNS funcional(en otro manual les orientaré en la instalación y configuración de un server DNS)
Este manual está orientado a usuarios que recién empiezan con esto, interesados en aprender cosas nuevas, sólo les recomiendo un poco de paciencia, es momento de desintoxicarnos del mundo MS y empezar a saber cómo se hacen las cosas, es un cambio completo de pensamiento, de paradigma, de actitud y de decisión.
Ahora sÃ, con todo esto dicho, qué les parece si nos adentramos un poco más en este mundo ah?, a mi se me hace que voy a terminar creando viciosos :P (o eso espero).
Requerimientos
Bueno, qué necesitamos en esta ocasión?
* Una máquina con acceso a internet (importantÃsimo, de no contar con internet le va a tocar hacer una descarga masiva de paquetes antes de poder iniciar con este manual :P ), como menciono siempre, una máquina de 400 MHZ, 64 MB de memorÃa nos bastará, lo demás ya es ganancia.
* GNU/Linux Debian Testing ( o cualquier otra distro basada en debian recomendablemente).
* Apache 1.3.3, (por ahora en este manual les mostraré cómo hacer las cosas con apache 1.3.3, me parece mucho más fácil de explicarselos. Más adelante les haré otro manual con apache2, tiene varias cosas nuevas que pueden facilitar mucho el manejo de servidores web y la configuración es básicamente la misma que esta, asà que no les afectará ni en lo más mÃnimo el cambio de apache 1.3.3 a apache2.
* PHP 4 (vamos con releases estables)
* MySQL 5 (mysql-server-5.0, mysql-client-5.0)
* PostgreSQL 8.0 (si desean trabajar con PostGis y Mapserver, les recomiendo que utilicen el PostgreSQL 7.4 porque el 8.x aún no está soportado)
* Acceso root a su máquina, para llevar a cabo la instalación y configuración de paquetes es vital.
Previo a la Instalación:
Antes de iniciar la instalación de paquetes, vamos a configurar nuestro sistema para que se conecte a un mirror de debian desde el cuál vamos a descargar e instalar los paquetes que necesitamos, para lo cuál utilizaremos apt. Hasta este punto, debe tener bien configurada su interfaz de red, este proceso se omitirá en este manual, en caso de necesitar ayuda con esto, puede contactarme o darse un googlazo en busca de un manual de configuración de red.
Con el editor de su agrado (recomiendo nano o vi que son de consola), edite el fichero /etc/apt/sources.list y agrega el enlace a un mirror de debian, de la siguiente manera:
CÓDIGO
vi /etc/apt/sources.list
CÓDIGO
deb http://ftp.us.debian.org/debian testing main contrig non-free
Si están utilizando el vi, para empezar a escribir basta con que presionen la tecla insert o la tecla Escape y posteriormente la i (minúscula). Para guardar los cambios basta con que presionen la tecla Escape y posteriormente las teclas w q (en ese orden y en minúscula también.
Una vez hecho esto, ejecutamos en consola:
CÓDIGO
apt-get update
Si todo está correctamente realizado, la salida deberÃa ser similar a la siguiente:
CÓDIGO
Des:1 http://ftp.us.debian.org testing/main Packages [3710kB]
Des:2 http://ftp.us.debian.org testing/main Release [81B]
Des:3 http://ftp.us.debian.org testing/contrib Packages [49.9kB]
Des:4 http://ftp.us.debian.org testing/contrib Release [84B]
Des:5 http://ftp.us.debian.org testing/non-free Packages [62.0kB]
Des:6 http://ftp.us.debian.org testing/non-free Release [85B]
Descargados 3822kB en 1m46s (35.9kB/s)
Leyendo lista de paquetes... Hecho
De no ser asà y darles algún error, cerciorense de efectivamente tener internet funcionando y de haber realizado correctamente los pasos anteriores. De mantenerse el problema, los invito a comunicarlo abajo en la casilla de comentarios y con gusto trataré de ayudarles a solucionar cualquier inconveniente
En esta ocasión utilizaré un esquema diferente para llevar el manual, vamos a ir instalando y configurando los servicios de uno en uno, asà cada vez iremos como probando el famoso borrón y cuenta nueva :P
Configuración e Instalación de Apache 1.3.3 y PHP4
Instalación:
CÓDIGO
apt-get install apache apache-common libapache-mod-php4
Durante la instalación, el script les hará unas cuántas preguntas, ustedes podrán responder a cada pregunta de la siguiente manera:

Creo que ni él siguiente ni el anterior necesitan de mi explicación, más que suficiente no?

Le ofrecerá la opción de instalar algunos módulos (si desea hacerlo aproveche, si desea instalar algún otro módulo esta es una opción), asegúrese de que la opción mod_php4 esté seleccionada (puede moverse de arriba hacia abajo con las teclas direccionales respectivas, en caso de no estar seleccionado hágalo presionando la tecla �Espacio o Space�, verá cómo un asterisco señala la casilla, eso significa que ya está seleccionado):

En el espacio siguiente digite el nombre del dominio(supongo que ya tiene todo esto configurado en su DNS, en caso de no tenerlo, ponga cualquier cosa, pero si quiere que los usuarios de su red vean su sitio respondiendo a un nombre (como pasa con www.hackerss.com) deberá asignarle un nombre en el DNS o configurar su propio DNS)

En el espacio siguiente, agregue el email del webmaster(preferiblemente de su dominio propio, aprovechen el Manual de Instalación de Correo en Postfix e instalense un servidor de correo :P )

El siguiente será la ruta del directorio que utilizará apache para almacenar los directorios de los sitios web(por defecto es /var/www/ si gustan pueden utilizar algún otro, pero deberán recordarlo pues es en ese directorio que tendrán que crear los directorios de los sitios que van a publicar en su servidor web):

El puerto que utiliza apache por defecto es el 80 (y es el más común), algunos usuarios prefieren cambiarlo, ya sea porque lo están utilizando para otras cosas o por simples cuestiones de seguridad. Yo lo dejaré en el puerto 80, usted es libre de experimentar con esto del puerto:

Ya con esto podemos dar por finalizado el proceso de instalación de apache (hasta configuramos y todo de paso, quién dijo que linux no tiene wizards ah? xD)
Nota:En el wizard que se le abre en la consola, puede realizar selecciones utilizando la tecla espacio, aceptar condiciones con la tecla Enter , movilizarse con las teclas direccionales y cambiarse de ubicación con la tecla Tab. Si en algún momento tuviese problemas con la instalación y quiere volver a utilizar el wizard simplemente digite el comando dpkg-reconfigure apache (con esto reinstalas un paquete).
Configurando Apache (o lo que nos queda xD):
Habilitando Soporte PHP a Apache:
Ya completada la instalación vamos a verificar que PHP este cargado como un modulo de Apache, para lo cual buscamos en el fichero modules.conf ubicado en la ruta /etc/apache/ las siguientes lÃneas:
CITA
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
AddModule mod_php4.c
AddModule mod_php4.c
Nota: En caso de no estar las lÃneas agréguelas manualmente con el editor de su agrado. Si desea agregar más módulos a apache(el módulo que guste) tiene que seguir este mismo procedimiento, instalar el paquete o módulo y agregarlo en el archivo modules.conf ubicado en la ruta: /etc/apache/modules.conf.
Una vez realizada esta modificación, agregaremos las extensiones y los Ãndices para PHP en el archivo de configuración de apache que se llama httpd.conf y se encuentra localizado en la ruta /etc/apache/. Edite ese fichero con el editor de su agrado (recomiendo vi o nano que son editores de consola).
CÓDIGO
vi /etc/apache/httpd.conf
Una vez abierto en modo de edición, buscaremos las lÃneas descritas a continuación y las dejaremos parecidas a las siguientes(muy seguramente las podrá encontrar comentadas , entonces descoméntelas quitando el signo #, en caso de no encontrarlas agreguelas usted mismo):
CITA
DirectoryIndex index.php index.html index.htm index.shtml index.phtml index.cgi
AddType application/x-httpd-php .php .phtml .php4 .php3
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .phtml .php4 .php3
AddType application/x-httpd-php-source .phps
Hecho esto, reiniciamos apache de la siguiente manera:
CÓDIGO
/etc/init.d/apache restart
Hasta este punto, ya contamos con un servidor apache que funciona, esto podemos verificarlo digitando en nuestro navegador la URL http://localhost , lo cuál deberÃa desplegarnos algo similar a lo siguiente:

Nota: Si cuenta con un DNS, puede utilizar el nombre de su máquina en lugar de localhost(comentario que está de más para muchos, pero que quizá algunos otros no lo sepan)
Un poco más sobre Apache 1.3.3:
Bueno, de apache podemos cambiar varias cosas, como por ejemplo cambiar el puerto que utilizará por defecto, el nombre del sitio(que tiene que estar previamente configurado en el DNS) y bueno, agregar unas cuántas cosas de más, como otros sitios, que respondan a distintos subdominios o Alias.
La gran mayorÃa de estas cosas, ya las configuramos y/o personalizamos cuando instalamos apache(sÃ, eso que les expliqué arriba con todo y screenshots), voy a explicarles un poco las variables básicas de apache y vamos a personalizar unas cuántas más va?.
Para hacer las modificaciones que les he mencionado anteriormente, vamos a editar el archivo de configuración de apache (sÃ, el mismo que les mencioné unas cuántas lÃneas atrás):
CÓDIGO
vi /etc/apache/httpd.conf
A continuación les voy a ir explicando las entradas básicas del script que ustedes pueden modificar en el archivo de configuración para personalizar su apache y además, les voy a ir explicando algunas otras entradas:
Podemos poner a apache que se ejecute él mismo como un demonio y esté todo el tiempo al pendiente de las solicitudes que se le hagan(standalone), o dejar que el demonio inetd esté todo el tiempo a la escucha de su puerto y se encargue de llamar a apache cuando lo necesiten. Esto es una decisión muy de ustedes, yo por ahora lo dejaré en standalone(se va a mandar solito).
CITA
ServerType standalone
Esta otra es fácil de saber no?, la del puerto que usará apache:
CITA
Port 80
Las siguientes son muy importantes, definen el nombre del usuario y el grupo que utilizará apache, por defecto en el momento de la instalación crea un usuario y un grupo llamado www-data, puede cambiarlo a su gusto si lo desea asà (no olviden crearlos en caso de cambiarlos). El directorio que utilizará apache para publicar los sitios web (cuya entrada mencionaré unas cuantas lÃneas más abajo) necesitará tener como propietarios a este usuario y a este grupo(más adelante les explicaré cómo poner a www-data como propietario de este directorio).
CITA
User www-data
Group www-data
Group www-data
El email del Webmaster:
CITA
ServerAdmin webmaster@sudominio.com
El nombre del servidor(para esto necesitan tener un DNS funcionando):
CITA
ServerName wwww.sudominio.com
Directorio que utilizará apache para publicar los sitios:
CITA
DocumentRoot /var/www/
Muy importante para el almacenamiento de logs (asegúrese de que esta entrada tenga alguna ruta de parámetro, los logs son muy útiles)
CITA
ErrorLog /var/log/apache/error.log
Otra entrada que considero importante mencionar es la de los charsets que ocasionan muchos problemas, para evitarlos asegúrense que el DefaultCharset esté en off y cuando esté programando o desarrollando alguna página asegúrese de definir el charset a utilizar en los meta(asà irá todo mejor, creanme)
CITA
AddDefaultCharset off
Para habilitar la creación de sitios dentro de los directorios de un usuario(sÃ, eso mismo que se utiliza para dar servicio de hosting) lo que se necesita es el siguiente módulo(normalmente esta parte se encuentra comentada, descomentela si quiere brindar este servicio a los usuarios del sistema):
CÓDIGO
<IfModule mod_userdir.c>
UserDir public_html
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNOEXEC
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
</IfModule>
Nota:Con lo anterior los sitios de los usuarios podrán crearlos ellos mismos en la ruta /home/$nombre_usuario/public_html. Pueden crearse subdominios o alias(cosa que les enseñaré a hacer más adelante en este mismo manual) y dirigirlos a la ruta de cada usuario en caso de querer brindar ese servicio, en su defecto los usuarios del sistema podrán acceder a su página web (siempre y cuando almacenen lo que necesiten en su respectivo directorio public_html) digitando en su navegador http://www.sudominio.com/~nombre_usuario.
Agregando Sitios:
Bueno, para agregar un sitio web, necesitamos dos cosas: primero que nada configurar apache para que pueda saber cuál directorio tiene que buscar para tomar el sitio y asà poder publicarlo y segundo, crear el directorio dónde vamos a almacenar los datos para publicar nuestro sitio web.
Configuración:
Primero vamos a ir a editar el archivo de configuración de apache:
CÓDIGO
vi /etc/apache/httpd.conf
Al final del mismo para crear un directorio agregaremos el siguiente código(voy a comentarlo internamente, asà que al encontrar el signo '#' será el inicio de mi explicación para ustedes).
CITA
<VirtualHost *>
#Email del webmaster de este sitio
ServerAdmin webmaster@sudominio.com
#directorio en el que se almacenarán los ficheros y demás que necesiten al crear un site
DocumentRoot /var/www/www.sudominio.com/
#nombre al cuál responderá el site(esto se configura en el DNS para que sirva), el nombre principal del apache en esta configuración será www.sudominio.com (arriba lo configuramos asÃ), acá creamos el directorio que buscará apache cuando un usuario digite ese nombre en su navegador, por ellos vamos a ponerle el mismo nombre.
ServerName www.sudominio.com
#entradas para colocar las rutas de los archivos que almacenarán cualquier evento que haya en este sitio, tales como errores e información sobre los ingresos al sitio
ErrorLog /var/log/apache/www.sudominio.com-error.log
CustomLog /var/log/apache/www.sudominio.com-access.log common
</VirtualHost>
Nota:Como ven, para agregar virtualhost o sitios(como les llamo) necesitan tener el nombre(ServerName)asociado al DNS(sin un DNS no les servirán esos nombres). En caso de querer publicar un site que se encuentre en el directorio de un usuario(como en los hostings)basta con que en la ruta del directorio(DocumentRoot), agreguen la ruta correspondiente al usuario al que quieran darle el servicio(/home/$nombre_usuario/public_html). Utilizando esa misma estructura, puede crear todos los VirtualHost que guste(recuerde asociar los nombres de los sites en el DNS), podrÃamos agregarlos con N cantidad de nombres más (lolito.sudomio.com, hola.sudominio.com, etc .. ).
Completada la configuración reiniciemos apache va? :P
CÓDIGO
/etc/init.d/apache restart
Publicando Sitios:
Bien, ya vamos avanzando, ahora falta que creemos el directorio llamado www.sudominio.com en la ruta /var/www/
CÓDIGO
mkdir /var/www/www.sudominio.com
Para hacer la prueba (necesaria en un buen manual :P ) vamos a crear dentro del directorio /var/www/www.sudominio.com un archivo cuyo nombre será index.php y le digitaremos las lÃneas que pondré abajo:
CÓDIGO
vi /var/www/www.sudominio.com/index.php
/var/www/www.sudominio.com/index.php
CITA
<?php
echo 'prueba completamente éxitosa, un saludo a todos (uhh, olvidé el famoso hola mundo :sad: )';
echo '<br>Hola mundo!!!!';
?>
Recuerdan que les dije que habÃa que hacer el www-data propietario del directorio y que luego se los dirÃa??, wow, buenas noticias, el momento ha llegado :P :
CÓDIGO
chown -R www-data:www-data /var/www/www.sudominio.com/
chmod -R 755 /var/www/www.sudominio.com/
chmod -R 755 /var/www/www.sudominio.com/
Listo, ahora podremos probar nuestro site (y de paso todo y php) digitando en nuestro navegador http://www.sudominio.com (repito que el nombre sólo funcionará si tiene su DNS correctamente bien configurado y con el subdominio agregado!, ya sé que lo repito mucho, pero es para que luego no me digan que no se les dije :P , si usted aún no cuenta con el server DNS que tanto les menciono, en lugar del nombre utilice http://localhost), deberá verse algo como lo siguiente:

Agregando Alias:
Bueno, para empezar sé que muchos se preguntarán qué es un alias. Este concepto para muchos es ajeno, creo que con un site todos están relacionados de alguna u otra manera y saben que tiene un directorio asociado(pues se los vengo explicando desde hace rato ya). Pues resulta que un alias es un directorio virtual,esto significa que se encuentra en una ubicación distinta (mucho muy distinta) a la que se podrÃa suponer al digitar una URL, podemos definir varios aliases asociados a nuestro sitio principal ya configurado (www.sudominio.com)y simular que tiene múltiples directorio más (aunque en realidad dentro del directorio correspondiente a nuestro ServerName no existe ningún directorio con ese nombre).Espero haberme explicado bien, cualquier duda los invito a evacuarla en la casilla de los comentarios :lol:
Configuración:
Para empezar necesitamos meterle mano al fichero de configuración de apache(/etc/apache/httpd.conf) y localizar la sección de aliases que tiene una descripción en inglés que puede que sea similar a la siguiente:
CITA
# Aliases: Add here as many aliases as you need (with no limit). The format is
# Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL. So "/icons" isn't aliased in this
# example, only "/icons/"..
Seguidamente a esa descripción, encontrarán unas etiquetas como las siguientes:
CITA
<IfModule mod_alias.c>
#acá dentro hay más código, al final del mismo, pueden agregar los Alias que quieran, el formato es el siguiente:
Alias /prueba/prueba /var/www/prueba/
</IfModule>
Nota: como pueden ver, estamos dirigiendo el alias prueba a un directorio diferente al del NameServer principal. Luego de modificar el archivo de configuración recuerden reiniciar apache
Creando el Directorio para nuestro alias:
Finalizada la configuración crearemos nuestro directorio virtual para la prueba y le daremos los permisos necesarios:
CÓDIGO
mkdir /var/www/prueba/
chown -R www-data:www-data /var/www/prueba/
chmod -R 755 /var/www/prueba
chown -R www-data:www-data /var/www/prueba/
chmod -R 755 /var/www/prueba
Dentro del directorio al igual que en la prueba anterior, creen un archivo llamado index.php y coloquenle lo siguiente:
CITA
<?php
echo 'esto es una prueba de alias, les juro que no estoy dentro de un directorio que está dentro de otro directorio que se llama prueba ';
?>
Nuestra prueba de alias está lista, digitamos http://www.sudominio.com/prueba/prueba:

Vaya, hasta este punto, les cuento que estoy sumamente agotado, me daré un break xDDD (deberÃan dárselo ustedes también, un jueguito ahorita no caerÃa mal xD)
Bueno, a seguir con este manual, quedan pendientes las instalaciones y configuraciones de MySQL Server y postgreSQL. Lo bueno que no es nada difÃcil tampoco, sólo tenganle un poquillo de paciencia :P
Instalando y Configurando MySQL Server
Instalación:
Instalaremos MySQL Server digitando el siguiente comando:
CÓDIGO
apt-get install mysql-common mysql-server-5.0 mysql-client-5.0
Para la creación y administración de la base de datos (creación de usuarios y asignar contraseñas a los usuarios (incluyendo el user root)), existe un paquete llamado phpmyadmin:
CÓDIGO
apt-get install phpmyadmin
Nota: Agregue un alias en el apache que lo diriga al directorio /usr/share/phpmyadmin (unos pasos atrás les expliqué cómo crear nuevos alias, no olvide reiniciar apache), hecho esto podrá ingresar a phpmyadmin digitando la URL http://localhost/phpmyadmin/ en su navegador:
CITA
Alias /phpmyadmin /usr/share/phpmyadmin
Configuración:
Es de suma importancia poner una clave al usuario root, ya que por defecto mysql no asigna ninguna contraseña a este usuario, el cual tiene permisos completos sobre todos los usuarios y bases de datos existentes en MySql, no es nada recomendable dejar esta contraseña tan importante en blanco, asà que nosotros vamos a asignarle una seguidamente.
Para realizar esto ejecutamos en la consola los siguientes comandos (todo lo escrito que sea precedido por # es un comentario por lo cual debe obviarse al ejecutarlo en la linea de comandos):
Ingrese a mysql utilizando el comando root
CÓDIGO
#Entrando a MySql con el usuario root (super usuario de mysql, el doña toda)
mysql -u root -p
#la primera vez que ingrese no le pedirá password, una vez que asignemos una contraseña a mysql server deberá digitar el password a partir del momento en que se lo pida
# Utilizando la base de datos de mysql para realizar cambios sobre ella
mysql> use mysql;
#acá modificamos la contraseña del usuario “root' la sección <nueva clave>debe ser sustituida por la clave deseada(reemplace todo lo que se encuentra entre comillas simples en esa sección, pero no elimine las comillas)
mysql> UPDATE user SET Password=password('<nueva clave>') WHERE User='root';
#Por ejemplo si se desea poner la clave “ejemplo� se verá de la siguiente manera:
mysql> UPDATE user SET Password=password('ejemplo') WHERE User='root';
Nota: Quién no sea muy partidario de utilizar la consola, puede utilizar phpmyadmin para cambiar las contraseñas de ese y cualquier otro usuario de la base de datos y para crear las bases de datos.
Considero que phpmyadmin tiene una interfaz bastante sencilla de utilizar, asà que no explicaré el proceso para realizar las tareas ya mencionadas. Si quiere saber comandos de consola más detallados sobre MySQL Server, puede visitar la sección de documentación en su página web: http://www.mysql.com/doc/
Instalando y Configurando PostgreSQL
**Esta sección queda pendiente, desde hace meses que hice este manual, hasta hoy lo vuelvo a tocar, asà que lo completaré cuando me sienta mejor para escribir :P
Este manual es de libre distribución, puede utilizarlo, reproducirlo y distribuirlo a su antojo siempre y cuando respete los créditos del autor y haga públicas sus mejoras.

