Table des matières
DotClear WordPress or DokuWiki ?
DokuWiki
Blogger avec DokuWiki est peut être la bonne solution.
Liens:
A voir… Parce que ni DotClear, ni WordPress ne font ce que je veux!
Un exemple à suivre ? : http://www.alternativeoutput.it/wiki/
Le template de complément: http://www.dokuwiki.org/template:mnml-blog
Wordpress
Un peu surpris par la misére de l'editeur “wiki” de dotclear (inadapté pour bloguer du “code” comme avec dokuwiki), je m'essaye a WordPress.
Liens:
Installation
/var/www
$ su # cd /var/www # wget http://fr.wordpress.org/wordpress-3.3.1-fr_FR.tar.gz # tar xvzf wordpress-3.3.1-fr_FR.tar.gz # chown -R www-data: wordpress # cd wordpress
Si on a configuré apache (qu'on verra plus loin), on a droit a ce message:
Votre installation PHP ne dispose pas de MySQL. Extension requise pour WordPress.
MySQL
# aptitude install mysql-server php5-mysql
# mysql -u root -p mysql> create database wordpress; Query OK, 1 row affected (0.00 sec) GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"localhost" IDENTIFIED BY "<MOT_DE_PASSE>"; Query OK, 0 rows affected (0.00 sec) flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit
On aura générer le “<MOT_DE_PASSE>” avec pwgen
par exemple…
Apache2
php5-cgi
Lien: http://blog.tmartin.fr/post/2009/10/21/Utilisation-de-PHP5-en-mode-CGI
# aptitude install apache2-mpm-worker # aptitude install php5-cgi
Activer “php5-cgi” en lieu et place de son equivalent en module (voir section suivante).
virtualhost
Pour mémoire:
<VirtualHost *:80> ServerAdmin webmaster@MONBLOG-PERSO.FR ServerName wordpress.MONBLOG-PERSO.FR DocumentRoot /var/www/wordpress <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow deny from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> <Directory /var/www/wordpress/> DirectoryIndex index.php Options +FollowSymLinks -Indexes AllowOverride FileInfo #AllowOverride None #Order allow,deny #allow from all Order deny,allow Allow From <MY_IP> Deny From All AddHandler cgi-php5 .php Action cgi-php5 /cgi-bin/php5 </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
wp-config.php
# cd /var/www/wordpress # cp -p wp-config-sample.php wp-config.php
Adapter wp-config.php selon son MySQL. Par exemple (extrait):
define('DB_NAME', 'wordpress'); define('DB_USER', 'wordpress'); define('DB_PASSWORD', '<MOT_DE_PASSE>');
Et en passant par là: https://api.wordpress.org/secret-key/1.1/salt/ …
… on peut aussi générer d'autres clés pour les cookies:
define('AUTH_KEY', '2gG-TXma&Y85GR#/puUXB?{2<!d]]0C;)S6M+)J(0$ki0cCYt~|VTt,++|BA)}&I'); ... etc...
configuration
Maintenant, on devrait pouvoir atteindre la page d'installation: http://wordpress.eez.fr/wp-admin/install.php
Bugs
Liens:
suhosin[9817]: ALERT - script tried to increase memory_limit to 268435456 bytes which is above the allowed value (attacker 'x.x.x.x', file '/var/www/wordpress/wp-admin/admin.php', line 109)
Dans /etc/php5/conf.d/suhosin.ini
faire en sorte d'avoir:
extension=suhosin.so [suhosin] suhosin.memory_limit = 256M
Tips
Sécurité
Permalien
(Permalink)
Lien: http://codex.wordpress.org/Using_Permalinks
# a2enmod rewrite
Et ajouter dans le “virtual Host”:
AllowOverride FileInfo
DokuWiki
Lien: http://wordpress.org/extend/plugins/wp-dokuwiki/
# cd /var/www/wordpress/wp-content/plugins # wget http://downloads.wordpress.org/plugin/wp-dokuwiki.zip # unzip wp-dokuwiki.zip # chown -R www-data: wp-dokuwiki
Activer le plugin dans le panneau de controle.
Ensuite, le tab “html”, faire:
<wiki> **Hello World** </wiki>
Mais en fait, il subsite au moins 1 bug énervant: Impossible d'avoir une ligne vide dans du code
syntaxhighlighter
DotClear2
DotClear2 - Methode A
Plus mieux ?
L'idée:
- nginx est installé en frontal
- on va utilisé “php5-cgi” (au lieu de “libapache2-mod-php5” )
Ce qui aura l'avantage de :
- utiliser apache2-mpm-worker ?
- nginx ?
- … ? je sais pas
Dépendances
# aptitude install apache2-mpm-worker # aptitude install php5-cgi php5-cli php5-gd # aptitude install php5-sqlite
rpaf
Comme on a un frontal nginx, les IP vu sont celle de nginx en local.
Donc:
# aptitude install libapache2-mod-rpaf
Dans /etc/apache2/mods-enabled/rpaf.conf
, adapter la ligne pour donner l'IP de nginx:
RPAFproxy_ips <IP_LOCAL_DE_NGINX>
# apache2ctl graceful
Voila.
php5-cgi
Lien:
Activer “php5-cgi” en lieu et place de son equivalent en module:
# TJ --------------------- <Location /dotclear/> AddHandler cgi-php5 .php Action cgi-php5 /cgi-bin/php5 #Order allow,deny #Allow from all Order deny,allow Allow From <MON_IP_PENDANT_L_INSTALLATION> Deny from all </Location> # -------------------------
dotclear2-loader.php
# cd /var/www # mkdir dotclear # cd dotclear
Télécharger dotclear2-loader.php
# wget <...>dotclear2-loader.php
Permettre l'ecriture…
# chown www-data: .
http://<mon_web>/dotclear/dotclear2-loader.php
J'installe dans le repertoire courant (et non pas dans “…/dotclear/dotclear”)
Mais comme dit plus loin, pour SQLite, il faut faire ça à la main, un peu.
Préparer le répertoire ou stocker la base:
# mkdir -p /var/lib/db/dotclear # chown www-data: /var/lib/db/dotclear/.
Générer un truc aléatoire:
# dd if=/dev/urandom bs=36 count=1 | openssl base64 OUUu2S225BZCjOiMDCZBxk82cY1X8yyTfH0uxmfeDbZUyFp+
Dans …/dotclear/inc/
:
# cp -p config.php.in config.php
Modifier config.php
pour avoir (par exemple):
define('DC_DBDRIVER','sqlite'); define('DC_DBNAME','/var/lib/db/dotclear/blog.sqlite'); define('DC_MASTER_KEY','<LE_TRUC_ALEATOIRE_PLUS_HAUT>');
Et reprendre en retournant par là:
http://<mon_web>/dotclear/admin/install/
DotClear2 - methode B
pré-requis
# aptitude install libapache2-mod-php5
# aptitude install php5-mysql ou # aptitude install php5-sqlite
Facultatif:
# aptitude install php5-gd
installation
Suivre les instructions ici http://fr.dotclear.org/documentation/2.0/admin/install …
Au plus simple, avec dotclear2-loader.php
et avec sqlite
:
# cd /var/www # mkdir dotclear # cd dotclear # wget http://download.dotclear.net/loader/dotclear2-loader.php # chown www-data: .
Et puis avec son navigateur:
http://<HOST>/dotclear/dotclear2-loader.php
Suivre la procédure…
Jusqu'à la configuration de la base de données ! et là, pour sqlite
, il faut editer à la main le fichier de config…
# cd inc # cp config.php.in config.php # vi config.php
et faire en sorte d'avoir:
define('DC_DBDRIVER','sqlite'); define('DC_DBHOST',''); define('DC_DBUSER',''); define('DC_DBPASSWORD',''); define('DC_DBNAME','<CHEMIN_VERS_UNE_BASE_SQLITE.db>'); define('DC_DBPREFIX','dc_'); define('DC_DBPERSIST',false); define('DC_MASTER_KEY','<CLE_A_CREER_PAR_EXEMPLE: LS -lR /| MD5SUM>'); define('DC_ADMIN_URL','http://<HOST>/dotclear/admin/'); define('DC_SESSION_NAME','dcxd'); define('DC_PLUGINS_ROOT',dirname(__FILE__).'/../plugins'); define('DC_TPL_CACHE',dirname(__FILE__).'/../cache');
Et puis:
http://<HOST>/dotclear/admin/install
Et voila.
Dotclear
Installer
Télécharger la dernière version a partir d'ici: http://www.dotclear.net/
Par exemple:
$ cd ~/tmp $ wget http://download.dotclear.net/latest-1.2.tar.gz
Decompresser:
$ tar xvzf latest-1.2.tar.gz
Et on récupère: dotclear-1.2.5.tar.gz
, qu'on decompresse:
$ tar xvzf dotclear-1.2.5.tar.gz
Renommer en ''monblog''
Qu'on fout a partir de la racine:
$ mv dotclear ~/www/.
Et que je renomme autrement:
$ cd ~/www $ mv dotclear monblog
Répertoires en ecriture
Il faut autoriser en écriture les répertoires suivant:
- monblog/conf
- monblog/images
- monblog/themes
Et donc pour chacun de ces répertoires:
$ cd ~/www/monblog $ chown :www-data conf $ chmod g+w conf etc...
MySQL
Se connecter a MySQL:
$ mysql -u root -p
Creer une database:
mysql> create database dotclear;
Creer un user associé:
mysql> GRANT ALL ON dotclear.* TO dotclear@localhost;
(Pas besoin de mot de passe ?)
install
Effectuer l'install a partir de PHP:
http://tjaouen.fr/monblog/install
Et le plus dur est fait
admin
Là, c'est pas evident puisqu'il faut faire:
http://tjaouen.fr/monblog/ecrire
Plugins
Antispam
Installer
Installer le plugin 'captcha accessible', qui fonctionne avec Dotclear 2 (celui que j'utilise).
Lien: http://www.atelierphp5.com/un-captcha-accessible.html
Pour installer:
DotClear-Administration > Outils > Gestionnaire des plugins
(Faire en sorte que le répertoire “monblog/ecrire/tools
” soit autorisé en écriture à “www-data
”.)
Copier/Coller le lien vers le plugin:
[[http://www.atelierphp5.com/pub/dotclear/plugin-captcha-1.1.pkg.gz]]
Puis cliquer sur “[Installer]
”…
Le plugin “Anti-Spam pour les commentaires” apparait, mais il n'est pas activé, donc faire:
Selectionner puis “Action sur les plugins sélectionnés
: basculer etat”.
Voila le plugin activé.
Configurer
Suivre les instructions affiché dans la section “plugins > Captcha”…
Table SQL
A creer selon modèle…
Code HTML
A injecter dans “form.php
” (exemple):
(Si vous utilisez le theme par defaut, sinon, adapter)
$ vi monblog/themes/default/form.php <fieldset> <p class="field"> <table border="1" bgcolor="lightgray" ><tr><td> <label for="dc_captcha"><?php dcCaptcha::question(); ?></label> <?php dcCaptcha::field(); ?> </td></tr></table> </p> <p><input type="checkbox" id="c_remember" name="c_remember" /> <label for="c_remember">Se souvenir de mes informations</label> </p> <p><input type="submit" class="preview" name="preview" value="prévisualiser" /> <input type="submit" class="submit" value="envoyer" /> <input type="hidden" name="redir" value="<?php dcCommentFormRedir(); ?>" /></p> </fieldset>
L'ajout d'une “table
” est de mon fait.
Modifier les fichiers de configuration
Allez dans “monblog/ecrire/tools/captcha
” :
$ cd monblog/ecrire/tools/captcha
UTF8
Modifier les fichiers php en UTF-8… (parce que j'avais des problèmes avec les accents…):
$ recode latin1..utf8 *php
(Si nécessaire, installer d'abord le pakage recode
)
Personnaliser
Editer les paramètres en éditant le fichier “config.php
” (Exemple) :
$ vi config.php ... $GLOBALS['captcha_level'] = 1; ... $GLOBALS['captcha_logs'] = '<quelque_part_ou_www_a_les_droits>/spam.txt';