Skip to content
Snippets Groups Projects
  • Quentin CHEVILLON's avatar
    Update INSTALL.fr.md · 25fffdc9
    Quentin CHEVILLON authored
    La directive "AllowEncodedSlashes NoDecode" doit être placée dans le répertoire <VirtualHost> d'Apache faute de quoi la redirection provoquée par les nouvelles boites d'authentification (nouveaux thèmes) retourne une erreur 404 
    25fffdc9

Sauf indiqué, cette procédure prends en compte par défaut les distributions GNU/Linux Ubuntu et Debian

Paquets nécessaires:

PHP 7.4

Debian Buster

apt-get install  libapr1-dev libssl-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev imagemagick libmagickwand-dev libfontconfig bzip2 libmemcached-dev zlib1g-dev yaz default-mysql-client zip libzip-dev libxslt-dev 

Depuis PECL:

pecl install imagick-3.4.3RC1
pecl install memcached
pecl install mcrypt-1.0.3

PHP 5.6

Ubuntu Trusty

apt-get install python-software-properties php5 php5-gd php5-imagick php5-xdebug php-pear php5-mysqlnd php5-xhprof graphviz apache2 mysql-server libapache2-mod-php5 git php5-mcrypt php5-curl yaz

Debian Wheezy-Jessie

apt-get install php5 php5-gd php5-imagick php5-xdebug php-pear php5-mysqlnd graphviz apache2 mysql-server libapache2-mod-php5 git php5-mcrypt php5-curl yaz php5-xhprof

ArchLinux

yaourt -S php php-gd php-imagick xdebug php-pear apache mariadb php-apache php-xhprof graphviz git php-mcrypt binutils automake autoconf gcc make fakeroot

CentOS

rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm
yum install php54w php54w-gd php54w-pear php54w-mysql php54w-pecl-xdebug php54w-xml php54w-soap php54w-mbstring

Il est nécessaire de compiler Imagick extension à partir des sources.

Installer PHPUnit (en compte root / sudo):

Rechercher le numéro de la dernière version phpunit-x.x.x.phar sur https://phar.phpunit.de

  cd /usr/local/bin
  wget https://phar.phpunit.de/phpunit-5.7.27.phar
  mv phpunit-x.x.x.phar phpunit
  chmod +x phpunit

Récupération des sources

cd /var/www
git clone http://git.afi-sa.fr/afi/opacce.git opacce

Lancer le script update.sh

cd opacce
./update.sh

Serveur web Apache :

Activez les modules :

Debian

a2enmod headers rewrite php5

ArchLinux:

Modifiez /etc/httpd/conf/http.conf et ajoutez la ligne:

LoadModule php5_module modules/libphp5.so

Activer mod_mpm_prefork (voir https://wiki.archlinux.org/index.php/Apache_HTTP_Server#PHP).

Désactivez le module negotiation qui pose problème avec Zend Framework sur les urls index/index:

a2dismod negotiation

Configurer Apache

Dans la conf Apache (/etc/apache2/sites-available/votre-site.conf), supprimer l'option Indexes (listing des fichiers) et autoriser les .htaccess:

<Directory /var/www/>
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
<VirtualHost *:80>
  DocumentRoot /emplacement/du/repertoire/Bokeh/
  ServerName monSiteBokeh.fr
  AllowEncodedSlashes NoDecode
</Directory>

Note: pour apache 2.4

<Directory /var/www/>
  Options FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

Serveur web Nginx (experimental)

Le fait d’utiliser Nginx comme serveur Web implique d’utiliser le moteur PHP en mode FPM.

La configuration recommandée utilise 2 fichiers qui présentent l’intérêt d’avoir des fichiers vHost simplifiés et permettent de concentrer le paramétrage commun à tous les vHost dans un fichier annexe, qui fait un peu le même job que le fichier .htaccess sous Apache.

Fichier d’include « bokeh.inc » à placer par exemple dans /etc/nginx/conf-enabled

# Include directives for Bokeh portal

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 30d;
    log_not_found off;
}

location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

# Deny access to sensitive files.
location ~ (\.inc\.php|\.tpl|\.sql|\.tpl\.php|\.db)$ {
    #deny all;
    return 403;
}

location ~ /(\.|\.htaccess|config\.(ini|php)) {
    #deny all;
    return 403;
}

