Archive

Archive for the ‘Servidores’ Category

Configurar nuestra computadora como servidor web con ubuntu

April 21st, 2011 5 comments
entorno lamp

entorno lamp

Normalmente el enfoque de la web and beer esta orientado a personas que ya tienen un cierto nivel y pueden hacer estas cosas con los ojos cerrados y varios whisky’s encima, pero estamos haciendo un esfuerzo por captar nuevos miembros, aunque estos tengan un nivel muy basico.

La idea es clara, que todos podamos aprender.

En esta ocacion vamos a configurar nuestra computadora con Ubuntu para que pueda ser un servidor web y gestionar los distintos proyectos que podamos tener.

Esto va a ser una explicacion muy orientada a la practica, esto quiere decir que no profundizaremos mucho en ciertos temas y cuestiones, para ellos por favor buscar en otras fuentes, o quizas en alguno de nuestros post (seguro algo de informacion existe).

Para poder seguir este tutorial, por favor contar con una computadora con Ubuntu instalado.

Primero que nada, vamos a instalar Apache, PHP y MySQL. Esa combinacion de software es la mas tipica, y es conocida como entorno LAMP (Linux, Apache, MySQL y PHP).

Primero instalamos Apache:

sudo apt-get install apache2.2-common

El que no sepa que hace apt-get por favor ni se moleste en seguir con este tutorial!. Bueno bueno, es el manejar de paquetes, los paquetes son “cosas” como programas, librerias, etc. Ejecutando ese comando instalara apache 2.2 mas todas las dependencias (cosas que necesita para poder funcionar).

Una vez instalado apache instalamos PHP.

sudo apt-get install php5 php5-cli php5-common php5-curl php5-gd libapache2-mod-php5filter

Con eso deberia ser suficiente para nosotros, ojo, no intalamos aun el soporte a mysql, hay razones para esto que aprenderan con el tiempo y la experiencia ganada.

Ahora vamos a instalar MySQL.

sudo apt-get install mysql-server-5.1 mysql-client-5.1

Eso nos instalara el server y client (el programa para poder acceder a mysql).

Muy bien, ya tenemos todo entonces verdad? apache, mysql y php, pero ahora vamos por el detalle, la lib de acceso a mysql para php.

sudo apt-get install php5-mysql

Con eso ya tenemos todo listo para comenzar.

Ahora bien, primero vamos a aprender a iniciar, parar y reiniciar nuestro apache (es un proceso en memoria, se lo conocemo como daemon, hay muchos daemon en nuestro ubuntu).

Los daemons o programas que estan “a la escucha” en Ubuntu son manejados por un comento que casi siempre estan en:

/etc/init.d/<algo a manejar>

Por ejemplo, para iniciar apache escribimos

/etc/init.d/apache2 start

Para detener apache

/etc/init.d/apache2 stop

Para reiniciar (por ejemplo porque cambiamos algo de la configuracion de apache o PHP).

/etc/init.d/apache2 restart

Ahora bien, vamos a ver si todo esta funcionando correctamente.

Abrimos nuestro navegador (espero que sea un chrome a estas alturas por favor) y escribimos http://127.0.0.1

Deberia salir un mensaje de “It works” o algo asi, depende de lo que les pinto en ese momento a los de apache.

Que es “127.0.0.1″ ? es la direccion ip de lookup, es decir, la direccion ip de nuestro “localhost”, nuestra computadora se refencia asi misma con esa direccion ip, en todas las computadoras del universo casi siempre es asi, siempre que hagamos ping a 127.0.0.1 estamos haciendonos un ping a nosotros mismos.

 

Ok, ahora vamos a plantear un escenario comun, imaginemos que queremos trabajar en 2 proyectos diferentes, uno se llama “los simpsons” y el otro “dale gas”. Como hacemos para tener bien separados estos proyectos? Vamos a la solucion.

Primero que nada, entendamos que apache es un servidor web, cada servidor web puede gestionar varias paginas web, cada pagina web tecnicamente es conocida como “virtual host”.

