Jonathan es una aplicación web para proponer y valorar nuevas titulaciones, desarrollada en PHP con el framework Yii 2.
- PHP 7, con la extensión PHP Data Objects (PDO)
- Los módulos curl, GD, intl, JSON, LDAP, mbstring y XML para PHP
- El módulo mcrypt de PHP, requerido por asasmoyo/yii2-saml, que en PHP 7.2+ es necesario instalar con
pecl
y habilitar conphpenmod
.Habilitarlo añadiendosudo apt install gcc make autoconf libc-dev pkg-config php-dev libmcrypt-dev sudo pecl install mcrypt-1.0.1
extension=mcrypt.so
al final deetc/php/7.2/{cli, apache, fpm}/php.ini
. Reiniciar el servicio consystemctl restart php7.2-fpm
o la orden correspondiente. Véase How to install mcrypt in php7.2 - Un SGBD aceptado por PDO (vg PostgreSQL o MySQL), y el módulo para PHP correspondiente
- Oracle Instant Client
(basic y devel).
Instalar con
pecl
el paqueteoci8
. En la sección Dynamic Extensions de la configuración CLI de PHP añadir la líneaextension=oci8
. - Un servidor web que interprete PHP (vg Apache)
- La última versión de Composer
- Node.js 6.4.0+ para utilizar Puppeteer que a su vez usará Google Chrome / Chromium en modo headless para generar los PDF. Las version de Puppeteer y Chrome tienen que ser acordes: 1.6 -> chrome-69, 1.7 -> chrome-70, 1.9 -> chrome-71, 1.11 -> chrome-72, etc.
- Tipos de letra Gentium y EB Garamond (paquetes Debian fonts-sil-gentium y fonts-ebgaramond).
-
Clonar el repositorio y configurar el servidor web para que sirva el directorio
web
. Puede ser conveniente usar FPM. -
Instalar las dependencias:
$ cd jonathan $ composer install
En
vendor
puede ser necesario crear un enlace simbólicobower
->bower-asset
. Comprobar que el proceso web puede leer los ficheros devendor/npm-asset/proxy-from-env
. -
Conceder al proceso web (www-data en Debian) permisos de escritura sobre los directorios:
runtime
web/assets
web/pdf/*
Para desarrollo concederle también permisos sobre estos directorios y sus subdirectorios:
gii
models
views
controllers
-
Crear la base de datos
-
Configurar la base de datos, LDAP, etc para el entorno en cuestión (ver más abajo).
-
Ejecutar las migraciones:
./yii migrate
-
Establecer la clave para validación de cookies en el fichero
config/web.php
a una cadena aleatoria secreta.'request' => [ // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 'cookieValidationKey' => 'VNvd9TIBGgiFei-Eu4Yf6OWNX_nYJaQj', ],
-
En la configuración del virtualhost se puede establecer el entorno (dev, prod, test):
SetEnv APPLICATION_ENV prod
También se puede establecer en el
.bashrc
:export APPLICATION_ENV="dev"
-
Editar el fichero
config/env/<entorno>/db.php
y configurar las bases de datos.return [ 'jonathan' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=foobar', 'username' => 'pericodelospalotes', 'password' => '1234', 'charset' => 'utf8mb4', ], 'identidades' => [ 'class' => 'apaoww\oci8\Oci8DbConnection', // Requires apaoww/yii2-oci8 'dsn' => 'oci8:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oraculo.unizar.es)(PORT=1521))(CONNECT_DATA=(SID=DELFOS)));charset=WE8ISO8859P1;', 'username' => 'dodona', 'password' => 'PopolWuj', 'attributes' => [], ] ],
-
Editar el fichero
config/env/<entorno>/mailer.php
y configurar el servidor SMTP. -
Editar el fichero
config/env/<entorno>/params.php
y configurar el servidor LDAP, etc. -
Crear el fichero
config/env/<entorno>/saml.php
y editarlo para introducir los datos de nuestro Identity Provider. Por su parte el IdP deberá tener los datos de este Service Provider.