Google+

miércoles, 27 de enero de 2010

Instalar StatusNet en Fedora


Vamos a crear microbloggin, utilizaremos StatusNet , para quien no lo conozca, identi.ca esta basado en esta herramienta y es un competidor de twitter. A mi personalmente me gusta más identi.ca pero para gustos los colores.

He utilizado Fedora para esto, la versión 12 exactamente.



Parar iptables por que en fedora es muy restrictivo:
#service iptables stop

Instalar apache (httpd) php y sus correspondientes módulos:
#yum install httpd php php-gd php-xml php-mbstring php-tidy php-mysql

Como veis he puesto el paquete php-mysql por que utilizaremos una base de datos mysql, pero si queréis utilizar postgresql deberéis instalar php-pgsql en vez de php-mysql

Instalar mysql


#yum install mysql-server

Iniciar mysql:
#/etc/init.d/mysqld start

Creamos una password al usuario root de la base de datos, este usuario root no tiene nada que ver con el usuario root del sistema. Le pondré de password 123456:
#mysqladmin -u root password 123456

Y ahora nos conectamos para crear la base de datos
#mysql -u root -p

mysql>create database statusnet;

mysql>exit

Nos bajamos el statusnet:
#wget http://status.net/statusnet-0.8.2.tar.gz

#tar xvf statusnet-0.8.2.tar.gz

Copiamos el contenido de lo que hemos descargado a la carpeta del apache:
#cp -r statusnet-0.8.2/* /var/www/html/

Pasos previos:
#chmod a+w /var/www/html
#chmod a+w /var/www/html/avatar/
#chmod a+w /var/www/html/background/
#chmod a+w /var/www/html/file/

Editamos el fichero de apache:
#vi /etc/httpd/conf/httpd.conf

Buscamos la parte esta:
<Directory "/var/www/html
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Y veis que he cambiado el "AllowOverride None" por "AllowOverride All". Esto sirve para que las url estén más limpias.

Arrancamos apache:
#/etc/init.d/httpd start

Abrimos nuestro navegador y entramos en la siguiente dirección:
http://192.168.0.10/install.php

Empieza la parte instalación de manera gráfica.



Campos rellenados  a nuestro entorno



Todo ok:



Aquí lo tenemos listo para empezar:



No tiene una parte administración, así que todas las opciones que queramos modificar deberemos hacerlas en ficheros de configuración, si alguien tiene curiosidad por saber algo que lo postee

Sphinx: para buscar noticias y usuarios (Opcional)

Instalamos estos paquetes:
#yum install php-devel php-pear gcc libsphinxclient-devel

#pecl install sphinx

Editamos el php.ini
#vi /etc/php.ini

Y añadimos esta linea:
extension=sphinx.so

Buscamos donde se aloja el comando indexer,  y nos quedamos con la ruta:
#whereis indexer

Copiar el sphinx.conf a /etc
#mv /etc/sphinx/sphinx.conf /etc/sphinx/sphinx.conf.orig

#mv /var/www/html/sphinx.conf.sample /etc/sphinx/sphinx.conf

Editamos el fichero que hemos movido para adaptarlo a nuestra base de datos:
#vi /etc/sphinx/sphinx.conf

Debe de quedar más o menos así
source src1
{
type                    = mysql
sql_host                = localhost
sql_user                = root
sql_pass                = 123456
sql_db                  = statusnet
sql_port                = 3306
sql_query               = SELECT id, UNIX_TIMESTAMP(created) as created_ts, nickname, fullname, location, bio, homepage FROM profile
sql_query_info          = SELECT * FROM profile where id = $id
sql_attr_timestamp      = created_ts
}

source src2
{
type                    = mysql
sql_host                = localhost
sql_user                = root
sql_pass                = 123456
sql_db                  = statusnet
sql_port                = 3306
sql_query               = SELECT id, UNIX_TIMESTAMP(created) as created_ts, content FROM notice
sql_query_info          = SELECT * FROM notice where notice.id = $id AND notice.is_local != -2
sql_attr_timestamp      = created_ts
}

index identica_notices
{
source                  = src2
path                    = /var/lib/sphinx/data/identica_notices
docinfo                 = extern
charset_type            = utf-8
min_word_len            = 3
stopwords               = /var/lib/sphinx/data/stopwords-en.txt
}

index identica_people
{
source                  = src1
path                    = /var/lib/sphinx/data/identica_people
docinfo                 = extern
charset_type            = utf-8
min_word_len            = 3
stopwords               = /var/lib/sphinx/data/stopwords-en.txt
}

indexer
{
mem_limit               = 32M
}

searchd
{
port                    = 3312
log                     = /var/log/spinx/searchd.log
query_log               = /var/log/spinx/query.log
read_timeout            = 5
max_children            = 30
pid_file                = /var/run/searchd.pid
max_matches             = 1000
seamless_rotate         = 1
preopen_indexes         = 0
unlink_old              = 1
}

Creamos el pid
#echo 8888 >> /var/run/searchd.pid &&chmod ugo+x /var/run/searchd.pid

Modificamos el fichero de un script de status.net
#vi /var/www/html/scripts/sphinx-cron.sh

Y ponemos el path correcto quedando más o menos así:
/usr/bin/indexer --config /etc/sphinx/sphinx.conf --all --rotate

Simplemente quite el local/ y la localización del sphinix.conf