12 mar

Instalación de Owncloud 4.5 + nginx + php-fpm en raspbian

Hace poco me compre una raspberry pi, y bueno intentando sacarle un poco mas de provecho monte un owncloud, lo primera vez lo hice con Apache+php, pero debido aque tengo alguno que otra cosa corriendo en la raspberry, pues se ahogaba nada más empezar…

Así que lo monte con lo siguiente:

Owncloud 4. 5 + nginx + php-fpm

Primero de todo vamos a instalar nginx y lo arrancamos

sudo apt-get install nginx

sudo /etc/init.d/nginx start

Podemos comprobar que el proceso se hizo correctamente haciendo una petición al puerto 80 de nuestra raspberry.

Ahora instalaremos el php-fpm

sudo apt-get install php5-fpm
sudo apt-get install php-xml-parser php5-intl
sudo apt-get install php5-sqlite smbclient curl libcurl3 php5-curl

Bueno pues ya tenemos instalado el tema, ahora lo que debemos hacer es que se empiecen hablar entre ellos dos, vaya que se lleven bien….

Primero vamos a configurar php5-fpm, iremos

sudo vim /etc/php5/fpm/php-fpm.conf

Aquí modificaremos las siguientes lineas según nuestra configuración, yo por ejemplo tengo añadido un usb a la raspberry, de tal manera que envío allí los logs de los servicios(por supuesto tiene que tener permisos el usuario para escribir), evitando que machaque a la tarjeta SD donde esta el SO.

error_log = /mnt/usb/fpm-log/php5-fpm.log
log_level = warning
include=/etc/php5/fpm/pool.d/*.conf

Después en el php.ini configuraremos las opciones de subir ficheros

sudo vi /etc/php5/fpm/php.ini
file_uploads = On
upload_tmp_dir = /mnt/descargas/owncloud/tmp
upload_max_filesize = 4096M
max_file_uploads = 5000
memory_limit = 128M

Importante, el valor upload_max_filesize, ya que es uno de los dos que limitara el tamaño máximo de fichero que podremos subir, también deberemos mirar el valor de la memoria, ya que como bien sabemos nuestra raspberry no dispone de mucha, según el modelo que tengáis y la carga que tenga vuestro sistema asignar este valor.

Importante también el directorio donde vamos a subir el fichero temporal, pensar que si lo dejáis por defecto es probable que os quedéis sin memoria en el SD, bueno con este ya hemos acabado vamos a por el siguiente

En el www.conf, se define la ip de escucha del php-fpm y el puerto.

sudo vi  /etc/php5/fpm/pool.d/www.conf
listen.allowed_clients = 127.0.0.1
listen = 0.0.0.0:9000
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Los valores de pm, son importantes, después de hacer diferentes pruebas los que pongo son suficientes para tener un rendimiento decente, por cierto mi raspberry es el modelo de 512MB.

Ahora reiniciamos el fpm

sudo /etc/init.d/php5-fpm restart

Para configurar nginx iremos al fichero nginx.conf

sudo vi /etc/nginx/nginx.conf

Bueno, en el fichero de configuración pondremos mas o menos lo que a cada uno nos interese, yo personalmente solo modifique las lineas siguiente,

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
worker_connections 768;
# multi_accept on;
}

Ahora vamos a configurar el site para owncloud en nginx.

cd /etc/nginx/sites-available/
sudo vi owncloud

Dentro del fichero de owncloud pondremos, (mirar las rutas y modificaras según vuestro entorno.)

server {
listen 80;
root /var/www;
client_max_body_size 4096M;
listen 443 ssl;
server_name ***.***.com;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;

}

location ~ ^/owncloud/remote.php(/.*)$ {
fastcgi_split_path_info ^(.+.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
#rewrite ^ https://$server_name$request_uri? permanent;
fastcgi_param HTTPS on;

}

# owncloud <a class="zem_slink" title="WebDAV" href="http://en.wikipedia.org/wiki/WebDAV" target="_blank" rel="wikipedia">WebDAV</a>
location @webdav {
fastcgi_split_path_info ^(.+.php)(/.*)$;
fastcgi_pass 127.0.0.1:9000; # or use php-fpm with: "unix:/var/run/php-fpm/php-fpm.sock;"
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
include fastcgi_params;
fastcgi_param HTTPS on;
}
}

Los puntos en negrita son los que hay que tener cuidado, ya que depende de cada entorno. Este valor “client_max_body_size 4096M;”, debe ser el mismo que pusimos en php, que es el tamaño maximo del fichero que vamos a permitir, la parte de webDAV es necesaria en el caso que queramos utilizar el cliente de owncloud.

Vamos a crear los certificados para las conexiones SSL.

Los pasos son:

  1. Generar la clave RSA
  2. Generar el CSR(aqui el Common Name debe ser el nombre del dominio)
  3. Eliminar la clave privada DES3
  4. General certificado autofirmado
  5. Poner las rutas en el fichero de owncloud
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr

Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Ahora vamos a crear el link simbólico del site.

sudo ln -s /etc/nginx/sites-available/owncloud /etc/nginx/sites-enabled/owncloud

Comprobamos que la configuración es correcta.

sudo -i
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Por ultimo, pero no menos importante, vamos a bajar el owncloud

wget http://mirrors.owncloud.org/releases/owncloud-4.5.7.tar.bz2
tar zvfj owncloud-4.5.7.tar.bz2
mv owncloud /var/www/ && chown -R www-data:www-data /var/www/owncloud

Por ultimo accedemos a la url http://ip/owncloud y empezamos la configuración, recordar que durante la configuración podréis elegir el lugar donde dejará los archivos.

Eso es todo,

Ale a disfrutarlo!

15 thoughts on “Instalación de Owncloud 4.5 + nginx + php-fpm en raspbian

  1. Pingback: Instalacion de VPN PPTP en debian | maauso

  2. Pingback: Instalación de rtorrent + rutorrent + nginx +php-fpm | maauso

  3. Pingback: Instalación de rutorrent | maauso

  4. Buenas ante todo, enhorabuena por este pedazo de blog, no lo conocia y he llegado a el por casualidad.

    Por otro lado, soy un autentico novato en esto de linux. Acabo de aterrizar en el mundo con mi raspberry y aver como se me va dando.

    Dos cosas, la primera es que al seguirte me mandas un mail de confirmacion, pero me dice que ha expirado, no se si es un error o que puede ser.

    Por otro lado, he seguido paso a paso lo del tema del owncloud, pero al llegar al punto de crear los certificados me pierdo muchisimo XD lo he hecho, pero al crear el link simbolico del sitio (ni idea de que es esto) me devuelve esto

    nginx: [alert] could not open error log file: open() “/var/log/nginx/error.log” failed (13: Permission denied)
    2013/03/31 22:21:58 [warn] 3001#0: the “user” directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    2013/03/31 22:21:58 [emerg] 3001#0: open() “/var/run/nginx.pid” failed (13: Permission denied)
    nginx: configuration file /etc/nginx/nginx.conf test failed

    ¿Que hago mal?

    Saludos. y me reitero, pedazo de sitio.

    • Buenas,

      Ante todo gracias por seguirme y me alegro que te guste el blog.

      En primer lugar la verdad es que no se porque te sale el tema de expirar, lo probé hace un momento y parece que me funciono bien, igualmente es una opción de wordpress, también lo que puedes hacer es seguir la RSS o a través de twitter

      Con el error que te da, a mi me suena que se te olvido colocar sudo delante del comando que estas lanzando, o sea que si lanzas ln -s /etc/nginx/sites-available/owncloud /etc/nginx/sites-enabled/owncloud deberías poner sudo ln -s /etc/nginx/sites-available/owncloud /etc/nginx/sites-enabled/owncloud, a no se que seas root, con el comando sudo -i (lo actualice también en el blog)

      También te comento que si no has tocado alguna vez Linux, igual fuiste a coger una instalación un poco complicada, ya que todos los elementos se conectan entre ellos, y debes entenderlo para que te salga bien, pero si lo que quieres es probar y aprender te animo a que continúes y busques en Internet aquellos conceptos que no entiendas.

      Un saludo y gracias

      • Gracias por la respuesta tan rapida. Le he dado un vistazo mas profundo al tema y… me voy a volver loco… dios que de informacion y uno ya con una edad…
        En fin que llevo hoy todo el dia liado con esto y nada.
        Supongo que algo estoy pasando por alto, si no te importa, mañana (por que hoy son ya la 1:45 de la mañana y me duelen los ojos de leer xd) voy ha hacer unas capturas paso por paso y las subo en un comentario para que veas el resultado. Ya de paso si las quieres usar para el blog pues ahi las tienes. Asi puedes ver el resultado que obtengo.
        Todo esto si no te resulta mucha molestia. O si lo prefieres habro un hilo en la comunidad de raspberry (que veo que la sigues).

        Ya me contestas lo que te parezca mejor.

        Ah! En el articulo del rtorrent en la linea de comando de instalacion te faltal el “install” ;)

        Saludos. Y gracias.

  5. Buenos días, pues al final lo he montado con apache. La verdad que es algo mas sencillo, gracias por aconsejarmelo. De momento va perfecto, he tenido algunos problemas con los permisos de las carpetas, es curioso que hay poca información sobre esto, los HDD en NTFS no se llevan muy bien con linux, le daba los permisos y se los pasaba por el forro… jejejeje asi que tuve que dárselos en el fstab a la hora de que automontara el disco.

    Voy a seguir trasteando a ver que consigo, la verdad que tengo el modelo de 256M, supongo que con la de 512 ira mas desahogada, ya que con esta versión le cuesta un poco.

    Gracias por la ayuda!!!

    Y me reitero, pedazo de Blog.

  6. Muchas gracias por el tuto. Lo he seguido y he conseguido montar mi owncloud casero.

    Sólo algunas matizaciones para quien lo lea, con tu permiso y con ánimo de colaboración.

    En la versión 5 de owncloud, el fichero que hay que crearle a modo de “htaccess” de nginx ha cambiado. Ya no sirve el de la versión anterior.
    En su página recomiendan poner lo siguiente: https://github.com/owncloud/documentation/blob/master/admin_manual/installation/installation_others.rst
    Me pegué bastantes cabezazos hasta descubrir por qué no me funcionaba.

    No sé si con la versión 4 había problemas de velocidad en carga de páginas. A mí se me ralentiza muchísimo. Una solución que he encontrado ha sido instalar php-apc, que hace que me cargue muchísimo más rápido desde el lado del servidor (sudo apt-get install php-apc + reinicio de php5-fpm y nginx). Me carga 10 veces más rápido.

    Usando Raspbian wheezy he tenido algún pequeño problema al descomprimir con tar.bz2,” tar xvzf” es la forma correcta para mi sistema.

    También me dio problemas el “mv” + “chown”. Tuve que hacerlo por partes. Primero mv y finalmente el chown.

    Y ya para acabar, recomendar a quien cree las claves SSL que tengan en cuenta dónde las crean y dónde las copian posteriormente, para poder poner correctamente la ruta en el fichero de configuración.

    Un tutorial excelente, espero que hagas más. Yo por mi parte me declaro lector asiduo a partir de ahora, ya que tengo muchísimo que aprender tanto en linux como con la raspberry.

    Un abrazo.

    • Buenas tarde Borja,

      Ante todo gracias por seguir y leer mi blog, siempre hace ilusión que lo que escribes le sirva a otra gente, por supuesto te agradezco tus comentarios para mejorar el post.

      Cuando comentas el tema de htaccess, me imagino que te refieres al tipo de validación de usuario que hace owncloud, ya que el htaccess no se utiliza en este post, si es así, es posible que haya cambiado, piensa que el post es de la versión 4.5.x, en un futuro actualizare a la versión 5.0 y tendré consideración de lo que comentas.

      El tema de apc, es muy buena solución, la verdad es que lo leí en mas de un sitio que es recomendable activarlo, la version 4.5 tampoco va que se las pela, pero como mayormente utilizo el cliente de owncloud, pues no me molesta mucho que vaya lenta la web :)

      El punto de descomprimir el tar, es posible que en la versión 5.0 el fichero sea un tar.gz, entonces como bien comentas la sintaxis si que es tar xvfz, pero si es bz2, el parámetro que lo descomprime es j.

      Por lo demás estoy de acuerdo contigo, sobretodo en el SSL, que suele pasar que no asignamos bien la ruta y no nos funciona el 443.

      Por ultimo, si tienes activado el access log de nginx y te interesa ver de forma mas amigable los logs de tu raspian, te recomiendo que le eches un vistazo el post que hice sobre splunk storm.

      http://maauso.wordpress.com/2013/04/16/splunk-strom-api/

      Un saludo y gracias!

      • Pues sí que sirve, además considero que es de un nivel tirando a avanzado y con tutoriales que se salen de lo “típico”.

        Además el hecho de que se intente implementar una versión distinta de owncloud implica tener que leer mucho y buscar y rebuscar información por otros sitios, además de trastear, con lo cual se aprende no sólo de lo que se indica, sino de muchas otras cosas, y de eso se trata, de aprender y pensar por uno mismo.

        Exacto, con lo del .htaccess me refiero a que como en nginx no existe , se suple con el /etc/nginx/sites-available/owncloud que se hay que crear.

        Ahora que viene a colación, igual a ti te ocurre lo mismo. Al no ser un certificado SSL “validado”, me salta en el navegador un aviso de posible fallo de seguridad, hasta que le aplicas una regla de excepción y te deja de avisar. Yo no le hago mucha cuenta al aviso, porque me imagino que es normal, al haberlo hecho yo mismo.

        Lo de los logs, me parece muy interesante. Tanto para el control de errores como para controlar quién intenta meterse al server. Siempre he sido un apasionado de la seguridad informática, y si esto facilita la tarea, mejor que mejor.

        En cuanto tenga 100% finiquitado el owncloud, me pongo a ello. Tengo que terminar de configurar bien el no-ip.biz y los clientes. En cuanto lo pruebe te comento.

        Un saludo y gracias!

  7. Buenas! Pues despues de un tiempo he intentado seguir tu tutorial, por bichear y aprender, pero llegao al punto de comprobar si esta bien, me tira estos fallos

    [email protected]:~# nginx -t
    nginx: [emerg] SSL_CTX_use_certificate_chain_file(“/etc/nginx/ssl/server.crt”) failed (SSL: error:02001002:system library:fopen:No such file or directory error:20074002:BIO routines:FILE_CTRL:system lib error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib)
    nginx: configuration file /etc/nginx/nginx.conf test failed
    [email protected]berrypi:~#

    ¿A que se debe?

    Gracias!

    • Pues así de primeras tiene pinta que no encuentra el certificado o que no tiene permisos para abrirlo, tiene que tener permisos de lectura, tal que así.
      -rw-r–r– 1 root root 1001 feb 3 2013 server.crt
      -rw-r–r– 1 root root 887 feb 3 2013 server.key

      También te digo que el post que estas leyendo es de la versión 4.5, no se si con las 5 funciona.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>