Ausführen von WordPress unter OpenBSD 6.6 mit OpenBSDs HTTPD

Einführung

Angesichts der Vorliebe von OpenBSD für Sicherheit ist es nur sinnvoll, Ihre WordPress-Website damit zu versorgen, insbesondere weil WordPress und PHP dazu neigen, Ziele für Skriptkinder zu sein. Da OpenBSDs httpd hauptsächlich für die Bereitstellung statischer Seiten ausgelegt ist, sind POST-Vorgänge den Prozessen fastcgi und slowcgi vorbehalten. Dies macht es für einen betrügerischen Akteur schwieriger, den Prozess des Webservers möglicherweise zu unterbrechen und Zugriff auf Ihren Server zu erhalten. POST-Operationen werden an den fastcgi-Prozess weitergeleitet und verwenden einen externen Interpreter. In diesem Artikel wird nicht nur das Einrichten Ihrer WordPress-Site, sondern auch einige grundlegende Wartungstechniken sowie das Sichern und Wiederherstellen Ihrer Site und ihrer Datenbank erläutert. Wo immer Sie example.comdie Domain sehen, ersetzen Sie sie bitte durch Ihre Domain.

Anfangskonfiguration

Wenn Sie dies noch nicht getan haben, müssen Sie eine /etc/doas.confDatei erstellen . Der Befehl doas ist OpenBSDs einfacher Ersatz für sudo. Der Einfachheit halber habe ich die Option nopass hinzugefügt, damit Sie Ihr Kennwort bei Verwendung von doas nicht erneut eingeben müssen. Wenn Sie dies nicht möchten, lassen Sie einfach nopass weg.

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

Abhängig davon, wie OpenBSD für die Bereitstellung gepackt wurde, ist im Paketmanager manchmal kein Repository konfiguriert. Um das offizielle OpenBSD-Repository zu konfigurieren, müssen wir die /etc/installurlDatei erstellen .

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

Jetzt müssen wir PHP und einige zusätzliche Module hinzufügen, die WordPress benötigt, um Dinge wie Bilder und Verschlüsselung zu handhaben. Wenn Sie dazu aufgefordert werden, installieren Sie das neueste PHP-Paket. Eine Sache, die Sie tun müssen, ist, die Modul-INI-Dateien aus dem Beispielverzeichnis in das Hauptverzeichnis zu kopieren. Dies muss erfolgen, um die zusätzlichen PHP-Module zu aktivieren.

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/.

Lassen Sie uns Zertifikate verschlüsseln

In der heutigen Welt müssen Websites über SSL bereitgestellt werden oder von Suchmaschinen heruntergestuft werden. Glücklicherweise hat OpenBSD eine großartige Anwendung namens acme-client. Der acme-Client generiert automatisch einen neuen privaten Schlüssel und fordert ein neues vollständig gültiges Zertifikat an. Der acme-Client hängt davon ab, ob ein Webserver vorhanden ist. Daher müssen wir eine schnelle Standardserverdefinition erstellen.

Erstellen Sie mit Ihrem Lieblingseditor /etc/httpd.conf. Wir werden die anderen Serverdefinitionen später zur Datei hinzufügen. Im Moment wird dies ausreichen, damit der acme-client ordnungsgemäß funktioniert.

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"
    }
}

Erstellen Sie auch mit Ihrem Lieblingseditor /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
}

Jetzt müssen wir httpd aktivieren und starten. Sobald wir dies getan haben, können wir acme-client ausführen und darauf warten, dass es unser neues Zertifikat erhält. Nachdem wir dies getan haben, fügen wir alle 7 Tage einen Cron-Job hinzu, um automatisch einen neuen anzufordern, damit wir uns keine Sorgen über den Ablauf machen müssen.

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

Jetzt erstellen wir den Cron-Job. Fügen Sie diese Zeile unter dem allerletzten Eintrag hinzu. In diesem Fall weisen wir acme-client an, das neue Zertifikat jeden Samstag um 1:00 Uhr anzufordern.

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

HTTPD für WordPress konfigurieren

