Bonjour à tous,
J'ai mis à jour mon tutoriel précédent pour installer tous les éléments nécessaires sur un VPS vierge sous **Debian 10**, pour faire tourner **WordPress et WooCommerce** derrière un **NGINX** configuré pour le **HTTPS avec renouvellement des certificats automatiques**.
Vous y retrouverez tous les éléments nécessaires à la sécurité : création d'un utilisateur non-root, désactivation du login root, configuration du firewall et ajout de protection anti brut-force.
Ce guide est **INTERACTIF** : en entrant les informations de votre VPS, son IP, votre domaine, le nom d'utilisateur souhaité, etc... Toutes les commandes sont automatiquement customisées pour vous ! Cela inclut les fichiers de configuration pour PHP-FPM et nginx ! **Perso à chaque fois ça me fait un gain de temps de ouf, en diminuant le risque d'erreur.**
**L'installation de WordPress et WooCommerce repose sur wp-cli**
https://cxyz.fr/blog/2019-10/installer-wordpress-sur-un-vps-debian-10
VPS-old - Tutoriel complet pour installer WordPress et WooCommerce sur un VPS sous Debian 10 à pa
Related questions
- Accès FTP sur VPS
40665
30.06.2017 18:35
- Ma Webradio : Icecast2 ok?, Butt envoi, mais aucun Player fonctionne
32558
14.01.2021 21:37
- Commande restart mysql Centos 7
28528
11.04.2017 15:05
- Problème page site en construction
27867
17.02.2019 18:15
- Erreur "502 Bad Gateway - nginx"
24480
06.12.2016 08:39
- Migration de Debian 8 vers Debian 9
24398
24.06.2017 07:59
- Toujours pas de SLA ?
24171
09.01.2018 18:03
- Mode rescue modifier firewall URGENT
21715
07.09.2018 11:38
- Tuto pour installer Wordpress sur un VPS OVH
20676
16.10.2016 15:52
- OpenVPN sur VPS ne fonctionne pas
20633
06.08.2018 10:33
Merci de partager cette doc.
Il y'a juste un point sur lequel j'aimerai revenir.
C'est le fait d'installer PHP7.3 depuis les repos sury alors que cette version est dispo dans les repos Debian.
Pour ma part je préfère dans la mesure du possible rester sur les dépôts Debian.
Idem pour nginx je crois, je ne vois pas trop l'intérêt de passer par des dépôts tiers quand Debian fournit ce qu'il faut.
Mais en dehors de ça la doc est très bien présentée, avec les commandes qui vont bien à chaque fois. Merci pour ceux qui pourraient en avoir besoin.
Avec plaisir :)
Effectivement pour PHP dans la mesure où on veut rester en 7.3 dans le futur, y'a pas trop de raison pour basculer sur les repo sury. D'ailleurs les packages intégrés à la distrib sont ceux de sury sauf erreur de ma part.
Pour nginx j'ai regardé les versions à l'instant T et j'ai vu que sur https://packages.debian.org/buster/nginx c'est en 1.14.2 alors qu'avec sury on est en 1.16.1.
En fait c'est plus du vécu avec les repo stable Debian, je me suis parfois trop reposé dessus et je me suis retrouvé avec des services avec d'anciennes version malgré les updates. Nginx par exemple est bien dispo sur Debian 9, mais certainement pas en dernière version, vu que c'est à l'opposé de la philosophie de la branche stable. Du coup parfois tu vas tomber sur une config qui marchera pas avec ton système et je trouve ça dommage alors ces services évoluent dans le bon sens avec le temps. (Bon ça c'était peut-être avant le rachat de nginx par F5 ;D)
Merci pour ton retour, ça me fait plaisir :)
Ben c'est le principe de Debian Stable :)
Dès que la version est sortie, il n'y a plus que des mises à jour de sécurité.
Pas de montée de version.
Avec ça on est sûr et certain que pendant 5 ans les logiciels fonctionneront comme au premier jour.
Et ça, ben c'est juste parfait pour un sysadmin :)
Je gère une 30aine de serveurs / vps / cloud, si je devais me retrouver avec une montée de version qui plante ma config suite à une mise à jour ça serait vraiment vraiment pas une bonne chose pour moi !
Après Debian sort une nouvelle version tous les 2 ans, c'est amplement suffisant pour moi. Les clients qui veulent avoir un système + récent je les migres et ils sont content. Mais la plupart de mes clients restent jusqu'au bout du support.
Sinon il reste Arch pour ceux qui aiment avoir la dernière version !
Bon même si je sais installer Arch je ne mettrai pas ça sur un serveur de prod, c'est suicidaire !
Mais à la limite j'ajouterai une petite note dans ta doc pour préciser que tu utilises des repos externes pour PHP et NGinx.
Car je ne sais pas comment sury gère les mises à jour si il fait des montées de version lors des mises à jour.
Pour PHP il ne passera pas automatiquement de PHP 7.3 à PHP 7.4.
Je m'en sers sur 2/3 serveurs aux besoins très spécifiques.
Mais pour nginx je ne sais pas.
Je te remercie, superbe boulot.
2 petit trucs, il serait judicieux de remplacer l'obsolete "service" par systemctl restart ngix
corriger la partie " renouvellement automatique" qui demande les droits root, par exemple un sudo su - avant d’exécuter la commande.
La partie woocomerce ne fonctionne pas, il manque la base de donnée.
sudo -u www-data wp plugin install woocommerce --activate
Installing WooCommerce (5.1.0)
Téléchargement du paquet d’installation depuis https://downloads.wordpress.org/plugin/woocommerce.5.1.0.zip…
Warning: Failed to create directory '/var/www/.wp-cli/cache/plugin': mkdir(): Permission denied.
Décompression de l’archive de l’extension...
Installation de l’extension...
L’extension a bien été installée.
Activating 'woocommerce'...
Erreur de la base de données WordPress Incorrect table name 'gerardmauricemothe_ovh_woocommerce_downloadable_product_permissions' pour la requête
CREATE TABLE gerardmauricemothe_ovh_woocommerce_downloadable_product_permissions (
permission_id BIGINT UNSIGNED NOT NULL auto_increment,
download_id varchar(36) NOT NULL,
product_id BIGINT UNSIGNED NOT NULL,
order_id BIGINT UNSIGNED NOT NULL DEFAULT 0,
order_key varchar(200) NOT NULL,
user_email varchar(200) NOT NULL,
user_id BIGINT UNSIGNED NULL,
downloads_remaining varchar(9) NULL,
access_granted datetime NOT NULL default '0000-00-00 00:00:00',
access_expires datetime NULL default null,
download_count BIGINT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (permission_id),
KEY download_order_key_product (product_id,order_id,order_key(16),download_id),
KEY download_order_product (download_id,order_id,product_id),
KEY order_id (order_id),
KEY user_order_remaining_expires (user_id,order_id,downloads_remaining,access_expires)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci faite par include('phar:///usr/local/bin/wp/php/boot-phar.php'), include('phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/wp-cli.php'), WP_CLI\bootstrap, WP_CLI\Bootstrap\LaunchRunner->process, WP_CLI\Runner->start, WP_CLI\Runner->run_command_and_exit, WP_CLI\Runner->run_command, WP_CLI\Dispatcher\Subcommand->invoke, call_user_func, WP_CLI\Dispatcher\CommandFactory::WP_CLI\Dispatcher\{closure}, call_user_func, Plugin_Command->install, WP_CLI\CommandWithUpgrade->install, Plugin_Command->activate, activate_plugin, do_action('activate_woocommerce/woocommerce.php'), WP_Hook->do_action, WP_Hook->apply_filters, WC_Install::install, WC_Install::create_tables, dbDelta
Erreur de la base de données WordPress Incorrect table name 'gerardmauricemothe_ovh_woocommerce_downloadable_product_permissions' pour la requête SHOW COLUMNS FROM gerardmauricemothe_ovh_woocommerce_downloadable_product_permissions WHERE Field = 'permission_id' faite par include('phar:///usr/local/bin/wp/php/boot-phar.php'), include('phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/wp-cli.php'), WP_CLI\bootstrap, WP_CLI\Bootstrap\LaunchRunner->process, WP_CLI\Runner->start, WP_CLI\Runner->run_command_and_exit, WP_CLI\Runner->run_command, WP_CLI\Dispatcher\Subcommand->invoke, call_user_func, WP_CLI\Dispatcher\CommandFactory::WP_CLI\Dispatcher\{closure}, call_user_func, Plugin_Command->install, WP_CLI\CommandWithUpgrade->install, Plugin_Command->activate, activate_plugin, do_action('activate_woocommerce/woocommerce.php'), WP_Hook->do_action, WP_Hook->apply_filters, WC_Install::install, WC_Install::create_tables
Plugin 'woocommerce' activated.
Bonjour @ConradL,
Merci pour ton tuto, qui m'a beaucoup aidé. Je voulais me réappuyer dessus pour installer un second site mais l'URL aboutit à une page de rachat de nom de domaine...
As-tu un nouveau nom de domaine ? Et si oui, pourrais-tu nous communiquer cette nouvelle adresse stp ?