introduction
Plus vous gardez votre installation OpenBSD par défaut et sans autant de packages ajoutés, plus elle sera sécurisée. Alors que la configuration la plus courante pour WordPress consiste à utiliser Apache et PHP, il est certainement possible (et préférable) d'utiliser httpd intégré à OpenBSD. Ce didacticiel vous permettra de démarrer avec une configuration complète d'un certificat Let's Encrypt, d'un serveur Web et de WordPress. Vous aurez besoin d'un accès root pour pouvoir le faire.
Configuration initiale
Si vous ne l'avez pas déjà fait, vous devrez créer un /etc/doas.conf
fichier. La doas
commande est le remplacement facile d'OpenBSD sudo
.
su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf
Nous devons dire à OpenBSD où se trouvent les packages. Cela se produit dans le /etc/installurl
fichier.
doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit
Maintenant, nous devons ajouter PHP et certains modules supplémentaires dont WordPress aura besoin pour gérer des choses comme les images et le cryptage. Lorsque vous y êtes invité, choisissez d'installer le dernier package de PHP. Une chose que vous devez faire est de copier les ini
fichiers du module du répertoire d'exemples dans le répertoire principal. Cela doit être fait afin d'activer les modules PHP supplémentaires.
doas pkg_add -r mariadb-client mariadb-server php php-curl php-mysqli pecl73-mcrypt pecl73-imagick
doas su -
cp /etc/php-7.3.sample/* /etc/php-7.3/.
Obtenir des certificats Let's Encrypt
OpenBSD a une excellente application appelée acme-client. Cette petite innovation est ce qui va générer votre clé de compte, votre clé privée et obtenir un certificat pour vous. Le client acme dépend de la présence d'un serveur Web, nous définissons donc une définition de serveur par défaut rapide.
Avec votre éditeur préféré, créez /etc/httpd.conf
. Nous ajouterons les autres définitions de serveur au fichier ultérieurement. Ce que nous devons faire maintenant, c'est préparer httpd à effectuer la défi-réponse pour obtenir un certificat SSL valide et gratuit.
prefork 5
types { include "/usr/share/misc/mime.types" }
server "default" {
listen on egress port 80
root "/htdocs"
directory index "index.html"
location "/.well-known/acme-challenge/*" {
request strip 2
root "/acme"
}
}
En utilisant également votre éditeur préféré, créez /etc/acme-client.conf
.
authority letsencrypt {
api url "https://acme-v01.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-privkey.pem"
}
authority letsencrypt-staging {
api url "https://acme-staging.api.letsencrypt.org/directory"
account key "/etc/acme/letsencrypt-staging-privkey.pem"
}
domain example.com {
alternative names { www.example.com }
domain key "/etc/ssl/private/example.com.key"
domain full chain certificate "/etc/ssl/example.com.fullchain.pem"
sign with letsencrypt
}
Activez et démarrez httpd, puis obtenez un certificat émis. Vous verrez qu'un certificat a été émis.
doas rcctl enable httpd php73_fpm
doas rcctl start httpd
doas acme-client -ADFv example.com
doas rcctl stop httpd
Ajout des définitions de serveur
Ajoutez les lignes de configuration suivantes à /etc/httpd.conf
, juste après les définitions Let's Encrypt. Configurez httpd pour effectuer une redirection de http vers https car vous disposez d'un certificat SSL gratuit et vous ne voulez jamais risquer d'envoyer un identifiant et un mot de passe via un lien non sécurisé. Prenez note de la ligne, location "/posts/*"
c'est la pièce qui rend les permaliens WordPress jolis. En outre, cette configuration contient un moyen d'aider à empêcher les tentatives de connexion brutale au site d'administration WordPress.
server "example.com" {
listen on egress port 80
alias "www.example.com"
block return 302 "https://$SERVER_NAME$REQUEST_URI"
}
server "example.com" {
listen on egress tls port 443
alias "www.example.com"
root "/htdocs/example.com
directory index "index.php"
location "/posts/*" {
fastcgi {
param SCRIPT_FILENAME "/htdocs/example.com/index.php"
socket "/run/php-fpm.sock"
}
}
location "/wp-json/*" {
fastcgi {
param SCRIPT_FILENAME "/htdocs/example.com/index.php"
socket "/run/php-fpm.sock"
}
}
location "/wp-login.php*" {
authenticate "WordPress" with "/htdocs/htpasswd"
fastcgi socket "/run/php-fpm.sock"
}
#Uncomment the following lines to disable xmlrpc. You increase security
#at the expense of being able to use to use
#the Android and iPhone WordPress App.
#location "xmlrpc.php*" {
# block return 404
#}
location "*.php*" {
fastcgi socket "/run/php-fpm.sock"
}
tls {
certificate "/etc/ssl/example.com.fullchain.pem"
key "/etc/ssl/private/example.com.key"
}
}
Créez le fichier de nom d'utilisateur et de mot de passe pour un niveau de sécurité supplémentaire sur le site d'administration WordPress. Choisissez un bon mot de passe. Cela vous demandera un nom d'utilisateur et un mot de passe pour exécuter le wp-login.php
script.
doas su
cd /var/www/htdocs
htpasswd htpasswd wp_user
chown www:www htpasswd
chmod 0640 htpasswd
MariaDB est un fork de remplacement drop-in de MySQL. Nous devons effectuer une configuration initiale et un travail de préparation de la base de données pour WordPress.
Avant de pouvoir utiliser MariaDB efficacement, nous devons autoriser le démon mysql à utiliser plus de ressources que la valeur par défaut. Pour ce faire, apportez les modifications suivantes à /etc/login.conf
en ajoutant cette entrée en bas.
mysqld:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
Activez et démarrez MariaDB. Cette procédure définira un mot de passe root et supprimera éventuellement la base de données de test. C'est une bonne idée de suivre les suggestions de l'étape d'installation sécurisée.
doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation
Créez la base de données WordPress et l'utilisateur de la base de données.
mysql -u root -p
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
WordPress n'a pas eu de port OpenBSD officiel depuis un certain temps car il fonctionne à peu près tout de suite. Téléchargez, extrayez et déplacez le dossier d'installation de WordPress.
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xvfz latest.tar.gz
doas mv wordpress /var/www/htdocs/example.com
chown -R www:www /var/www/htdocs/example.com
Nous devons copier /etc/resolve.conf
et /etc/hosts
à /var/www/etc
. C'est ainsi que WordPress peut réussir à atteindre le marché. Vous en aurez besoin pour télécharger des plugins et des thèmes via le site d'administration WordPress.
doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.
Démarrez httpd et php73_fpm
.
doas rcctl start httpd php73_fpm
Accédez à l'URL que vous avez utilisée dans votre définition de serveur. Vous verrez l'assistant d'installation de WordPress. Pour l'option Serveur de base de données, remplacez localhost par 127.0.0.1
.
Une fois WordPress installé, il est temps de configurer les permaliens pour qu'ils soient plus conviviaux pour le référencement. Depuis l'écran d'administration de WordPress, accédez à Settings -> Permalinks
. Cliquez sur Custom Structure
et tapez /posts/%postname%
. Après avoir effectué cette modification, cliquez sur le Save Changes
bouton. Vous avez maintenant des liens beaucoup plus beaux. Par exemple, un permalien ressemblera à ceci:https://example.com/posts/example-blog-post