This is an old revision of the document!
Instalando la pagina
Primero conseguimos el codigo desde github
$ git clone git://github.com/reddit/reddit.git
En caso de que no tengamos git lo instalamos con un simple apt-get install
Luego procedemos a instalar las dependencias de modulo:
Vamos a la carpeta r2 y procedemos
$ cd reddit/r2 $ make pyx $ python setup.py build $ sudo python setup.py develop $ make
en caso de encontrar un error como el siguiente:
build/public/static/sprite-reddit.png > build/public/static/reddit.less.tmp r2/lib/contrib/less.js/bin/lessc build/public/static/reddit.less.tmp > build/public/static/reddit.css.tmp /usr/bin/env: node: No such file or directory make: *** [build/public/static/reddit.css] Error 127
debemos instalar node.js
$ sudo apt-get install nodejs
y debemos buscar el archivo reddit/r2/r2/lib/contrib/less.js/bin/lessc y modificarlo su primera linea:
cambiamos “!/usr/bin/env node” por “!/usr/bin/env nodejs”
Una vez finalizado el make, seguimos con la base de datos de PostgreSQL
Creamos un usuario llamado postgres:
$ sudo adduser postgres
Creamos un directorio para que postgres guarde sus datos en el:
$ sudo mkdir -p /usr/local/pgsql/data $ sudo chown postgres /usr/local/pgsql/data
Luego inicializamos la base de datos:
$ sudo -u postgres initdb -D /usr/local/pgsql/data
Es posible que aqui encontremos el siguiente error:
sudo: initdb: command not found
Para corregirlo podemos anadir al PATH la direccion de initdb
export PATH=$PATH:/usr/lib/postgresql/9.1/bin/
Y luego intentamos otra vez. En caso de que esto no funcione, corremos el comando de la siguiente forma:
$ sudo -u postgres /usr/lib/postgresql/9.1/bin/initdb -D /usr/local/pgsql/data
Y por ultimo inicializamos el servidor:
$ sudo -u postgres postgres -D /usr/local/pgsql/data
Una vez mas, si nos dice que el comando es invalido lo corremos como
$ sudo -u postgres /usr/lib/postgresql/9.1/bin/postgres -D /usr/local/pgsql/data
En caso de que encontremos el siguiente error:
LOG: could not bind IPv4 socket: Address already in use LOG: could not bind IPv6 socket: Address already in use FATAL: could not create any TCP/IP sockets
Detenemos el daemon de PostgreSQL de la siguiente forma:
$ sudo /etc/init.d/postgresql stop
e intentamos otra vez
Creamos la base de datos para reddit:
$ createdb -E utf8 reddit
Y un user para conectarse con ella:
$ sudo -u postgres psql reddit > CREATE USER reddit WITH PASSWORD 'reddit'; > GRANT ALL PRIVILEGES ON DATABASE reddit TO reddit; >\q
Debemos respetar las mayusculas.
Para finalizar anadimos las funciones SQL al “schema”:
$ cd ~/reddit/ $ psql -U reddit reddit < sql/functions.sql
*Si no tenemos el servidor Apache2 debemos instalarlo en este momento*
Continuamos con Cassandra
Debemos crear un keyspace para reddit una column family llamada permacache.
El keyspace y la column family son parte de la estructura de la base de datos, terminos fuera de nuestros conocimientos.\
Lo hacemos de la siguiente forma:
$ cassandra-cli -h localhost [default@unknown] create keyspace reddit with strategy_options = {replication_factor:1}; [default@unknown] use reddit; [default@unknown] create column family permacache with column_type = 'Standard' and comparator = 'BytesType';
Esto nos va a activar la base de datos para la direccion localhost
*Nota: Es muy posible que si no tenemos Java instalado, o si tenemos una version incorrecta, la parte de Cassandra nos muestre
varios errores. Recordemos que debemos tener el Sun Java JDK version 6 o superior. Para verificar nuestra version de Java podemos
utilizar el comando java -version
Continuamos con RabbitMQ
Lo configuramos de la siguiente forma:
$ sudo rabbitmqctl add_vhost / $ sudo rabbitmqctl add_user reddit reddit $ sudo rabbitmqctl set_permissions -p / reddit ".*" ".*" ".*"
Luego memcached
Probablemente memcached ya este corriendo desde que lo instalamos
sin embargo lo podemos verificar utilizando telnet:
$ telnet localhost 11211
Si nos muestra un error, corremos el daemon de memcached
$ memcached
Es hora de probar la instalacion:
$ cd ~/reddit/r2 $ paster serve --reload example.ini http_port=8081
Podemos acceder a nuestro reddit desde http://127.0.0.1:8081/
En caso de encontrarnos con el siguiente error:
Debemos correr el siguiente comando una vez mas:
$ cd ~/reddit/ $ psql -U reddit reddit < sql/functions.sql
Ahora deberiamos poder accesar desde 127.0.0.1:8081
Sin embargo algunos exploradores muestran un error de DNS en este punto,
en ese caso intentamos accesar desde localhost:8081
Ahora, para hacer que las sub-paginas se conecten siempre a traves de localhost y no reddit.local o 127.0.0.1
debemos cambiar nuestra configuracion. Para esto vamos al directorio reddit/r2 y creamos un archivo de configuracion:
$ touch ejemplo.update
(El .update es necesario siempre)
Dentro de este archivo podemos cambiar nuestras configuraciones, como lo que necesitamos ahora:
domain = localhost:8081
Luego ejecutamos un make.ini dentro de la carpeta r2. Este make lo que hace es fusionar el archivo .ini de configuraciones
que existe por defecto (example.ini), con nuestro .update, creando un nuevo .ini, con el mismo nombre de nuestro update.
Es decir, hace una copia de example.ini pero modificando las lineas que nosotros escribimos en ejemplo.update, y llama
ese nuevo archivo ejemplo.ini
Ahora volvemos a correr nuestra instalacion de la forma:
$ paster serve --reload ejemplo.ini http_port=8081
Nota: de esta misma forma, modificando el .update podemos cambiar cualquier configuracion de nuestra pagina.
Podemos revisar las configuraciones que podemos cambiar leyendo el example.ini (Ojo: nunca modificar este archivo).