Pràctica. CMS de lliure elecció: instal.lació, configuració, administració

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Referències i Introducció

En les pràctiques prèvies has fet la instal.lació, configuració, administració i explotació del Wordpress. Ara faràs el mateix amb un CMS (Content Management System) de lliure elecció (que no sigui el Wordpress, evidentment).

Llista completa de CMS:

Els CMS que ens sonen més i en els quals centrareu l'atenció, i que estan basats en la combinació PHP+MySQL són: Wordpress (blogs), Joomla i Drupal (web), Mantis BT (gestió d'incidències), vTiger (CRM, Customer Relationship Management), Mediawiki (per fer wikis, documents col.laboratius), Moodle (educatiu), Fòrums, Galeria d'Imatges.

LLista completa de gestors de continguts, no només basats en Apache+PHP+MySQL:

Desenvolupament

Primer de tot escollirem un tema per a CMS (per ex galeries de foto) i farem un analisi previ per escollir un projecte concret. Val a dir que tota la feina que facis l'hauràs de documentar.

Escollir un CMS

a) escollir una temàtica. Què vols fer? Un blog? Una wiki?. Un Forum? Una galeria de fotos? etc.

b) Anàlisi previ. Quina és la millor solució. Per exemple, si vols fer una galeria de fotos, has d'anàlitzar les diferents solucions que tens, amb els seus pros i contres. Pots utilitzar el següent enllaç per veure diferents opcions.

Documentació

Tota la feina que facis en els següents apartats (instal.lació, configuració, explotació) s'haurà de documentar. La documentació ha de servir per al propi usuari en el cas de què hagis de repetir el procés en una altra instal.lació; o bé en el cas de què un company hagi de fer la pràctica que tu has fet. Entre d'altres coses, la documentació s'haurà d'entregar en l'entrega que faràs al Moodle.

La pràctica, igual que el cicle de vida de la implantació d'un CMS, consta de varis passos.

Instal.lació

Instal.lar implica descarregar-se el codi font, llegir el fitxer README, veure si compleixes els requisits previs, etc.

Configuració

Configurar és tota la feina que faràs abans no comencis a explotar el teu CMS. Instal.lar plugins, instal.lar temes. Estudiar la base de dades. Potser hauràs de fer alguna modificació a nivell de codi PHP o de base de dades. Hauràs de configurar el sistema de còpies de seguretat mitjançant scripts automàtics.

Explotació

Els usuaris començaran a explotar el sistema, i les incidències hauran de ser mínimes degut a què has treballat força en l'etapa de configuració. De totes maneres hi ha tasques de manteniment que s'han de fer durant l'etapa d'explotació, com ara l'actualització a les últimes versions del codi, o bé la migració a un altre servidor més potent. També poden haver incidències més grosses, i és aquí on l'administrador de sistemes podrà demostrar que ha fet una bona planificació i documentació.

Col.laborar amb les traduccions

A classe hem vist com es pot col.laborar amb les traduccions d'un projecte concret (FreeCAD, que s'utilitza per dissenyar peces per a les impressores 3D). Has de mirar en el projecte que has triat (Mediawiki, Drupal,...) com està l'estat de les traduccions en el teu idioma (català, castellà, etc), i si hi ha la possibilitat de col.laborar en aquestes traduccions.

Exposició a classe

La feina realitzada en aquesta pràctica es demostrarà a classe amb una presentació davant dels companys. La idea de la presentació no és ensenya lo bonica que ens ha quedat la pàgina web (en el cas de què hagis escollit Joomla), sinó explicar els problemes que has tingut i com els has resolt; ensenyar-nos les entranyes de les taules de la base de dades; quines modificacions has fet sobre el codi font; la documentació que has realitzat; etc.

PHPMailer

Molts dels CMS que instal.laran els alumnes requereixen l'enviament de correus electrònics. És habitual que aquests projectes incorporin la llibreria PHPMailer. També és habitual que s'utilitzi un compte de gmail i smtp.gmail.com com a servidor SMTP a través del qual s'envien els correus.

En aquest cas provarem la llibreria PHPMailer descarregada directament del projecte. Descarreguem la última versió de PHPMailer:

i el descomprimim dins de /var/www, doncs provarem un script php.

versió 5.2.4 del PHPMailer (abril 2014)