Jetzt ist es Zeit, httpd für WordPress einzurichten. Anstatt die Definition unserer Website direkt in zu platzieren /etc/httpd.conf, werden wir sie in einer separaten Datei namens /etc/httpd.conf.example.comaufrufen und in die Hauptkonfigurationsdatei aufnehmen. Es wird im Allgemeinen empfohlen, die beiden zu trennen und die standortweiten Definitionen in Ihrer Hauptkonfigurationsdatei und die domänenspezifischen Einstellungen in einer anderen zu belassen.

Fügen Sie die folgende Zeile am Ende Ihrer /etc/httpd.confDatei hinzu:

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

Erstellen Sie jetzt mit Ihrem Lieblingseditor Ihren /etc/httpd.conf.example.com. Der Einfachheit halber erstellen wir separate Protokolldateien für Ihre Domain. Dies erleichtert das Aufspüren potenzieller Probleme mit Ihrer Website.

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"
    }
}

Aus Sicherheitsgründen implementieren wir eine zusätzliche Eingabeaufforderung für einen Benutzernamen und ein Kennwort, wenn Sie sich bei der WordPress-Verwaltungssite anmelden. Da Script-Kiddies wiederholt versuchen, die Anmeldung von WordPress zu bruteforce, erstellen wir eine zusätzliche Anmeldung auf Webserverebene. Normalerweise erhalten sie ungefähr 5 Vermutungen, bevor WordPress einen 401 Unauthorized-Fehler auslöst.

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

PHP und PHP-FPM vorbereiten und konfigurieren

Wir müssen eine Änderung in PHP vornehmen, damit Ihre WordPress-Installation E-Mails senden kann. WordPress und einige Plugins sind auf die Fähigkeit angewiesen, E-Mails zu senden, die Sie über Upgrades, Warnungen und Änderungen informieren. Die Unfähigkeit, E-Mails zu senden, kann bestimmte Funktionen von WordPress beeinträchtigen. Da httpd in einer Chroot-Umgebung ausgeführt wird, müssen wir PHP mitteilen, wie E-Mails gesendet werden sollen. Außerdem müssen wir einige Performance-Wochen mit php-fpm verbringen.

Suchen Sie nach der sendmail_pathZeile in /etc/php-7.3.iniund nehmen Sie die folgenden Änderungen vor:

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

Suchen Sie nach den folgenden Zeilen /etc/php-fpm.confund ändern Sie sie wie folgt:

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

Der nächste Schritt ist das Aktivieren und Starten von php-fpm.

doas rcctl enable php73_fpm
doas rcctl start php73_fpm

MariaDB vorbereiten und konfigurieren

MariaDB ist eine Drop-In-Ersatzgabel von MySQL. Wir müssen einige anfängliche Konfigurations- und Datenbankvorbereitungsarbeiten für WordPress durchführen.

Bevor wir MariaDB effektiv nutzen können, müssen wir dem MySQL-Daemon erlauben, mehr Ressourcen als die Standardeinstellung zu verwenden. Nehmen Sie dazu die folgenden Änderungen vor, /etc/login.confindem Sie diesen Eintrag unten hinzufügen.

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

Wir müssen einige Änderungen in der MariaDB-Konfigurationsdatei vornehmen /etc/my.cnf. Indem der MySQL-Client und -Server über einen UNIX-Domain-Socket anstelle von TCP kommunizieren, kann die Speichernutzung Ihres Servers verringert werden. Sie müssen nicht alle unten vorgeschlagenen Änderungen vornehmen. Die beiden wichtigsten, die geändert werden müssen, sind die socketZeile und das Auskommentieren der bind-addressZeile. Dadurch wird der Socket innerhalb der /var/wwwChroot-Umgebung verschoben, sodass WordPress eine Verbindung zur Datenbank herstellen kann. Durch das Auskommentieren der bind-addressZeile verhindern wir, dass MariaDB einen TCP-Port abhört.