Un virtual host es una declaracion en la configuracion de apache donde basicamente le decimos que si alguien escribe en su navegador “lossimpsons.com” debe leer los archivos del directorio que le indiquemos, como asi tambien si escriben “dalegas.com”.

Los virtuals hots en apache dentro de ubuntu se encuentran en el directorio

/etc/apache2/sites-enabled/

Asi que vamos a crear un virtual host.

sudo gedit /etc/apache2/sites-enabled/lossimpsons

Se nos abre un editor de texto, asi que vamos a escribir este contenido en su interior

<VirtualHost *:80>
ServerName lossimpsons.com
DocumentRoot /var/www/lossimpsons.com/public_html
</VirtualHost>

Guardamos el archivo y cerramos el editor.

Ahora tenemos que reiniciar apache (ya dije como se hace).

Pero claro, lossimpsons.com no estan resolviendo a la direccion de internet que tengamos en ese momento, entonces como podemos hacer para probarlos?

En los sistemas operativos existe un archivo conocido como “archivo hosts” donde se pueden redefinir ciertas reglas a la hora de resolver un dominio a una direccion ip, y con estas reglas podemos forzar que un dominio tenga la direccion ip que nosotros querramos (obviamente esto solo afectara a nuestra computadora).

Para editar nuestro archivo hosts ejecutamos:

sudo gedit /etc/hosts

En mi caso, el archivo hosts de mi computadora se ve asi:

 

192.168.0.109	lortmorris-laptop	# Added by NetworkManager
127.0.0.1	localhost.localdomain	localhost
::1	        lortmorris-laptop	localhost6.localdomain6	localhost6
127.0.1.1	lortmorris-laptop
127.0.0.1       lossimpsons.com

Como veran, en la ultima linea agregue que la ip 127.0.0.1 es para el dominio “lossimpsons.com”.

Esto hara que cuando hagamos ping a lossimpsons.com la direccion ip devuelta sea “127.0.0.1″.

Ponemos en nuestro navegador entonces “lossimpsons.com” y vemos que pasa.

Si nos da error, es simplemente poque no hemos creado el document root de ese virtual host, el document root es el directorio en el cual estara nuestro sitio web (virtual host), por lo que vamos a crearlo.

mkdir /var/www/lossimpsons.com
mkdir /var/www/lossimpsons.com/public_html

Ahora vamos a meter un archivo ahi adentro para saber que todo funciona bien

echo "<?php phpinfo(); ?>"  > /var/www/lossimpsons.com/public_html/index.php

Ahora volvemos a nuestro navegador y vemos que pasa.

Si todo sale bien deberian ver una pagina web con informacion muy “rara” sobre php, apache, etc. Eso quiere decir que todo quedo bien.

Les comento para los que no se dieron cuenta, que en el comando anterior (echo …) generamos un archivo.php donde en su interior hay una funcion llamada php_info.

Lo que deberia ver es algo como esto

 

Bueno, de la misma forma que generamos el primer virtual hosts, podemos generar todos los que queramos.

Cualquier duda o comentario dejarlo en este blog :)

 

Configurar el puerto de lighttpd en Debian

April 2nd, 2011 No comments
light httpd en debian

light httpd en debian

Hace unas horas instale un lighttpd en Debian. Obviamente se instalo la ultima version, y aqui paso algo raro.

Tengo Apache en el port 80, y siempre que instalo lighttpd lo tengo que pasar al port 8080, pero la tipica configuracion

server.port = 8080

no estaba funcionando.

Note que ahora la estructura de directorios de lighttpd en /etc era similar a la logica aplicada en apache, pero no importaba si configuraba el port al 8080, lighttpd seguia diciendo

can't bind to port: :: 80 Address already in use

Buscando por internet encontra la solucion, por lo que quiero compartirla con ustedes por su alguna vez les pasa lo mismo que ami.

