Exécuter WordPress sur OpenBSD 6.6 avec OpenBSD HTTPD

introduction

Étant donné le penchant d'OpenBSD pour la sécurité, cela n'a de sens que d'alimenter votre site Web WordPress avec lui, en particulier parce que WordPress et PHP ont tendance à être des cibles mobiles pour les script kiddies. Le httpd d'OpenBSD étant principalement conçu pour servir des pages statiques, les opérations POST sont réservées aux processus fastcgi et slowcgi. Cela rend plus difficile pour un acteur voyou de potentiellement interrompre le processus du serveur Web et accéder à votre serveur. Les opérations POST sont dirigées vers le processus fastcgi et utilisent un interpréteur externe. Cet article traitera non seulement de la configuration de votre site WordPress, mais également de certaines techniques de maintenance de base et de la sauvegarde et de la restauration de votre site et de sa base de données. Partout où vous voyez example.comle domaine, veuillez le remplacer par votre domaine.

Configuration initiale

Si vous ne l'avez pas déjà fait, vous devrez créer un /etc/doas.conffichier. La commande doas est le remplacement facile d'OpenBSD pour sudo. Pour plus de commodité, j'ai ajouté l'option nopass afin que vous n'ayez pas à retaper votre mot de passe lorsque vous utilisez des doas. Si vous préférez ne pas l'avoir, omettez simplement nopass.

su -
echo "permit nopass keepenv :wheel" > /etc/doas.conf

