WordPress
Installation entweder als Paket aus der Distribution oder per Download von Herunterladen – WordPress.org Deutsch WordPRess wird intensiv weiterentwickelt, der direkte Download liefert aktuellere Versionen als die Paketverwaltung der Distributionen.
WP-CLI
wp-cli erlaubt die WordPress Administration auf der Kommandozeile. Wichtig: das Skript muss mit den Rechten der WordPress Installation aufgerufen werden (nicht als root!). Typischerweise mit sudo und mit dem user www-data
sudo -u www-data wp help
Quelle: https://wp-cli.org/
Installation
- Download
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
- Versionskontrolle
php wp-cli.phar --info
- Ausführbar machen
chmod +x wp-cli.phar
- verschieben, sodass es als system weites binary verfügbar ist
sudo mv wp-cli.phar /usr/local/bin/wp
- danach im jeweiligen WP root directory starten
sudo -u www-data wp
- Hilfe
sudo -u www-data wp help
Beispiele
Core Update einer WP Installation
sudo -u www-data wp core update
root@app6:/var/www/netzwissen.de# sudo -u www-data wp core update
PHP Warning: Undefined array key "HTTP_X_FORWARDED_PROTO" in phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php(1277) : eval()'d code on line 120
Updating to version 6.3.1 (de_DE)...
Herunterladen der Aktualisierung von https://downloads.wordpress.org/release/de_DE/wordpress-6.3.1.zip ...
Entpacken der aktualisierten Version ...
Success: WordPress updated successfully.
User Management
wp user add-cap <user> <cap></font> or: wp user add-role <user> <role>
or: wp user application-password <command>
or: wp user check-password <user> <user_pass> [--escape-chars]
or: wp user create <user-login> <user-email> [--role=<role>] [--user_pass=<password>] [--user_registered=<yyyy-mm-dd-hh-ii-ss>] [--display_name=<name>]
[--user_nicename=<nice_name>] [--user_url=<url>] [--nickname=<nickname>] [--first_name=<first_name>] [--last_name=<last_name>] [--description=<description>
] [--rich_editing=<rich_editing>] [--send-email] [--porcelain]
or: wp user delete <user>... [--network] [--reassign=<user-id>] [--yes]
or: wp user generate [--count=<number>] [--role=<role>] [--format=<format>]
or: wp user get <user> [--field=<field>] [--fields=<fields>] [--format=<format>]
or: wp user import-csv <file> [--send-email] [--skip-update]
or: wp user list [--role=<role>] [--<field>=<value>] [--network] [--field=<field>] [--fields=<fields>] [--format=<format>]
or: wp user list-caps <user> [--format=<format>]
or: wp user meta <command>
or: wp user remove-cap <user> <cap>
or: wp user remove-role <user> [<role>]
or: wp user reset-password <user>... [--skip-email] [--show-password] [--porcelain]
or: wp user session <command>
or: wp user set-role <user> [<role>]
</file>
Password reset
sudo -u www-data wp user reset-password admin --show-password
Alle Themes auflisten
sudo -u www-data wp theme list
|+------------------+----------+--------+---------+
| Divi | active | none | 4.27.4 |
| twentytwentyfive | inactive | none | 1.3 |
| twentytwentyfour | inactive | none | 1.3 |
| +------------------+----------+--------+---------+
Alle Plugins auflisten
root@www1:/var/www/netzwissen.de# sudo -u www-data wp plugin list
+-----------------------------------+----------+--------+----------+
| name | status | update | version |
+-----------------------------------+----------+--------+----------+
| activitypub | active | none | 7.2.0 |
| wp-piwik | active | none | 1.0.30 |
| divi-essential | active | none | 4.7.1 |
| divi-event-calendar-module | inactive | none | 2.8.25 |
| local-google-fonts | active | none | 0.24.0 |
| daggerhart-openid-connect-generic | active | none | 3.10.0 |
| post-smtp | active | none | 3.4.1 |
| real-cookie-banner-pro | active | none | 5.2.0 |
| redis-cache | active | none | 2.6.5 |
| share-on-mastodon | active | none | 0.19.3 |
| svg-support | active | none | 2.5.14 |
| the-events-calendar | active | none | 6.15.0.1 |
| two-factor | active | none | 0.14.0 |
| webfinger | active | none | 3.2.7 |
| wp-discourse | active | none | 2.5.9 |
| wpforms | active | none | 1.9.7.3 |
| wordpress-seo | active | none | 25.8 |
| wordpress-seo-premium | active | none | 25.8 |
| object-cache.php | dropin | none | |
+-----------------------------------+----------+--------+----------+
Maintenance mode
root@www1:/var/www/netzwissen.de# sudo -u www-data wp maintenance-mode
usage:
wp maintenance-mode activate [--force] or:
wp maintenance-mode deactivate or:
wp maintenance-mode is-active or:
wp maintenance-mode status
See 'wp help maintenance-mode <command>' for more information on a specific command.
WordPress hinter einem Reverse Proxy
Für den Einsatz im Rechenzentrum wird typischerweise ein Load Balancer/Reverse Proxy benutzt, der die zentrale Umsetzung der ssl Verschlüsselung übernimmt. Vorteil: man kann mehrere Webdienste unter derselben IP Adresse betreiben, denn öffentliche IP IPv4 Adressen sind knapp und teuer.
wp-config.php Beispiel für den Einsatz mit Haproxy Funktioniert in ähnlicher Weise auch mit anderen Webservern/Reverse Proxies wie nginx, traefik, caddy usw.
/** needed because we are behind haproxy */
/* test if the https header is present coming from proxy
/* and add proper ssl setting for WP environment
/* https://wordpress.stackexchange.com/questions/387990/how-do-i-handle-ssl-properly-when-wp-is-behind-a-reverse-proxy
*/
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
/* if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'); */
$_SERVER['HTTPS']='on';
$_SERVER['SERVER_PORT']='80';
if (strpos($_SERVER['X_FORWARDED_PROTO'], 'https') !== false) {
$_SERVER['HTTPS'] = 'on';
}
/* Das war’s, Schluss mit dem Bearbeiten! Viel Spaß. */
/* That's all, stop editing! Happy publishing. */
/** Der absolute Pfad zum WordPress-Verzeichnis. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}
/** Definiert WordPress-Variablen und fügt Dateien ein. */
require_once( ABSPATH . 'wp-settings.php' );
/** raise memory limit */
define( 'WP_MEMORY_LIMIT', '128M' );
/** disable wp-cron */
define('DISABLE_WP_CRON', 'true');
/** update method */
define('FS_METHOD','direct');