Agregar estas lineas en el lighttpd.conf

server.port               = 8080
server.socket = "[::]:8080"

Y comentamos la linea

#include_shell "/usr/share/lighttpd/use-ipv6.pl"

Le damos iniciar al servicio y listo, problema resuelto :)

 

Bajar todos los archivos de un ftp con wget

June 28th, 2010 2 comments
Andres Gattinoni nos trae otro lindo tip con wget, como bajar el contenido de un directorio ftp con wget.
wget -r -q -b -P /home/myuser/destination ftp://mydomain.com –ftp-user=myuser –ftp-password=mypass
Parámetros:
-r: recursivo
-q: quiet/silencioso, no imprime mensajes en la consola
-b: background, para que se ejecute en background y nos devuelva el prompt.
-P: directorio donde queremos que se guarde todo lo que bajamos
–ftp-user=: usuario FTP
–ftp-password=
: password FTP

Obviamente wget es mas que un comandito para bajar los flv de xvideos.com

Categories: FreeBSD, linux, Servidores Tags: , ,

Detectar links rotos con wget

June 28th, 2010 No comments
Con wget podemos detectar todos los links rotos de un website de una forma muy simple.
#  wget –spider  –no-parent -r -o log.txt http://website.com
–spider : recorre el site indicado, sin hacer download.
- r : recursivo
- o archivo : redigimos el output del comando
–no-parent : no subir a directorios de niveles superiores
Gracias  Andres Gattinoni por compartir el tip.

Instalar htop en FreeBSD

June 4th, 2010 No comments

Para instalar HTOP en FreeBSD (7,8, da igual)

abrimos /etc/rc.conf y agregamos  linux_enable=”YES”

vamos a : cd /usr/ports/emulators/linux_base-fc4  e instalamos

make
make install install

agregamos estas linea en  /etc/fstab

linproc /compat/linux/proc linprocfs rw 0 0

ejecutamos: mount linproc

finalmente instalamos el port de htop
cd /usr/ports/sysutils/htop

make
make install

Perfecto, ya quedo instalado htop en freebsd

Categories: FreeBSD, Servidores, sysadmin Tags: ,

error /usr/ports/textproc/iso8879 freebsd 8

June 4th, 2010 No comments

Si han instalado un servidor con FreeBSD 8, y han querido instalar algun port que requiere de iso8879 seguramente se han encontrado con el siguiente error

Stop in /usr/ports/textproc/iso8879.
*** Error code 1
Stop in /usr/ports/textproc/docbook-410.
*** Error code 1
Stop in /usr/ports/textproc/docbook.
*** Error code 1
Stop in /usr/ports/textproc/docbook.
*** Error code 1
Stop in /usr/ports/textproc/docbook-xsl.
*** Error code 1
Stop in /usr/ports/textproc/docbook-xsl.
*** Error code 1
Stop in /usr/ports/graphics/liblqr-1.
*** Error code 1
Stop in /usr/ports/graphics/liblqr-1.
*** Error code 1
Stop in /usr/ports/graphics/ImageMagick.
*** Error code 1

Stop in /usr/ports/textproc/iso8879.*** Error code 1
Stop in /usr/ports/textproc/docbook-410.*** Error code 1
Stop in /usr/ports/textproc/docbook.*** Error code 1
Stop in /usr/ports/textproc/docbook.*** Error code 1
Stop in /usr/ports/textproc/docbook-xsl.*** Error code 1
Stop in /usr/ports/textproc/docbook-xsl.*** Error code 1
Stop in /usr/ports/graphics/liblqr-1.*** Error code 1
Stop in /usr/ports/graphics/liblqr-1.*** Error code 1
Stop in /usr/ports/graphics/ImageMagick.*** Error code 1

Basicamente el bug esta reportado, pero aun no hay fix.

Solucion? simplemente copie el port de un FreeBSD 7, lo tire en el FreeBSD 8 e instale. No hubo ningun problema, quedo todo operativo y problema resuelto.