Selon la façon dont OpenBSD a été empaqueté pour le déploiement, le gestionnaire de packages peut parfois ne pas avoir de référentiel configuré. Pour configurer le dépôt officiel d'OpenBSD, nous devons créer le /etc/installurlfichier.

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 fichiers ini du module depuis le répertoire d'exemple vers 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 php-zip pecl73-mcrypt pecl73-imagick wget
doas cp /etc/php-7.3.sample/* /etc/php-7.3/.

Obtenir des certificats Let's Encrypt

Dans le monde d'aujourd'hui, les sites Web doivent être servis via SSL ou être menacés par les moteurs de recherche. Heureusement, OpenBSD a une excellente application appelée acme-client. Le client acme générera automatiquement une nouvelle clé privée et demandera un nouveau certificat entièrement valide. Le client acme dépend de la présence d'un serveur Web, nous devons donc créer 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. Pour l'instant, cela suffira pour que le client acme fonctionne correctement.

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-v02.api.letsencrypt.org/directory"
    account key "/etc/acme/letsencrypt-privkey.pem"
}

authority letsencrypt-staging {
    api url "https://acme-staging-v02.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.crt"
    sign with letsencrypt
}

Nous devons maintenant activer et démarrer httpd. Une fois cela fait, nous pouvons exécuter acme-client et attendre qu'il obtienne notre nouveau certificat. Après cela, nous ajouterons un travail cron pour en demander automatiquement un nouveau tous les 7 jours afin que nous n'ayons pas à nous soucier de l'expiration.

doas rcctl enable httpd
doas rcctl start httpd
doas acme-client -v example.com

Nous créons maintenant le travail cron. Ajoutez cette ligne sous la toute dernière entrée. Dans ce cas, nous demandons à acme-client de demander le nouveau certificat à 1h00 tous les samedis.

doas crontab -e
0       1       *       *       6       acme-client -F example.com && rcctl reload httpd

Configurer HTTPD pour WordPress

Il est maintenant temps de configurer httpd pour WordPress. Plutôt que de placer directement la définition de notre site Web /etc/httpd.conf, nous allons le placer dans un fichier distinct appelé /etc/httpd.conf.example.comet l'inclure dans le fichier de configuration principal. Il est généralement recommandé de séparer les deux, en conservant les définitions à l'échelle du site dans votre fichier de configuration principal et les paramètres spécifiques au domaine dans un autre.

Ajoutez la ligne suivante au bas de votre /etc/httpd.conffichier:

include "/etc/httpd.conf.example.com"

Maintenant, en utilisant votre éditeur préféré, créez votre /etc/httpd.conf.example.com. Pour plus de commodité, nous allons créer des fichiers journaux distincts pour votre domaine. Cela facilite la tâche lors de la recherche de problèmes potentiels avec votre site.

server "example.com" {
    listen on egress port 80
    alias "www.example.com"

    # Automatically redirect to SSL
    block return 302 "https://$SERVER_NAME$REQUEST_URI"

    log {
            access "access-example.com"
            error "error-example.com"
    }
}

server "example.com" {
    listen on egress tls port 443
    alias "www.example.com"
    root "/htdocs/wordpress"
    directory index "index.php"

    log {
            access "access-example.com"
            error "error-example.com"
    }
    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/example.com.crt"
            key "/etc/ssl/private/example.com.key"
    }
    hsts {
            # max-age value is the number of seconds in 1 year
            max-age 31556952
            preload
            subdomains
    }

    location "/.well-known/acme-challenge/*" {
            root "/acme"
            request strip 2
    }
    location "/posts/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/page/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "/htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/comments/feed/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
     location "/wp-json/*" {
            fastcgi {
                    param SCRIPT_FILENAME \
                            "htdocs/wordpress/index.php"
                    socket "/run/php-fpm.sock"
            }
    }
    location "/wp-login.php*" {
            authenticate "WordPress" with "/htdocs/htpasswd"
            fastcgi socket "/run/php-fpm.sock"
    }
    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

Pour plus de sécurité, nous allons implémenter une invite supplémentaire pour un nom d'utilisateur et un mot de passe lors de la connexion au site d'administration WordPress. Étant donné que les script kiddies aiment essayer à plusieurs reprises la connexion bruteforce de WordPress, nous créons une connexion supplémentaire au niveau du serveur Web. En règle générale, ils obtiennent environ 5 suppositions avant que WordPress ne génère une erreur 401 non autorisée.

doas su
cd /var/www/htdocs
doas htpasswd htpasswd <user>
doas chown www:www htpasswd
doas chmod 0640 htpasswd
doas rcctl reload httpd

Préparer et configurer PHP et PHP-FPM

Nous devons modifier le php pour que votre installation WordPress puisse envoyer des e-mails. WordPress et certains plugins reposent sur la possibilité d'envoyer des e-mails vous informant des mises à niveau, des alertes et des modifications. L'incapacité d'envoyer des e-mails peut casser certaines fonctionnalités de WordPress. Puisque httpd fonctionne dans un environnement chrooté, nous devons dire à php comment envoyer des e-mails. De plus, nous devons faire quelques tweeks de performance à php-fpm.

Recherchez la sendmail_pathligne /etc/php-7.3.iniet effectuez la modification suivante:

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; sendmail_path =
sendmail_path = /bin/femail -t -i

Recherchez les lignes suivantes dans /etc/php-fpm.confet modifiez-les comme suit:

pm.start_servers = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 6

L'étape suivante consiste à activer et démarrer php-fpm.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

Préparer et configurer MariaDB

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.confen ajoutant cette entrée en bas.

mysqld:\
    :openfiles-cur=1024:\
    :openfiles-max=2048:\
    :tc=daemon:

Nous devons faire quelques modifications dans le fichier de configuration MariaDB, /etc/my.cnf. En faisant communiquer le client et le serveur mysql via une socket de domaine UNIX au lieu de TCP, l'utilisation de la mémoire de votre serveur peut être réduite. Vous n'êtes pas obligé d'effectuer toutes les modifications suggérées ci-dessous. Les deux éléments importants à modifier sont la socketligne et à commenter la bind-addressligne. Cela déplace le socket à l'intérieur de l' /var/wwwenvironnement chroot afin que WordPress puisse se connecter à la base de données. En commentant la bind-addressligne, nous empêchons MariaDB d'écouter sur un port TCP.

[client-server]
socket=/var/www/var/run/mysql/mysql.sock
#port=3306

# This will be passed to all MariaDB clients
[client]
#password=my_password

# The MariaDB server
[mysqld]
# To listen to all IPv4 network addresses, use "bind-address = 0.0.0.0"
#bind-address=127.0.0.1
# Directory where you want to put your data
#data=/var/mysql
# This is the prefix name to be used for all log, error and replication files
#log-basename=mysqld
# Logging
#log-bin=/var/mysql/mariadb-bin
#max_binlog_size=100M
#binlog_format=row
#expire_logs_days = 7
#general-log
#slow_query_log
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M

Maintenant, nous devons exécuter le binaire d'installation de MariaDB et activer et démarrer 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 toutes 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. N'oubliez pas de remplacer <wp_user>par votre nom d'utilisateur de base de données et <password>par un mot de passe complexe de votre choix.

mysql -u root -p 
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT

Installer et configurer WordPress

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/.
doas chown -R www:www /var/www/htdocs/wordpress
doas chmod 0755 /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress/
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Nous devons copier /etc/resolv.confet /etc/hostsdans un répertoire que nous allons créer appelé /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. Il est également important que le plug-in Jet Pack fonctionne correctement.

doas mkdir /var/www/etc
doas cp /etc/hosts /var/www/etc/.
doas cp /etc/resolv.conf /var/www/etc/.

À partir d'ici, accédez à votre site Web WordPress en utilisant https via l'URL que vous avez spécifiée dans la définition de serveur Web. Si tout fonctionne correctement, vous devriez voir l'assistant d'installation de WordPress. Lorsque vous obtenez l'option de spécifier un serveur de base de données, vous devez utiliserlocalhost:/var/run/mysql/mysql.sock

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 Structure et type personnalisés /posts/%postname%. Après avoir effectué cette modification, cliquez sur le bouton Enregistrer les modifications. Vous avez maintenant des liens beaucoup plus beaux. Par exemple, un permalien ressemblera à ceci:https://example.com/posts/example-blog-post

À partir d'ici, vous devriez avoir un site Web de base prêt à l'emploi. Assurez-vous d'installer des plugins comme Jet Pack et WP-Super Cache. Le plugin WP-Super Cache permet d'accélérer votre site Web en mettant en cache des pages Web et en éliminant les recherches de base de données constantes et JetPack vous donne d'excellentes statistiques d'audience.

Sauvegarder votre site Web et votre base de données WordPress

Il va sans dire que la sauvegarde de votre site Web et de votre base de données est très importante. Heureusement, c'est une chose relativement facile à faire. Sauvegardez les deux dans votre répertoire personnel et vous pouvez ensuite les copier via scp vers un autre emplacement. Vous pouvez également créer un instantané via le panneau de configuration Vultr. C'est une bonne idée de faire les deux.

cd /var/www/htdocs
tar cvfz wordpress.tgz wordpress/
cp wordpress.tgz /home/user
mysqldump -u root -p wordpress > wordpress.sql && gzip wordpress.sql

Restaurer votre site Web WordPress

Si votre base de données est corrompue et qu'une restauration est nécessaire, procédez comme suit:

gunzip wordpress.sql.gz
mysql -u root -p wordpress
DROP USER '<user>'@'localhost';
DROP DATABASE wordpress;
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO '<wp_user>'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
EXIT
mysql -u root -p wordpress < wordpress.sql

Si vous avez modifié un fichier de script WordPress qui a cassé quelque chose, vous pouvez toujours réinstaller WordPress via le panneau de configuration administrateur. Recherchez la Updatessection et cliquez sur le lien. Recherchez un bouton étiqueté Re-install Now. Cela corrigera au moins ce qui est cassé mais la plupart de votre configuration devrait rester intacte.

Si votre base de données est en bon état, mais que vous avez accidentellement modifié un fichier et interrompu des choses au point où vous ne pouvez même plus accéder à la console d'administration WordPress, procédez comme suit:

rm /var/www/htdocs/wordpress
cp /home/user/wordpress.tgz /tmp
tar xvfz wordpress.tgz
mv wordpress /var/www/htdocs/.
chown -R www:www /var/www/htdocs/wordpress
cd /var/www/htdocs/wordpress
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;


Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.