Votre cloud, vos données, à votre façon ! - ownCloud 4.0 sur CentOS 6.2 + nginx + PostgreSQL
Ce document décrit comment installer et configurer ownCloud par la "communauté ownCloud" sur un serveur Web basé sur CentOS 6.2 à partir du package tar sur un nginx et php-fpm avec la base de données postgreSQL comme backend. Pour les autres distributions, des modifications mineures peuvent être apportées aux procédures d'installation des prérequis logiciels. Ce guide vous aidera non seulement à installer le produit, mais aussi à comprendre pourquoi certains points sont traités comme ils le sont (c'est très utile pour les utilisateurs peu ou pas informés qui, comme moi il y a quelque temps, ont seulement commencé à utiliser Linux).
Qu'est-ce que ownCloud ?
C'est un outil de partage de fichiers/contacts/calendriers de groupe ou d'entreprise qui, de mon point de vue, tire le meilleur parti de Dropbox et de GroupOffice (à l'exception de l'intégration des e-mails jusqu'à présent), et n'est pas aussi encombré ou lourd qu'Alfresco ou Sharepoint.
Liens vers plusieurs sections du développeur :
- Page d'accueil du produit :http://owncloud.org/
- IRC :http://webchat.freenode.net/?channels=owncloud
- Assistance :http://owncloud.org/support/
Je ne garantis pas que cela fonctionnera pour vous, car plus tard, il pourrait y avoir des changements dans le logiciel, à la fois prérequis et principal, effectués de manière à casser ou de toute autre manière empêcher les procédures mentionnées dans ce didacticiel de se terminer avec succès.
PS Tous les bugs ajoutés sont les miens. Utilisez les commentaires ou accédez à IRC.
Remarque préliminaire
Dans ce tutoriel, nous utilisons :
- Support d'installation de Centos 6.2
- Nom d'hôte :owncloud.example.com
- Adresse IP :192.168.1.100
- Adresse du routeur :192.168.1.1
- Masque réseau :255.255.255.0
- Supposez (imaginez) que le serveur est connecté à l'Internet public
- Nous utilisons notre ordinateur pour administrer le serveur à distance via ssh (putty sur windows), même si vous avez le serveur à vos côtés, ou l'avez en tant que machine virtuelle exécutée sous votre système d'exploitation principal
- GNU vim comme éditeur de texte principal. Mais n'hésitez pas à utiliser n'importe quel autre de votre goût
Exigences
Nous aurons besoin d'une installation propre (minimale) de Centos 6.2 (x86 ou x86_64 n'est pas pertinent), j'utilise personnellement la version x86_64 et je vous suggère fortement de faire de même.
Tout d'abord
Connectez-vous à la console du serveur en tant que root.Vous serez à l'invite [[email protected] ~]#.
Je préfère certains paramètres, qui sont complètement facultatifs, mais vous pourriez les trouver utiles plus tard. J'ai configuré mon terminal pour afficher la sortie en couleur avec la date, l'heure, le nom du serveur et le dossier actuel à l'invite. Également pour afficher l'historique des commandes avec date/heure. J'augmente également les valeurs de taille d'historique par défaut.
Pour cela, exécutez :
vi ~/.bash_profile
Ajoutez les lignes mentionnées après la directive export PATH. Au cas où vous ne le sauriez pas, appuyez sur "i" pour entrer en mode insertion, "ESC" le quitte. Vi est vi :)
#Taille de l'historique pour contenir 50 000 commandes et multiplier par dix la taille du fichier .%Y - %H:%M:%S "#Autocolor output of "ls" commandexport LS_OPTIONS='--color=auto'eval "`dircolors`"#Set prompt to display as example:"Thu May 24 2012 14 :28:56 owncloud.example.com de root @ ~]"#et colorie différemment la date, l'heure et le lieu. Définissez tout le texte d'entrée sur les valeurs par défaut.PS1="\e[1;37m\][\e[1;36m\] \d \D{%Y} \e[1;31m\]\t \e[1;37m\] \H de \u @ \W] \033[00m\]"
Enregistrez et quittez le fichier. Encore une fois, si vous ne savez pas, en dehors du mode d'insertion, vous entrez ":wq" et appuyez sur Entrée pour enregistrer et quitter, ou appuyez simplement sur "ZZ" pour faire de même. Pour vous reconnecter au terminal afin d'appliquer les modifications, exécutez :
quitter
Mise en réseau
Si vous n'avez pas configuré d'adresse IP statique lors de l'installation, disons que vous avez un routeur compatible DHCP, vous devez le faire maintenant, sinon passez à l'étape suivante.
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Modifiez ou ajoutez uniquement les lignes mentionnées.
BOOTPROTO="none"NETWORK="192.168.1.0"NETMASK="255.255.255.0"IPADDR="192.168.1.100"GATEWAY="192.168.1.1"
Sauvegarder et quitter. Redémarrez ensuite le réseau :
service de redémarrage du réseau
Vérifiez que le réseau est reconfiguré en exécutant :
ifconfig
Vous devriez maintenant pouvoir vous connecter en ssh au serveur sur 192.168.1.100 en tant que root. Mais ne le faites pas tout de suite, commencez par l'étape suivante.
Sécuriser le serveur
Avant d'aller plus loin, puisque nous supposons que le serveur est en fait connecté à Internet, nous devons le sécuriser. Nous ferons trois choses.
- Reconfigurez ssh-server afin qu'il n'autorise pas la connexion root et remplacez le port 22 par défaut par autre chose, moins courant, c'est-à-dire 60606,
- Configurez iptables pour autoriser les connexions entrantes sur le nouveau port,
- Ajoutez notre premier utilisateur système afin de vous connecter avec lui via ssh.
-
Sécuriser la connexion à distance
Si vous n'êtes pas encore connecté de la console au serveur (c'est-à-dire la console locale, pas encore ssh), connectez-vous en tant que root, puis exécutez :
vi /etc/ssh/sshd_config
Sur la ligne treize du fichier par défaut non modifié (au cas où vous vous poseriez la question à nouveau, tapez ":set number" et appuyez sur Entrée en dehors du mode d'insertion pour obtenir les numéros de ligne), il y a la directive Port 22. Dupliquez-le, changez le numéro de port en 60606 et décommentez.
Ensuite, recherchez (en dehors du mode d'insertion, appuyez sur "/" et tapez la phrase que vous recherchez) Directive PermitRootLogin oui dupliquez-la à nouveau et changez sa valeur en non et décommentez-la également , puis enregistrez le fichier. Oh, et c'est ":noh" pour désactiver la surbrillance.
Redémarrez ensuite sshd :redémarrage du service sshd
-
Configurer iptables
Vérifiez d'abord les iptables déjà existants :
iptables -L -v --line-numbers
Dans l'installation par défaut à la position '4', la directive acceptera les nouvelles connexions tcp sur le port ssh par défaut, nous devons nous en débarrasser, donc exécuter :
iptables -D ENTRÉE 4
Nous devons maintenant autoriser les connexions au port 60606 à la place. Exécuter :
iptables -I ENTRÉE 4 -p tcp -d 192.168.1.100 --dport 60606 -j ACCEPTER
Enfin, pour enregistrer l'état actuel d'iptables, exécutez :
sauvegarde du service iptables
redémarrage du service iptables -
Ajout du premier utilisateur
Tout va bien maintenant, sauf pour une chose, nous nous sommes bannis de ssh, car root n'est pas autorisé et il n'y a pas encore d'autres utilisateurs du système. Temps de correction :
useradd -c "utilisateur système ownCloud" -m -n cloudadmin
Définir le mot de passe pour cet utilisateur :
passwd cloudadmin
Fait. Vous pouvez définir un mot de passe pour l'utilisateur dans la première commande, mais de cette façon, la valeur du mot de passe sera visible lors de la saisie dans la fenêtre du terminal et sera également enregistrée dans .bash_history de l'utilisateur root, ce qui n'est pas souhaitable.
Maintenant, vous pouvez vous connecter via ssh exécutant la commande suivante dans la fenêtre de votre terminal sur l'ordinateur local :ssh [protégé par e-mail] -p60606
Étapes de pré-configuration
L'installation du logiciel dans la plupart des cas est assez simple et nous aurions pu en "vérifier" la plupart lors de l'installation initiale, mais je préfère faire les choses à la main.
Je divise intentionnellement l'installation en sections.
-
Se connecter en tant que superutilisateur
À ce moment précis, vous devriez être sur l'invite de la console en tant qu'utilisateur clouddmin. Pour obtenir les privilèges root, exécutez :
su -
-
Référentiels de logiciels
Afin d'utiliser le logiciel souhaité, deux référentiels sont nécessaires.
D'abord EPEL, exécutez :rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-6.noarch.rpm
Et non, i386 n'est pas une erreur, c'est la même chose pour les systèmes 32 bits et 64 bits.
Puis Rémi, exécutez :rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
Maintenant, vérifiez les dépôts epel et remi et, au cas où il n'y en aurait pas, définissez enabled=1 en exécutant :
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpmvi /etc/yum.repos.d/epel.repo
Enfin, mettez à jour votre système. Même CentOS fraîchement installé peut nécessiter une mise à jour en premier. Exécuter :
vi /etc/yum.repos.d/remi.repoyum update -y
-
Temps de précision
C'est bien d'être en phase avec le reste du monde, exécutez :
yum install ntp
service ntpd start
chkconfig ntpd on
ntpd -
Quelques autres outils
Pour me faciliter un peu la vie, j'utilise vim au lieu de vi, htop au lieu de top, elinks pour tester rapidement les choses depuis le terminal et mc, en tant que bon gestionnaire de fichiers et pas seulement à double volet, wget est nécessaire pour télécharger des choses et man est essentiel quand on veut lire à peu près n'importe quoi. Exécuter :
yum install vim htop elinks mc wget man -y
Installation d'ownCloud
-
Prérequis logiciels
Un tas de trucs php, exécutez :
yum installer 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
Editez php.ini, exécutez :
vim /etc/php.ini
Il y a quatre directives à modifier,
la première doit être sur la ligne 736, la directive post_max_size
la deuxième sur la ligne 848, la directive cgi.fix_pathinfo
la troisième sur la ligne 885, la directive upload_max_filesize
la dernière sur ligne 956, directive date.timezone modifiez-le en fonction de l'emplacement de votre serveur.[...]post_max_size =64M[...]cgi.fix_pathinfo =0[...]upload_max_filesize =64M[...]date.timezone ="Europe/Prague"[...]
Si vous ne savez pas comment faire, vous pouvez trouver le nom de votre fuseau horaire en exécutant :
cat /etc/sysconfig/clock
Ensuite, configurez php-fpm pour utiliser le socket unix au lieu de la pile tcp, exécutez :
vim /etc/php-fpm.d/www.conf
À partir de la ligne douze, faites-le ressembler à ceci :
;listen =127.0.0.1:9000listen =/var/run/php-fpm/php-fpm.sock
Démarrez php-fpm :
chkconfig php-fpm sur
service php-fpm start -
Backend - PostgreSQL
Pour l'installer et le configurer, exécutez :
yum install postgresql postgresql-libs postgresql-server
service postgresql initdb
service postgresql start
chkconfig postgresql onConnectez-vous à postgres en tant qu'utilisateur système postgres, créez un utilisateur de base de données, une base de données et accordez des privilèges
su - -c "psql" postgres
CRÉER UN UTILISATEUR clouduser AVEC LE MOT DE PASSE 'userpass' ;
CRÉER UNE BASE DE DONNÉES clouddb PROPRIÉTAIRE clouduser ENCODANT 'UTF8' ;
ACCORDER TOUS LES PRIVILÈGES SUR LA BASE DE DONNÉES clouddb À clouduser ;
\qModifiez le fichier de configuration postgresql pour autoriser les connexions par mot de passe :
vim /var/lib/pgsql/data/pg_hba.conf
-
Rechercher
# Connexions locales IPv4 :
hébergez tous tous les identifiants 127.0.0.1/32 -
Et modifiez-le en
# Connexions locales IPv4 :
héberger tous tous 127.0.0.1/32 mot de passe
Redémarrez maintenant la base de données :
redémarrage du service postgresql
-
-
serveur Web nginx
Installez, configurez pour démarrer au démarrage, puis arrêtez-le :
yum install nginx
service nginx start
chkconfig nginx on
service nginx stopPréparez le fichier de configuration pour le site Web d'ownclod :
vim /etc/nginx/conf.d/owncloud.conf
# rediriger http vers https.server { écouter 80 ; nom_serveur owncloud.example.com ; réécrire ^ https://$server_name$request_uri ? permanent; # appliquer https}# serveur owncloud (ssl/tls) { écouter 443 ssl ; certificat_ssl /etc/nginx/certs/server.crt ; clé_certificat_ssl /etc/nginx/certs/server.key ; nom_serveur owncloud.example.com ; racine /var/www/owncloud ; index index.php; client_max_body_size 64M ; # définir la taille de téléchargement maximale # refuser l'emplacement d'accès direct ~ ^/(data|config|\.ht|db_structure\.xml|README) { tout refuser ; } # emplacement par défaut de la commande d'essai / { try_files $uri $uri/ @webdav; } # emplacement WebDAV propre au cloud @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 activé ; inclure fastcgi_params ; } # activer l'emplacement php ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ; fastcgi_param HTTPS activé ; inclure fastcgi_params ; }}
Créons maintenant des certificats pour le serveur, répondez aux questions dans l'invite en fonction de vos paramètres :
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 serveur.key -out serveur.crtRechargez nginx pour activer la nouvelle configuration :
rechargement du service nginx
-
fichiers et répertoires ownCloud
L'installation d'ownCloud consiste à télécharger et à décompresser l'archive, avec quelques ajustements côté serveur, donc, exécutez :
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/owncloudEt encore une fois, apache en tant que groupe dans la dernière commande n'est pas une erreur. php-fpm est exécuté par défaut en tant qu'utilisateur apache
-
Accéder au site Web
Ouvrez le port 443 afin de pouvoir accéder au site Web, exécutez :
iptables -I INPUT 4 -p tcp -d 192.168.1.100 --dport 443 -j ACCEPT
service iptables save
service iptables restart
Test d'exécution
Accédez à https://owncloud.example.com via le navigateur de votre choix et terminez la procédure d'installation.
Choisissez le nom d'utilisateur et le mot de passe de l'administrateur, choisissez PostgreSQL comme base de données principale et publiez les valeurs appropriées dans les paramètres de connexion à la base de données.
Profitez.
Dépannage
Les fichiers journaux sont situés comme suit :
/var/www/owncloud/data/owncloud.log
/var/log/php-fpm/www-error.log
/var/log/nginx/access.log
/var /log/nginx/error.log