mod_rewrite para cambiar imagenes segun pais de origen

May 12th, 2010 No comments

Nuestro amigo Demian Rodriguez despues de una corta discucion en la lista, nos trae una configuracion para mod_rewrite que permite servir imagenes segun el pais de origen del visitante.

Espero que les sea util a todos.

# rewrite images by language
	RewriteCond %{HTTP_COOKIE} locale=nl_NL [NC]
	RewriteCond %{REQUEST_FILENAME} /images/(.*?)$
	RewriteCond %{REQUEST_FILENAME} !/images/nl/.*?$
	RewriteCond %{DOCUMENT_ROOT}/images/nl/%1 -f
	RewriteRule ^.*$ images/nl/%1 [NC,L]

Introducción a DNS

October 18th, 2008 No comments

Ayer, buscando una guía de configuración de bind, me encontré con este artículo que explica las nociones fundamentales sobre qué es un DNS y cómo funciona.

Me pareció muy bueno y bastante completo, así que lo comparto. A menudo noto que los programadores que trabajan en desarrollo web (y en algunos casos me incluyo), desconocen los protocolos que subyacen a sus tareas más cotidianas (HTTP, FTP, SSL, SSH, DNS, etc.) y esto dificulta muchas veces comprender lo que están haciendo o encontrar las razones de un problema específico. De la misma forma en que estoy convencido que para programar en PHP hay que tener alguna noción de C, para conocer “lo que hay abajo”, creo que para laburar en desarrollo web hay que conocer estos protocolos.

Sin más preámbulos dejo el link: ¿Cómo funciona el DNS? según Javier Smaldone.

Categories: DNS, Servidores Tags: ,

Bug en SVN

September 12th, 2008 1 comment

Estando trabajando con SVN, intente agregar una carpeta con archivos, en la cual habia un simpatico archivo llamado —index.old.php

Resultados, paso a mostrarlos:

[root@developers /usr/local/www/depaginas.com]# svn add *
svn: invalid option: —index.old.php
Type ‘svn help’ for usage.
[root@developers /usr/local/www/depaginas.com]#

En fin, me parece impresentable.

Categories: Servidores Tags: , ,

Instalar PHP 5.2.x en Centos

August 4th, 2008 1 comment

Estimado, tube un caso con un cliente al cual tube que instalar el PHP 5.2.x en su Centos 4.x, y fue una cosa que me volvio loco.

Despues de mucho googlear, encontre esta solucion que quiero compartir.

http://www.jasonlitka.com/2007/06/01/upgrading-to-php-523-on-rhel-and-centos/

[Articulo]

PHP 5.2.3 has been released. This version does not have the massive number of bug fixes that came with 5.2.2 (which included many of the patches from the Month of PHP Bugs), but it does have some useful fixes included, including the fix for the HTTP_RAW_POST_DATA bug that was introduced in PHP 5.2.2.

This build was relatively straight forward and didn’t require any modifications to the spec file from my build of 5.2.2. I’ll probably do a respin when MySQL 5.0.42 is finally marked as “released” (the source package is already available but the changelog hasn’t been updated with an official release date).

For those that like to build from source, feel free to use the Source RPM from the link below. For my repository users, the new version is already available and all you’ll need to do is run a “yum update”.

UPDATE (6/19/2007): The PHP 5.2.3 packages have been updated. The Source RPM link below has also been updated to prevent anyone from downloading an out-of-date file.

If you want compile the src rpm yourseld here are the directions.

mkdir /usr/src/redhat
chmod -R 777 /usr/src/redhat

rpm -ivh php-5.2.3-jason.1.src.rpm

cd /usr/src/redhat/SPECS/

here you have a file dot spec with the configure and build lines.

rpmbuild -bb name_of_your_package.spec (in this case i think that is PHP)

when all finish right you have one or many package in the RPMS folder, you need update your current rpms with this, with the following command.

rpm -Uvh name_of_package_output.rpm