Organizando nuestros proyectos web

Antes de plantearme el rediseño de este sitio, pensé en organizar ciertas cosas para no complicarme la vida. En primera instancia procedi a instalar el servidor Apache, el soporte del lenguaje PHP, el servidor de bases de datos MySQL y finalmente el phpMyAdmin.

Lo anterior se resume de la siguiente manera en mi querido Ubuntu Linux.

$ sudo aptitude install apache2
$ sudo aptitude install mysql-server
$ sudo aptitude install php4
$ sudo aptitude install libapache2-mod-auth-mysql
$ sudo aptitude install php4-mysql
$ sudo /etc/init.d/apache2 restart
$ sudo aptitude install phpmyadmin

Recuerde después de instalar el servidor de bases de datos MySQL establecer la contraseña del usuario root de dicho servidor por seguridad. Si no sabe como hacerlo a través de la línea de comandos existe la alternativa de establecer la contraseña utilizando phpMyAdmin.

Por defecto el servidor Apache habilita el directorio /var/www/ como directorio principal, el problema que se plantearía el trabajar en dicho directorio es que cada vez que tuviese que realizar cambios a los ficheros tendría que hacer uso de la cuenta de superusuario o root, lo cual no me agrada mucho, así que para evitar lo mencionado previamente tenía dos opciones.