# Path without redirection
location ~ /(xhprof_html|ckeditor|\.well-known) {
}

# Serve PHP
location ~ /cosmogramme/cosmozend {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    #fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME    $document_root/cosmogramme/cosmozend/index.php;
    fastcgi_param  SCRIPT_NAME        /cosmogramme/cosmozend/index.php;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 4k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;
    fastcgi_pass bokeh-dock:9000;
}

location ~ (\.php$|/(cosmogramme|exploit/(test\.php|fpm-ping|fpm-status))) {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 4k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;
    fastcgi_pass bokeh-dock:9000;
}

Fichier vhost à adapter à votre propre cas (changer URL_Bokeh, Path_Bokeh_Dir, Bokeh_Dir, …)

server {
    listen  80;
    index  index.php;
    server_name <URL_Bokeh>;
    root        <Path_Bokeh_Dir>/<Bokeh_Dir>;
    access_log  "<Path_Nginx_Log>/<URL_Bokeh>_access.log";
    error_log   "<Path_Nginx_Log>/<URL_Bokeh>_error.log";

    location / {
        try_files $uri $uri/ @rewrite;
    }

    # if the requested file exists, return it immediately
    if (-f $request_filename) {
        break;
    }

    location @rewrite {
        rewrite ^(.*)$ /index.php last;
    }

    include /etc/nginx/conf-enabled/bokeh.inc;
}

Pour information exemple de fichier etc/nginx/fastcgi_params

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  REQUEST_SCHEME     $scheme;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Configurer PHP

Dans /etc/php5/apache2/php.ini (ArchLinux: /etc/php/php.ini), configurer les variables suivantes:

post_max_size = 10M
upload_max_filesize = 10M
error_reporting  =  E_ALL & ~E_NOTICE & ~E_DEPRECATED
extension = xhprof.so
xhprof.output_dir = /chemin/vers/bokeh/temp

Activez les extensions suivantes si elles ne le sont pas déjà (elles devraient l'être) :

php5enmod calendar curl gd gettext iconv mcrypt mysql pdo_mysql openssl soap imagick

Sur ArchLinux décommenter les lignes correspondantes.

Droits d'écriture sur les répertoires

  • userfiles contient tous les fichiers téléversés via l'interface Bokeh ou moissonés sur des ressources tierces.
  • temp contient les fichiers de caches, fichiers d'historiques de modification, et autres fichiers générés par Bokeh.

Par exemple:

chmod -R 777 opacce/userfiles
chmod -R 777 opacce/temp

Si vous ne souhaitez pas donner les droits d'écriture à tous sur ces répertoires, vous devez donner la permission à l'utilisateur sous lequel s'exécute le code PHP.

Configuration MySQL

Finaliser l'installation (ArchLinux)

Voir https://wiki.archlinux.org/index.php/MySQL#Installation

Configuration

Modifier /etc/mysql/my.cnf pour forcer l'indexation fulltext à partir de 1 lettre : ajouter dans la section [mysqld] :

ft_min_word_len = 1

Redémarrer mysql.

Notes: si des problèmes d'encodage de caractères sont visibles dans Cosmogramme, il est possible de forcer l'UTF8 comme ceci:

skip-character-set-client-handshake
character-set-server=utf8

Se connecter à mysql et importer le schema

mysql -uroot -ppass
mysql> create database opac;
mysql> connect opac;
mysql> source opacce/scripts/opac2.sql;

Configuration OPAC

Dans le répertoire opacce, copiez et configurez

cp config.ini.default config.ini
touch local.php

Configuration Cosmogramme

Dans le répertoire cosmogramme, copiez et configurez

cp config.ref.php config.php 

Allez sur http://localhost/opacce/cosmogramme

Mise à jour de la base de données

En ligne de commande:

php scripts/upgrade_db.php

ou bien via navigateur web:

  • Pointez votre navigateur sur http://localhost/opacce/cosmogramme/ et connectez vous avec le compte admin / achanger.
  • De là, cliquez sur le lien Vous devez exécuter une mise à niveau de la base de données.

Se connecter à l'OPAC:

Vous pouvez maintenant administrer Bokeh à l'adresse http://localhost/opacce/admin avec le compte admin / achanger.

Les URLs sont:

Pour lancer les tests de l'OPAC:

cd opacce/tests/
phpunit