[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

Jetzt müssen wir die MariaDB-Installationsbinärdatei ausführen und MariaDB aktivieren und starten. Durch dieses Verfahren wird ein Root-Passwort festgelegt und optional die Testdatenbank gelöscht. Es ist eine gute Idee, alle Vorschläge in der sicheren Installationsphase zu befolgen.

doas mysql_install_db
doas rcctl enable mysqld
doas rcctl start mysqld
doas mysql_secure_installation

Erstellen Sie die WordPress-Datenbank und den Datenbankbenutzer. Denken Sie daran, durch den <wp_user>von Ihnen gewählten Datenbankbenutzernamen und <password>ein komplexes Passwort Ihrer Wahl zu ersetzen .

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

Installieren und konfigurieren Sie WordPress

WordPress hat seit einiger Zeit keinen offiziellen OpenBSD-Port mehr, da es sofort funktioniert. Laden Sie den WordPress-Installationsordner herunter, extrahieren Sie ihn und verschieben Sie ihn.

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 {} \;

Wir müssen kopieren /etc/resolv.confund /etc/hostsin ein Verzeichnis, das wir erstellen werden, rufen /var/www/etc. Auf diese Weise kann WordPress den Markt erfolgreich erreichen. Sie benötigen dies, um Plugins und Themes über die WordPress-Admin-Site herunterzuladen. Es ist auch wichtig, dass das Jet Pack-Plugin ordnungsgemäß funktioniert.

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

Navigieren Sie von hier aus mit https über die in der Webserverdefinition angegebene URL zu Ihrer WordPress-Website. Wenn alles richtig funktioniert, sollte der WordPress-Installationsassistent angezeigt werden. Wenn Sie zu der Option gelangen, einen Datenbankserver anzugeben, sollten Sie verwendenlocalhost:/var/run/mysql/mysql.sock

Sobald WordPress installiert wurde, ist es Zeit, die Permalinks so einzurichten, dass sie SEO-freundlicher aussehen. Gehen Sie im WordPress-Administrationsbildschirm zu Settings -> Permalinks. Klicken Sie auf Benutzerdefinierte Struktur und geben Sie ein /posts/%postname%. Klicken Sie nach dieser Änderung auf die Schaltfläche Änderungen speichern. Sie haben jetzt viel besser aussehende Links. Ein Permalink sieht beispielsweise folgendermaßen aus:https://example.com/posts/example-blog-post

Von hier aus sollten Sie eine einfache Website bereithalten. Stellen Sie sicher, dass Sie Plugins wie Jet Pack und WP-Super Cache installieren. Das WP-Super Cache-Plugin beschleunigt Ihre Website, indem es Webseiten zwischenspeichert und ständige Datenbank-Lookups eliminiert. JetPack bietet Ihnen einige hervorragende Statistiken zur Zuschauerzahl.

Sichern Ihrer WordPress-Website und -Datenbank

Es versteht sich von selbst, dass das Sichern Ihrer Website und Datenbank sehr wichtig ist. Zum Glück ist dies relativ einfach. Sichern Sie beide in Ihrem Home-Verzeichnis und kopieren Sie sie dann über scp an einen anderen Speicherort. Sie können einen Schnappschuss auch über die Vultr-Systemsteuerung erstellen. Es ist eine gute Idee, beides zu tun.

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

Wiederherstellen Ihrer WordPress-Website

Wenn Ihre Datenbank beschädigt wurde und eine Wiederherstellung erforderlich ist, führen Sie folgende Schritte aus:

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

Wenn Sie eine Änderung an einer WordPress-Skriptdatei vorgenommen haben, die etwas beschädigt hat, können Sie WordPress jederzeit über das Admin-Kontrollfeld neu installieren. Suchen Sie nach dem UpdatesAbschnitt und klicken Sie auf den Link. Suchen Sie nach einer Schaltfläche mit der Bezeichnung Re-install Now. Dadurch wird zumindest das Problem behoben, aber der größte Teil Ihrer Konfiguration sollte intakt bleiben.

Wenn Ihre Datenbank in einem guten Zustand ist, Sie jedoch versehentlich eine Datei bearbeitet und die Fehler behoben haben, sodass Sie nicht einmal mehr zur WordPress-Administratorkonsole gelangen können, gehen Sie wie folgt vor:

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

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist

ReactOS: Ist das die Zukunft von Windows?

ReactOS: Ist das die Zukunft von Windows?

ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.