La primera de ellas era modificar el fichero /etc/apache2/apache.conf y habilitar que todos los usuarios tuviesen la posibilidad de publicar sus documentos dentro del directorio /home/*/public_html, esta opción no me llamaba mucho la atención, adicionalmente, la dirección queda de cierta manera algo extensa (p.ej. http://localhost/~usuario/proyectoweb), así que opte por recurrir a una segunda opción, la cual describiré detalladamente a continuación.

En primera instancia creé dos directorios, public_html como subdirectorio de $HOME, el segundo, milmazz como subdirectorio de public_html.

mkdir $HOME/public_html
mkdir $HOME/public_html/milmazz

Seguidamente procedi a crear el fichero /etc/apache2/sites-enabled/001-milmazz, este fichero contendrá las directivas necesarias para nuestro proyecto desarrollado en un ambiente local.

<VirtualHost *>
  DocumentRoot "/home/milmazz/public_html/milmazz/"
  ServerName milmazz.desktop

  <Directory "/home/milmazz/public_html/milmazz/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
  </Directory>
</VirtualHost>

Ahora bien, necesitamos crear el host para que la directiva realmente redireccione al directorio /home/milmazz/public_html/milmazz/ simplemente tecleando milmazz.desktop en la barra de direcciones de nuestro navegador preferido. Por lo tanto, el siguiente paso es editar el fichero /etc/hosts y agregar una línea similar a 127.0.0.1 milmazz.desktop, note que el segundo parámetro especificado es exactamente igual al especificado en la directiva ServerName.

Seguidamente procedi a instalar WordPress (Sistema Manejador de Contenidos) en el directorio $HOME/public_html/milmazz y todo funciona de maravilla.

Evitando el acceso de usuarios no permitidos

Si queremos restringir aún más el acceso al directorio que contendrá los ficheros de nuestro proyecto web, en este ejemplo, el directorio es $HOME/public_html/milmazz/, realizaremos lo siguiente:

touch $HOME/public_html/milmazz/.htaccess
nano $HOME/public_html/milmazz/.htaccess

Dentro del fichero .htaccess insertamos las siguientes lineas.

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Acceso Restringido"
AuthType Basic

require valid-user

Guardamos los cambios realizados y seguidamente procederemos a crear el fichero que contendrá la información acerca de los usuarios que tendrán acceso al directorio protegido, también se especificaran las contraseñas para validar la entrada. El fichero a editar vendra dado por la directiva AuthUserFile, por lo tanto, en nuestro caso el fichero a crear será /var/www/.htpasswd.

htpasswd -c /var/www/.htpasswd milmazz

Seguidamente introducimos la contraseña que se le asignará al usuario milmazz, la opción -c mostrada en el código anterior simplemente se utiliza para crear el fichero /var/www/.htpasswd, por lo tanto, cuando se vaya a autorizar a otro usuario cualquiera la opción -c debe ser ignorada.

Estableciendo la contraseña del usuario root del servidor de bases de datos a través de phpMyAdmin.

Si usted no sabe como establecer en línea de comandos la contraseña del usuario root en el servidor de bases de datos MySQL es posible establecerla en modo gráfico haciendo uso de phpMyAdmin.

A continuacion se describen los pasos que deberá seguir:

  1. Accesar a la interfaz del phpMyAdmin, para lograrlo escribe en la barra de direcciones de tu navegador http://localhost/phpmyadmin.
  2. Selecciona la opción de Privilegios, ésta se ubica en el menú principal.
  3. Debemos editar los dos últimos registros, uno representa el superusuario cuyo valor en el campo servidor será equivalente al nombre de tu máquina, el otro registro a editar es aquel superusuario cuyo valor en el campo servidor es igual a localhost. Para editar los registros mencionados anteriormente simplemente deberá presionar sobre la imagen que representa un lapíz.
  4. Los únicos campos que modificaremos de los registros mencionados previamente son aquellos que tienen relación con la contraseña. Recuerde que para guardar los cambios realizados al final debe presionar el botón Continúe. Si deseas evitar cualquier confusión en cuanto al tema de las contraseñas es recomendable que establezcas la misma en ambos registros.

Agradecimientos

A José Parella por sus valiosas indicaciones.

11 Responses to “Organizando nuestros proyectos web”


  1. 1 Varis

    Muy bueno el post, me ha servido de mucho. Llevaba semanas peleándome con Ubuntu y me ha solucionado un par de cosas de golpe. :-D

    ¿Podrías ampliar un poco más el tema de los usuarios restringidos? ¿Cómo se listan los usuarios permitidos? Creo que no lo he entendido demasiado bien…

    Gracias!

  2. 2 MilMazz

    Las directivas empleadas en el fichero 001-milmazz evitan el acceso de todos excepto el de un rango de IPs locales, ahora bien, implanté el uso del fichero .htaccess para restringir aún más el acceso a ciertos usuarios a los proyectos web, en cambio, aquellos usuarios a los cuales deseo permitirles el acceso, los he incluido en el fichero /var/www/.htpasswd, recuerda que se utiliza este fichero por lo especificado en la directiva AuthUserFile contenida en el fichero .htaccess.

    ¿Cómo se listan los usuarios permitidos?

    Para listar los usuarios permitidos sencillamente procede a ver el contenido del fichero en cuestión. En el ejemplo expuesto el fichero que contiene esta información es /var/www/.htpasswd, así que tecleando less /var/www/.htpasswd podremos ver dicho contenido. En donde cada línea del archivo en cuestión representa un nombre de usuario y su contraseña encriptada, requerimientos necesarios para permitir el acceso al directorio de nuestros proyectos web.

  3. 3 jose

    wenas gracias por tu ayuda loque ocurre para
    hacer una comrobacion al final del acceso a los usuarios con la contraseño nose como lo hago (como sy tan novato en eso de linux todavia nose moverme bien en el entorno)
    y en el caso de que la restriccion sea mediante mensajes personalizado ¿?como serian los pasos en este caso¿?
    gracias
    saldos

  4. 4 MilMazz

    José, te agradezco seas mas explícito y claro, no entiendo lo que me preguntas.

    Te refieres a la última parte del artículo, Evitando el acceso de usuarios no permitidos?, sí es así simplemente tipea los comandos que hago mención, pero para que entiendas que hace cada uno, lo mejor es leerse la página del manual amigo.

  5. 5 jose

    gracias
    esk el problema k tengo al principio instale el apache en el ubuntu mediante la siguiente instrccion
    sudo aptittude install apache2 se instalan los paketes
    y luego kdo voy a la barra del navegador poniendo
    htp://localhost me da error entoces nose ?de donde proviene el problema¿

  6. 6 jose

    tengo problemas en la intalacion del apache
    yak me parce nisikiesiera llegan a instalarse los paketes
    ya al poner $ sudo aptitude install apache2
    y kiero probar si se ha instalado mediante la
    /etc/init.d/apache2 restart
    se me genera l siguinte :
    grep /etc/apache2/mods-enabled/userdir.conf — no existe el ficher
    /etc/apache 2/sites .available7sitio.save permiso denegado
    httpd : not runing
    haber si me puedes hechar la mano por fa yake kiero hacer un trabjo urgente sobre la restriccion de directorios mediante el htacces
    saludos

  7. 7 MilMazz

    Para comprobar que Apache se ha instalado correctamente solo coloca en tu navegador la dirección http://localhost/, si deseas reiniciar el apache debes hacerlo como superusuario, o en su defecto, haciendo uso de comando sudo, por ejemplo: sudo /etc/init.d/apache2 restart.

    Podrías decirme que error te arroja al entrar en la dirección http://localhost?.

    Podrías decirme que mensaje te sale al utilizar el siguiente comando: dpkg -l "*apache*" | grep ^ii

    Intentaste solicitar ayuda en el canal IRC #ubuntu-es, en el servidor Freenode?.

  8. 8 jose

    gracias
    es k al poner localhost en el navegador me sale
    forbidden yo dont have a permision to acces
    es decir tiene toda la pinta de ke no se ha insatlado
    mitras en la consla al poner :
    sudo /etc/init.d/apache2 restart
    Forcing reload of web server (Apache2)… grep: /etc/apache2/mods-enabled/userdir.confi: No existe el fichero o el directorio
    pues la verdad nose donde esta el fallo
    saludos

  9. 9 jose

    wenas
    al poner el comando de dpkg -l “apache” |
    se me genera lo siguiente
    ii apache2 2.0.54-5ubuntu4 next generation, scalable, extendable web se
    ii apache2-common 2.0.54-5ubuntu4 next generation, scalable, extendable web se
    ii apache2-mpm-worker 2.0.54-5ubuntu4 high speed threaded model for Apache2
    ii apache2-utils 2.0.54-5ubuntu4 utility programs for webservers

  10. 10 jose

    wenas
    haber si usted tiene una ayuda sobre la personalizacion
    de los mensajes de error en apache
    saludos

  11. 11 jose

    wenas
    haber sime pueds aclarar una cosilla por favor en el tema de la restrccion de un servidor web evitando el acceso a usuarios no permitidos es ke encontre una guia para esta configuracion ke te la voy escriendo partiendo de ke lo k se va a restrinigir es el directorio es /var/www/privado/
    1)crear el fichero htaccess
    sudo gedit /var/www/.htaccess
    2)insertar las lineas correspndiete :
    authfile ……………
    authusername ……………
    *)guarda el fichero al k ace refe authuserfile se guardan los usuarios y claves autorizadas a entrar en ese direc
    4)htpasswd -c /var/www/.htpasswd usuario
    *)edita el fichero de configuracion de apache2/sites-enabled/000-defaut
    *)AKI EL VIENE EL PASO KEME CONFUNDA Y NOSE EXACTAMENTE SI HACE FALTA O NO
    BUSCAR LAS LINEAS

    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    .SUSTITUIR LAS POR
    Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    (ENTONCES NO SE EXACTAMENTE SI ESTE PASO SE FALTA O NO )
    Guarda el fichero editado.
    Reinicia el servidor.
    GRACIAS
    SALUDOS

Comments are currently closed.