Efectivament, trobem dins la carpeta test/ el fitxer testmail.php, que ens disposem a configurar amb els valors d'un compte de gmail.

Ftixer test_smtp_basic.php:

<?php
<html>
<head>
<title>PHPMailer - SMTP basic test with authentication</title>
</head>
<body>

<?php

//error_reporting(E_ALL);
error_reporting(E_STRICT);

date_default_timezone_set('America/Toronto');

require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail             = new PHPMailer();

$body             = file_get_contents('contents.html');
$body             = preg_replace('/[\]/','',$body);

$mail->IsSMTP(); // telling the class to use SMTP
//$mail->Host       = "mail.yourdomain.com"; // SMTP server
//$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "tls";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com"; // sets the SMTP server
$mail->Port       = 587;                    // set the SMTP port for the GMAIL server
$mail->Username   = "joanqc@gmail.com"; // SMTP account username
$mail->Password   = "****";        // SMTP account password

$mail->SetFrom('joanqc@gmail.com', 'Joan Quintana');

//$mail->AddReplyTo("name@yourdomain.com","First Last");
$mail->Subject    = "PHPMailer Test Subject via smtp, basic with authentication";
$body="hola";
$mail->MsgHTML($body);

$address = "joanqc@gmail.com";
$mail->AddAddress($address, "John Doe");

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

?>

</body>
</html>

com veiem, hem posat el servidor de SMTP de Gmail, el port 465 i un compte de gmail. No s'ha fet cap referència a la seguretat ssl (però segurament també funcionaria).

La primera vegada que s'executa ens recorda (/usr/sbin/sendmail not found) que no hem llegit els requisits de phpmailer: necessitem el paquet sendmail:

$ sudo apt-get install sendmail

I ara ja funciona.

versió 5.2.9 del PHPMailer (abril 2015)

De la versió 5.2.4 a la 5.2.9 no hi ha canvis significatius, però com passa en aquestes ocasions despista una mica que la nomenclatura dels fitxers eś diferent.

L'exemple que s'ha vist a classe i ha funcionat està a examples/gmail.php (important: has de renombrar gmail.phps a gmail.php). Igual que hem fet abans, hem de configurar el servidor de SMTP amb un compte de Gmail vàlid. Aquest exemple, a més, envia una petita imatge com a adjunt. Hi ha molta verbositat per pantalla, degut a que s'ha ficat l'opció de debug = 2. Pots canviar a els valors 0 o 1:

//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;

És molt interessant l'exemple d'enviar correus electrònics que vénen d'una base de dades. A classe hem estudiat l'exemple l'exemple mailing_list.php, on es veu com ens hem de connectar a una base de dades (host, login, password i nom de la base de dades), i com es diu la taula i camps on resideix la informació dels correus electrònics:

$result = mysqli_query($mysql, 'SELECT full_name, email, photo FROM mailinglist WHERE sent = false');

versió 5.2.23 del PHPMailer (març 2017)

Funciona sense problemes el script examples/gmail.php (treure la s de .phps). NOTA: l'extensió .phps es fa servir per tal de poder veure el codi font dels scripts PHP, sense que s'executi el script.

Exercici obligatori de classe:

En l'entrega del Google Classroom em ficaràs una captura de pantalla on es vegi clarament el missatge Message Sent. En el missatge hauràs ficat un adjunt d'una foto teva (el codi original gmail.php també envia un adjunt).

NOTA. És possible que no es pugui enviar el correu electrònic, i que rebeu una notificació de Google conforme que s'ha intentat un accés no segur al vostre compte. Això es soluciona entrant en la configuració del vostre compte de Gmail, i activar l'opció:

versió 6.0.5 del PHPMailer (abril 2018)

$ composer require phpmailer/phpmailer

Com a novetat d'aquesta última versió, s'ha d'instal.lar el PHPMailer mitjançant composer. A més, quan descàrreguem els arxius del projecte no es descarrega la carpeta d'exemples.

Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.

Fem la prova amb el script gmail.php. El codi es comenta a classe.

Entrega

Recorda la normativa per entregar les pràctiques al Moodle: ASIX-M09-IAW#Normativa_d.27entrega_de_les_pr.C3.A0ctiques_al_Moodle.

Obligatori per aquesta pràctica:


creat per Joan Quintana Compte, abril 2019

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines