¡Su nube, sus datos, a su manera! - ownCloud 4.0 en CentOS 6.2 + nginx + PostgreSQL
Este documento describe cómo instalar y configurar ownCloud por "ownCloud community" en un servidor web basado en CentOS 6.2 desde el paquete tar en nginx y php-fpm con una base de datos postgreSQL como backend. Para otras distribuciones, puede haber cambios menores en los procedimientos de instalación de los requisitos previos del software. Esta guía no solo ayudará a instalar el producto, sino que también comprenderá por qué ciertos puntos se realizan de la manera en que se realizan (esto es más útil para los usuarios con poco o ningún conocimiento que, como yo hace algún tiempo, recién comenzamos a usar Linux).
¿Qué es ownCloud?
Es una herramienta para compartir archivos/contactos/calendarios de grupos o empresas que, desde mi punto de vista, aprovecha al máximo tanto Dropbox como GroupOffice (a excepción de la integración de correo electrónico hasta ahora), y no es tan desordenada o pesada como Alfresco o Sharepoint.
Enlaces a varias secciones del desarrollador:
- Página de inicio del producto:http://owncloud.org/
- IRC:http://webchat.freenode.net/?channels=owncloud
- Soporte:http://owncloud.org/support/
No garantizo que funcionará para usted, ya que más adelante podría haber cambios en el software, tanto en el requisito previo como en el principal, realizados de tal manera que se rompan o no permitan que los procedimientos mencionados en este tutorial se completen con éxito.
PD Todos los errores agregados son míos. Use comentarios o navegue hasta IRC.
Nota Preliminar
En este tutorial usamos:
- Medios de instalación de Centos 6.2
- Nombre de host:owncloud.example.com
- Dirección IP:192.168.1.100
- Dirección del enrutador:192.168.1.1
- Máscara de red:255.255.255.0
- Suponga (imagine) que el servidor está conectado a la red pública de Internet
- Usamos nuestra computadora para administrar el servidor de forma remota a través de ssh (masilla en Windows), incluso si tiene el servidor a su lado o lo tiene como una máquina virtual que se ejecuta en su sistema operativo principal
- GNU vim como nuestro principal editor de texto. Pero siéntete libre de usar cualquier otro de tu agrado
Requisitos
Necesitaremos una instalación limpia (mínima) que funcione de Centos 6.2 (x86 o x86_64 es irrelevante), yo personalmente uso la versión x86_64 y le sugiero que haga lo mismo.
Primero lo primero
Inicie sesión en la consola del servidor como raíz. Se encontrará en el mensaje [[email protected] ~]#.
Prefiero ciertas configuraciones, que son completamente opcionales, pero puede que las encuentre útiles más adelante. Configuré mi terminal para mostrar la salida en color con la fecha, la hora, el nombre del servidor y la carpeta actual en el indicador. También para mostrar el historial de comandos con fecha/hora. También aumento los valores de tamaño de historial predeterminados.
Para hacerlo, ejecute:
vi ~/.bash_profile
Agregue las líneas mencionadas después de la directiva PATH de exportación. En caso de que no lo sepa, al presionar "i" ingresa al modo de inserción, "ESC" sale. Vi es vi :)
#History size to hold 50.000 commands and inflate filesize ten times bigger export HISTSIZE=50000 export HISTFILESIZE=500000 #Show history with date as example: "24.05.2012 - 14:28:56" export HISTTIMEFORMAT="%d.%m.%Y - %H:%M:%S " #Autocolor output of "ls" command export LS_OPTIONS='--color=auto' eval "`dircolors`" #Set prompt to display as example: "Thu May 24 2012 14:28:56 owncloud.example.com of root @ ~]" #and colorize date, time and location differently. Set all input text to default values. PS1="\e[1;37m\][\e[1;36m\] \d \D{%Y} \e[1;31m\]\t \e[1;37m\] \H of \u @ \W] \033[00m\]"
Guardar y salir del archivo. Nuevamente, si no lo sabe, fuera del modo de inserción, ingrese ":wq" y presione enter para guardar y salir, o simplemente presione "ZZ" para hacer lo mismo. Para volver a iniciar sesión en la terminal para aplicar los cambios, ejecute:
exit
Redes
Si no configuró una dirección IP estática durante la instalación, digamos que tiene un enrutador habilitado para DHCP, debe hacerlo ahora; de lo contrario, continúe con el siguiente paso.
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Cambie o agregue solo las líneas mencionadas.
BOOTPROTO="none" NETWORK="192.168.1.0" NETMASK="255.255.255.0" IPADDR="192.168.1.100" GATEWAY="192.168.1.1"
Guardar y Salir. Luego reinicie la red:
service network restart
Verifique que la red esté reconfigurada ejecutando:
ifconfig
Ahora debería poder acceder al servidor en 192.168.1.100 como raíz. Pero no hagas eso todavía, primero completa el siguiente paso.
Asegurando El Servidor
Antes de continuar, dado que asumimos que el servidor está, de hecho, conectado a Internet, debemos asegurarlo. Haremos tres cosas.
- Vuelva a configurar el servidor ssh para que no permita el inicio de sesión raíz y cambie el puerto predeterminado 22 a otro, menos común, es decir, 60606,
- Configure iptables para permitir conexiones entrantes en el nuevo puerto,
- Agregue nuestro primer usuario del sistema para iniciar sesión con él a través de ssh.
-
Proteger el inicio de sesión remoto
Si aún no ha iniciado sesión desde la consola al servidor (me refiero a la consola local, no ssh todavía), inicie sesión como root y luego ejecute:
vi /etc/ssh/sshd_config
En la línea trece del archivo predeterminado inalterado (en caso de que se pregunte nuevamente, escriba ":set number" y presione enter fuera del modo de inserción para obtener los números de línea) hay una directiva del Puerto 22. Duplíquelo, cambie el número de puerto a 60606 y elimine el comentario.
Luego busque (fuera del modo de inserción presione "/" y escriba la frase que está buscando) Directiva PermitRootLogin yes duplique nuevamente y cambie su valor a no y elimínelo también , luego guarde el archivo. Ah, y es ":noh" para desactivar el resaltado.
Reiniciar sshd después:service sshd restart
-
Configuración de iptables
Primero verifique las iptables ya existentes:
iptables -L -v --line-numbers
En la instalación predeterminada, en la posición '4', habrá una directiva para aceptar nuevas conexiones tcp en el puerto ssh predeterminado, debemos deshacernos de él, por lo tanto, ejecute:
iptables -D INPUT 4
Ahora necesitamos permitir conexiones al puerto 60606 en su lugar. Ejecutar:
iptables -I INPUT 4 -p tcp -d 192.168.1.100 --dport 60606 -j ACCEPT
Por último, para guardar el estado actual de iptables, ejecute:
servicio iptables guardar
servicio iptables reiniciar -
Añadiendo primer usuario
Todo está bien ahora, excepto por una cosa, nos hemos prohibido el uso de ssh, ya que la raíz no está permitida y todavía no hay otros usuarios del sistema. Hora de corregir:
useradd -c "ownCloud system user" -m -n cloudadmin
Establecer contraseña para este usuario:
passwd cloudadmin
Hecho. Puede establecer la contraseña para el usuario en el primer comando, pero de esta manera el valor de la contraseña será visible durante la entrada en la ventana del terminal y también se guardará en .bash_history del usuario root, eso no es deseable.
Ahora puede iniciar sesión a través de ssh ejecutando el siguiente comando en la ventana de su terminal en la computadora local:ssh [email protected] -p60606
Pasos previos a la configuración
En la mayoría de los casos, la instalación del software es bastante sencilla y podríamos haber "comprobado" la mayor parte durante la instalación inicial, pero prefiero hacer las cosas a mano.
Intencionalmente divido la instalación en secciones.
-
Iniciar sesión como superusuario
En este mismo momento, debería estar en el indicador de la consola como usuario de clouddmin. Para obtener privilegios de root, ejecute:
su -
-
Repositorios de software
Para usar el software deseado, se requieren dos repositorios.
Primero EPEL, ejecute:rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-6.noarch.rpm
Y no, i386 no es un error, es lo mismo para los sistemas de 32 y 64 bits.
Entonces, Remi, ejecuta:rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
Ahora verifique los repositorios epel y remi y, en caso de que no esté allí, configure enable=1 ejecutando:
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpmvi /etc/yum.repos.d/epel.repo
Finalmente, actualice su sistema. Incluso CentOS recién instalado puede requerir una actualización primero. Ejecutar:
vi /etc/yum.repos.d/remi.repoyum update -y
-
Tiempo de precisión
Es bueno estar sincronizado con el resto del mundo, ejecuta:
yum instalar ntp
servicio ntpd iniciar
chkconfig ntpd en
ntpd -
Algunas otras herramientas
Para hacer mi vida un poco más fácil, uso vim en lugar de vi, htop en lugar de top, elinks para probar cosas rápidamente desde la terminal y mc, como un administrador de archivos bueno y no solo de doble panel, se requiere wget para descargar cosas y man es esencial cuando quieres leer casi cualquier cosa. Ejecutar:
yum install vim htop elinks mc wget man -y
Configuración de ownCloud
-
Requisitos previos de software
Un montón de cosas de php, ejecute:
yum install php-fpm php-gd php-ldap php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-shout php-snmp php-soap php-tidy php-pgsql
Edite php.ini, ejecute:
vim /etc/php.ini
Hay cuatro directivas para cambiar,
la primera debe estar en la línea 736, la directiva post_max_size
la segunda en la línea 848, la directiva cgi.fix_pathinfo
la tercera en la línea 885, la directiva upload_max_filesize
la última en línea 956, directiva date.timezone modifíquelo según la ubicación de su servidor.[...] post_max_size = 64M [...] cgi.fix_pathinfo = 0 [...] upload_max_filesize = 64M [...] date.timezone = "Europe/Prague" [...]
En caso de que no sepa cómo, puede encontrar el nombre de su zona horaria ejecutando:
cat /etc/sysconfig/clock
Luego, configure php-fpm para usar unix socket en lugar de tcp stack, ejecute:
vim /etc/php-fpm.d/www.conf
Desde la línea doce, haz que se vea así:
;listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sock
Iniciar php-fpm:
chkconfig php-fpm en
servicio de inicio de php-fpm -
Backend - PostgreSQL
Para instalarlo y configurarlo, ejecute:
yum install postgresql postgresql-libs postgresql-server
servicio postgresql initdb
servicio postgresql inicio
chkconfig postgresql enInicie sesión en postgres como usuario del sistema postgres, cree usuario de base de datos, base de datos y otorgue privilegios
su - -c "psql" postgres
CREAR USUARIO clouduser CON CONTRASEÑA 'userpass';
CREAR BASE DE DATOS clouddb PROPIETARIO clouduser CODIFICACIÓN 'UTF8';
CONCEDER TODOS LOS PRIVILEGIOS EN LA BASE DE DATOS clouddb A clouduser;
\qModifique el archivo de configuración de postgresql para permitir inicios de sesión con contraseña:
vim /var/lib/pgsql/data/pg_hba.conf
-
Buscar
# Conexiones locales IPv4:
alojar todas las 127.0.0.1/32 ident -
Y modificarlo a
# Conexiones locales IPv4:
host all all 127.0.0.1/32 contraseña
Ahora reinicie la base de datos:
service postgresql restart
-
-
servidor web nginx
Instalar, configurar para iniciar en el arranque y luego detenerlo:
yum install nginx
service nginx start
chkconfig nginx on
service nginx stopPrepare el archivo de configuración para el sitio web ownclod:
vim /etc/nginx/conf.d/owncloud.conf
# redirect http to https. server { listen 80; server_name owncloud.example.com; rewrite ^ https://$server_name$request_uri? permanent; # enforce https } # owncloud (ssl/tls) server { listen 443 ssl; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key; server_name owncloud.example.com; root /var/www/owncloud; index index.php; client_max_body_size 64M; # set maximum upload size # deny direct access location ~ ^/(data|config|\.ht|db_structure\.xml|README) { deny all; } # default try order location / { try_files $uri $uri/ @webdav; } # owncloud WebDAV location @webdav { fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; include fastcgi_params; } # enable php location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS on; include fastcgi_params; } }
Ahora vamos a crear certificados para el servidor, responda a las preguntas de acuerdo con su configuración:
mkdir -p /etc/nginx/certs/
cd /etc/nginx/certs/
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key - out server.csr
cp server.key server.key.orig
openssl rsa -in server.key.orig -out server.key
openssl x509 -req -days 365 -in server. csr -signkey servidor.clave -out servidor.crtVuelva a cargar nginx para habilitar la nueva configuración:
service nginx reload
-
archivos y directorios ownCloud
La instalación de ownCloud consiste en descargar y descomprimir el archivo, con algunos ajustes en el lado del servidor, por lo tanto, ejecute:
cd /tmp
wget http://download2.owncloud.org/releases/owncloud-4.0.0.tar.bz2
tar xjf owncloud-4.0.0.tar.bz2
mv owncloud /var/www/
mkdir -p /var/www/owncloud/data
chmod 770 /var/www/owncloud/data
chown -R root:apache /var/www/owncloudY una vez más, apache como grupo en el último comando no es un error. php-fpm se ejecuta por defecto como usuario apache
-
Acceder al sitio
Abra el puerto 443 para poder acceder al sitio web, ejecute:
iptables -I INPUT 4 -p tcp -d 192.168.1.100 --dport 443 -j ACCEPT
servicio iptables guardar
servicio iptables reiniciar
Ejecución de prueba
Vaya a https://owncloud.example.com a través del navegador de su elección y finalice el procedimiento de instalación.
Elija el nombre de usuario y la contraseña del administrador, elija PostgreSQL como backend de la base de datos y publique los valores apropiados en la configuración de conexión de la base de datos.
Disfrutar.
Solución de problemas
Los archivos de registro se encuentran de la siguiente manera:
/var/www/owncloud/data/owncloud.log
/var/log/php-fpm/www-error.log
/var/log/nginx/access.log
/var /log/nginx/error.log