247 lines
8.3 KiB
Markdown
247 lines
8.3 KiB
Markdown
---
|
||
categories: Wordpress saas web
|
||
title: Howto Wordpress
|
||
...
|
||
|
||
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
|
||
|
||
# Howto Wordpress
|
||
|
||
# W3 Total Cache
|
||
|
||
W3 Total Cache améliore les performances d'un « site/blog » propulsé par Wordpress ainsi que la rapidité du chargement des pages pour une meilleure expérience utilisateur et un meilleur référencement !
|
||
|
||
Pour cela W3 Total Cache met en cache différents éléments : renforcement du cache navigateur, cache des pages, des objets et des requêtes SQL. Il propose aussi différentes fonctions tel que le html/css/js minify et la gestion de CDN.
|
||
|
||
## Installation
|
||
|
||
### Prérequis
|
||
|
||
* PHP 5.6 >=
|
||
* MySQL 5.6 >=
|
||
* Apache avec module rewrite
|
||
|
||
### Procédure
|
||
|
||
* Télécharger l'archive du plugin sur le site de [Wordpress](http://wordpress.org/extend/plugins/w3-total-cache/) et la décompresser dans wp-content/plugins. (Ou bien installer le plugin depuis Wordpress) ;
|
||
* Activer le plugins dans la liste des extensions Wordpress ;
|
||
* Passer à la configuration.
|
||
|
||
## Configuration
|
||
|
||
La configuration se passe dans le tableau de bord de Worpdress, dans l'onglet « Performance ».
|
||
Cliquer sur le bouton « Compatiblity Check », pour vérifier que votre serveur dispose de tous les modules nécessaire.
|
||
|
||
# Mise à jour Wordpress par l'interface web via ssh
|
||
|
||
Voir <http://gcolpart.evolix.net/blog21/mise-a-jour-wordpress-par-linterface-web-via-ssh/>
|
||
|
||
* Installer php5-ssh2 sous Squeeze ou libssh2-php en Wheezy
|
||
* Activer **allow_url_fopen** dans la configuration du vhost
|
||
* Assurez-vous que l'option define('FS_METHOD','direct') n'est pas définie
|
||
* Lors de la mise à jour, choisir SSH2, spécifier 127.0.0.1 en serveur, le login et mot de passe adéquat
|
||
|
||
Attention en wordpress 4.3, la mise à jour via ssh est cassée, il faut appliquer ce fix : <https://www.lekernelpanique.fr/2015/09/08/wordpress-4-3-casse-la-mise-a-jour-via-sshsftp/>
|
||
|
||
# Mise à jour Wordpress [plugins] depuis l'interface web (éviter)
|
||
|
||
Revoir les droits du groupe pour permettre l'écriture ($HOME/www = où le wp est installé) :
|
||
|
||
~~~
|
||
$ chmod g+w $HOME/www/ $HOME/www/wp-includes/version.php
|
||
$ chmod g+w -R $HOME/www/wp-admin/includes/ $HOME/www/wp-content/ [$HOME/www/wp-content/upgrade/ $HOME/www/wp-content/languages/]
|
||
|
||
~~~
|
||
Si vous avez des retours de type : 'Operation not permitted', il y a de bonne chance que le propriétaire du fichier soit déjà l'utilisateur utilisé par l'instance du serveur web (et donc les droits sont déjà suffisant).
|
||
|
||
## Définir les droits des fichiers écrit par Wordpress
|
||
|
||
Wordpress surcharge l'umask définie par Apache/PHP et écrit par défaut les fichiers et dossiers en 750.
|
||
|
||
Il faut rajouter ces 2 lignes dans wp-config.php pour avoir des droits corrects :
|
||
|
||
~~~
|
||
define( 'FS_CHMOD_DIR', ( 0770 & ~ umask() ) );
|
||
define( 'FS_CHMOD_FILE', ( 0660 & ~ umask() ) );
|
||
~~~
|
||
|
||
## Attaque sur xmlrpc.php
|
||
|
||
Sur les Wordpress pas à jour, l'API xmlrpc.php est sensible à une attaque par rebond, un attaquant réalise plein de requêtes sur xmlrpc.php et votre serveur fait des requêtes vers la/les cibles de l'attaquant.
|
||
|
||
S'il ne vous est pas possible de mettre à jour Wordpress, une solution est de bloquer les requêtes vers xmlrpc.php dans Apache :
|
||
|
||
~~~
|
||
<Files "xmlrpc.php">
|
||
Deny from all
|
||
</Files>
|
||
~~~
|
||
|
||
# Maintenance
|
||
|
||
## Vérifier la liste des plugins installés sur Wordpress
|
||
|
||
~~~{ .sql }
|
||
> SELECT * FROM wp_options WHERE option_name = 'active_plugins';
|
||
~~~
|
||
|
||
# wp-cli
|
||
|
||
Permet d'administrer une instance Wordpress à partir de la ligne de commande.
|
||
[<http://wp-cli.org/commands/>]
|
||
|
||
## core
|
||
|
||
Vérifier que le répertoire en question correspond bien à un wordpress :
|
||
|
||
~~~
|
||
php wp-cli.phar core is-installed --path=$HOME/www
|
||
~~~
|
||
|
||
### Installation
|
||
|
||
Configuration des différentes directives à compléter (pour la base de donnée) :
|
||
|
||
~~~
|
||
php wp-cli.phar core config --dbname=nombase --dbuser=nomutilisateur --dbpass=motdepasse \
|
||
--dbhost=hostnamedb --path=$HOME/www
|
||
|
||
~~~
|
||
Procéder à l'installation :
|
||
|
||
~~~
|
||
php wp-cli.phar core install --url="ServerName" --title="TITRE_WP" --admin_user="admin" --admin_password="motdepasseadmin" \
|
||
--admin_email="emailadmin" --skip-email --path="$HOME/www"
|
||
~~~
|
||
|
||
### Mise à jour
|
||
|
||
#### Avec wp-cli
|
||
|
||
Se placer dans le répertoire où est installé wp :
|
||
|
||
~~~
|
||
$ cd $HOME/www
|
||
~~~
|
||
|
||
Forcer le téléchargement de la dernière version (US) - non recommandé:
|
||
|
||
~~~
|
||
$ php $HOME/wp-cli/wp-cli.phar core download --force
|
||
~~~
|
||
|
||
Vérifier si maj disponible :
|
||
|
||
~~~
|
||
$ php $HOME/wp-cli/wp-cli.phar core check-update
|
||
+---------+-------------+-------------------------------------------------------------+
|
||
| version | update_type | package_url |
|
||
+---------+-------------+-------------------------------------------------------------+
|
||
| 4.6.1 | major | <https://downloads.wordpress.org/release/wordpress-4.6.1.zip> |
|
||
+---------+-------------+-------------------------------------------------------------+
|
||
~~~
|
||
|
||
Mettre à jour wordpress et la bd
|
||
|
||
~~~
|
||
$ php $HOME/wp-cli/wp-cli.phar core update
|
||
Updating to version 4.6.1 (en_US)...
|
||
Downloading update from <https://downloads.wordpress.org/release/wordpress-4.6.1-no-content.zip...>
|
||
Unpacking the update...
|
||
Cleaning up files...
|
||
No files found that need cleaned up.
|
||
Success: WordPress updated successfully.
|
||
$ php $HOME/wp-cli/wp-cli.phar core update-db
|
||
Success: WordPress database upgraded successfully from db version 36686 to 37965.
|
||
~~~
|
||
|
||
#### Mise à jour automatique
|
||
|
||
Par défaut, le core de WordPress se met à jour automatiquement pour les versions mineures, cf <https://codex.wordpress.org/Configuring_Automatic_Background_Updates>
|
||
|
||
### Redirections
|
||
|
||
Lister les redirections déjà présentes sur le WP :
|
||
|
||
~~~{.bash}
|
||
$ php $HOME/wp-cli/wp-cli.phar rewrite list --format=csv
|
||
~~~
|
||
|
||
### Utilisateurs
|
||
|
||
Créer un utilisateur admin :
|
||
|
||
~~~
|
||
$ php $HOME/wp-cli/wp-cli.phar user create admintest john@example.com --role=administrator
|
||
Success: Created user 3.
|
||
Password: XXXXXXX
|
||
~~~
|
||
|
||
Si temporaire, ne pas oublier de le supprimer :
|
||
|
||
~~~
|
||
$ php $HOME/wp-cli/wp-cli.phar user list
|
||
+----+------------+---------------+----------------------+----------------------+---------------+
|
||
| ID | user_login | display_name | user_email | user_registered | roles |
|
||
+----+------------+---------------+----------------------+----------------------+---------------+
|
||
| X | admintest | admintest | johndoe@example.com | 2016-10-17 17:40:26 | administrator |
|
||
|
||
$ php $HOME/wp-cli/wp-cli.phar user delete X
|
||
~~~
|
||
|
||
|
||
# Sécurité
|
||
|
||
## WPScan
|
||
|
||
WPSscan (https://wpscan.org/) est un outil de scan de vulnérabilités en boite noire dédié à WordPress. Il va détecter la version de WordPress, lister d'éventuelles vulénrabilités connues pour cette version, répertorier les thèmes et plugins utilisés avec leur failles et pointer des défauts de configuration de l'installation.
|
||
|
||
Pour l'installer, vous pouvez suivre les instructions de [la documentation](https://github.com/wpscanteam/wpscan#install)
|
||
|
||
### Utilisation
|
||
|
||
#### Mise à jour
|
||
Avant la première utilisation, et de manière régulière, il faut mettre à jour WPScan, cela lui permet de récupérer la liste des dernière vulnérabiliés. Vous pouvez le faire avec la commande suivante :
|
||
|
||
~~~
|
||
ruby wpscan.rb --update
|
||
~~~
|
||
|
||
*Note* : Si votre base de donnée locale des vulnérabilités est trop ancienne, le script vous proposera automatiquement de faire la mise à jour.
|
||
|
||
#### Scan d'un site
|
||
|
||
L'opération est simple, il suffit juste de donner l'adresse du site à WPScan. Vous optiendrez alors un compte rendu complet de la situation.
|
||
|
||
~~~
|
||
ruby wpscan.rb --url example.net
|
||
~~~
|
||
|
||
# Erreurs
|
||
|
||
## Problème de "Live preview" sur les thèmes
|
||
|
||
S’il y a un problème pour generer un "live preview" d'un thèmes, ou si on a une erreur php de ce type dans les logs :
|
||
|
||
PHP Fatal error: Call to undefined function submit_button() in $HOME/www/wp-content/plugins/ssh-sftp-updater-support/sftp.php on line 249
|
||
|
||
Il faut ajouter cette option dans le fichier wp-config.php :
|
||
|
||
~~~
|
||
define( 'FS_METHOD', 'direct' );
|
||
~~~
|
||
|
||
Il faut placer cette option avant toutes les autres, en début de fichier.
|
||
|
||
## Erreur lors de mise a jour : Impossible de localiser le dossier racine de WordPress (wp-content)
|
||
|
||
Il faut ajouter ce hack à la fin du fichier *wp-config.php* :
|
||
|
||
~~~
|
||
if(is_admin()) {
|
||
add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
|
||
define( 'FS_CHMOD_DIR', 0751 );
|
||
}
|
||
~~~
|
||
|