WordPress ist ein Content-Management-System (CMS), das häufig zum Erstellen von Blogs, Websites, E-Commerce-Portalen und vielem mehr verwendet wird. Es ist in PHP geschrieben und verwendet MariaDB oder MySQL als Datenbank.
WordPress unterstützt mehr als 60 Millionen Websites, darunter 33 % der Top-10-Millionen-Websites.
Hier ist das Tutorial zur Installation von WordPress mit Nginx auf CentOS 8 / RHEL 8.
LEMP-Stack installieren
Bevor Sie fortfahren, richten Sie den LEMP-Stack über den folgenden Link ein.
LEMP Stack (Nginx, MariaDB und PHP) auf CentOS 8 / RHEL 8 installieren
Installieren Sie PHP-Erweiterungen
Die folgenden Erweiterungen sind erforderlich, um WordPress auf CentOS 8 / RHEL 8 zu installieren.
yum install -y php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv php-json php-mbstring php-posix php-sockets php-tokenizer
Nginx-Serverblock für WordPress konfigurieren
Lassen Sie uns einen Serverblock für die WordPress-Installation erstellen. Konfigurationsdateien für virtuelle Hosts finden Sie im Verzeichnis /etc/nginx/conf.d.
Ich erstelle einen Serverblock für Folgendes:
Domainname: www.itzgeek.net
Port-Nr.: 80
Dokumentstamm: /sites/www.itzgeek.net/public_html
Protokolle: /sites/www.itzgeek.net/logs
Erstellen Sie zunächst eine virtuelle Hostdatei.
vi /etc/nginx/conf.d/www.itzgeek.net.conf
Platzieren Sie den folgenden Inhalt.
server { listen 80; server_name www.itzgeek.net; root /sites/www.itzgeek.net/public_html/; index index.html index.php; access_log /sites/www.itzgeek.net/logs/access.log; error_log /sites/www.itzgeek.net/logs/error.log; # Don't allow pages to be rendered in an iframe on external domains. add_header X-Frame-Options "SAMEORIGIN"; # MIME sniffing prevention add_header X-Content-Type-Options "nosniff"; # Enable cross-site scripting filter in supported browsers. add_header X-Xss-Protection "1; mode=block"; # Prevent access to hidden files location ~* /\.(?!well-known\/) { deny all; } # Prevent access to certain file extensions location ~\.(ini|log|conf)$ { deny all; } # Enable WordPress Permananent Links location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Dokumentstammverzeichnis und Protokollverzeichnis erstellen.
sudo mkdir -p /sites/www.itzgeek.net/public_html/ sudo mkdir -p /sites/www.itzgeek.net/logs/
Überprüfen Sie die Konfigurationsdateien.
nginx -t
Die folgende Ausgabe bestätigt, dass im Serverblock kein Syntaxfehler vorliegt.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Starten Sie die Dienste neu.
systemctl restart nginx systemctl restart php-fpm
Wenn beim Neustart des Nginx-Dienstes ein Fehler auftritt, deaktivieren Sie SELinux auf Ihrem Computer.
setenforce 0
Installieren Sie Let’s Encrypt SSL für WordPress (optional)
Heutzutage verwenden fast alle Websites HTTPS (SSL-Zertifikat) für Authentizität, Sicherheit und um die Benutzerkommunikation privat zu halten. Google hat die Eigentümer letztes Jahr aufgefordert, aus Sicherheitsgründen und zur Verbesserung des Rankings auf HTTPS umzustellen.
Certbot installieren
Sie müssen einen Certbot ACME-Client auf Ihrem System installieren, um Zertifikate ohne Ausfallzeiten ausstellen und installieren zu können.
Der Certbot-Client ist in Red Hat-Repositories nicht verfügbar. Daher müssen wir einen Certbot-Client von seiner offiziellen Website herunterladen.
curl -O https://dl.eff.org/certbot-auto mv certbot-auto /usr/local/bin/certbot-auto chmod 0755 /usr/local/bin/certbot-auto
DNS-Eintrag aktualisieren / ändern
Gehen Sie zu Ihrem Domain-Registrar und erstellen/aktualisieren Sie den A/CNAME-Eintrag für Ihre Domain.
Warten Sie einige Zeit, bis sich der DNS-Eintrag verbreitet hat, und fahren Sie dann mit der Installation von Let’s Encrypt SSL fort.
Installieren Sie das SSL-Zertifikat von Let’s Encrypt
Verwenden Sie den Befehl certbot, um ein Let’s Encrypt-Zertifikat zu erstellen und zu installieren.
/usr/local/bin/certbot-auto --nginx
Bei der ersten Ausführung installiert der Certbot-Client die erforderlichen RPM-Pakete zum Einrichten einer virtuellen Python-Umgebung zum Generieren von Zertifikaten.
Ausgabe:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] << Enter email id to receive notification - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A << Accept Terms of Service - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y << Subscribe to newsletter Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1 << Install SSL certificate for www.itzgeek.net Obtaining a new certificate Performing the following challenges: http-01 challenge for www.itzgeek.net Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/wordpress.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 << Redirect HTTP traffic to HTTPS site Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/wordpress.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://www.itzgeek.net You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/www.itzgeek.net/privkey.pem Your cert will expire on 2019-12-17. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Nicht-www-HTTP-Anfragen mit Nginx an www-HTTPS weiterleiten
Wir müssen den Datenverkehr, der von einer Nicht-www-HTTP-Site kommt, auf die www-HTTPS-Site umleiten. Für meine Website ist es http://itzgeek.net>> https://www.itzgeek.net .
vi /etc/nginx/conf.d/www.itzgeek.net.conf
Fügen Sie den Weiterleitungsblock unten am Ende der Datei hinzu.
# Redirect NON-WWW HTTP to WWW HTTPS server { if ($host = itzgeek.net) { return 301 https://www.itzgeek.net$request_uri; } server_name itzgeek.net; listen 80; return 404; }
Starten Sie den Nginx-Dienst neu.
systemctl restart nginx
Datenbank für WordPress erstellen
Melden Sie sich bei MariaDB an.
mysql -u root -p
Erstellen Sie die gewünschte Datenbank für die WordPress-Installation.
CREATE DATABASE wordpress;
Erstellen Sie einen Benutzer.
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppassword';
Gewähren Sie dem erstellten Benutzer die volle Berechtigung, auf die neu erstellte WordPress-Datenbank zuzugreifen.
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
Verlassen Sie die MariaDB-Shell.
exit
WordPress herunterladen
Laden Sie das neueste WordPress herunter.
curl -O https://wordpress.org/latest.tar.gz
Extrahieren Sie es.
tar -zxvf latest.tar.gz
Verschieben Sie es in unser Dokumentenstammverzeichnis.
mv wordpress/* /sites/www.itzgeek.net/public_html/
Kopieren Sie die Datei wp-sample-config.php und machen Sie sie zur Datei wp-config.php.
cp /sites/www.itzgeek.net/public_html/wp-config-sample.php /sites/www.itzgeek.net/public_html/wp-config.php
Bearbeiten Sie die Konfigurationsdatei und aktualisieren Sie die Datenbankinformationen.
vi /sites/www.itzgeek.net/public_html/wp-config.php
Einträge entsprechend der erstellten Datenbank, dem Benutzer und dem Passwort ändern.
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', 'wordpress' ); /** MySQL database username */ define( 'DB_USER', 'wpuser' ); /** MySQL database password */ define( 'DB_PASSWORD', 'wppassword' ); /** MySQL hostname */ define( 'DB_HOST', 'localhost' );
Machen Sie Nginx-Benutzer zum Eigentümer des WordPress-Verzeichnisses.
chown -R apache:apache /sites/www.itzgeek.net/public_html/
WordPress installieren
Öffnen Sie Ihren Browser und besuchen Sie
http://ihre-website-urlWählen Sie eine Sprache für Ihre WordPress-Installation.
Geben Sie Ihre Site-Informationen ein und klicken Sie auf WordPress installieren.
Sie sehen die nächste Seite, wie unten.
Wenn Sie auf „Anmelden“ klicken, werden Sie aufgefordert, das Passwort für den Zugriff auf den WordPress-Administrator einzugeben.
WordPress-Admin-Dashboard:
WordPress-Frontend:
Wenige zusätzliche Konfigurationen
Konfigurieren Sie den Upload der maximalen Dateigröße für WordPress
Standardmäßig erlaubt PHP keine Datei-Uploads über 2 MB. Um das Hochladen größerer Dateien zuzulassen, konfigurieren Sie die Einstellung upload_max_filesize in php.ini.
vi /etc/php.ini
Ändern Sie die Größe des Datei-Uploads gemäß Ihren Anforderungen
; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 256M
Starten Sie den php-fpm-Dienst neu.
systemctl restart php-fpm
Setzen Sie client_max_body_size auf Nginx für WordPress
Sie erhalten möglicherweise die folgende Fehlermeldung, selbst wenn Sie die maximale Upload-Dateigröße im vorherigen Schritt geändert haben.
2019/09/18 03:37:17 [error] 11773#11773: *121 client intended to send too large body: 9872781 bytes, client: 49.207.143.143, server: www.itzgeek.net, request: "POST /wp-admin/update.php?action=upload-theme HTTP/1.1", host: "www.itzgeek.net", referrer: "https://www.itzgeek.net/wp-admin/theme-install.php?browse=featured"
Fügen Sie das Kernmodul client_max_body_size in der Nginx-Konfigurationsdatei hinzu.
vi /etc/nginx/nginx.conf
Die Anweisung kann dem http-Block (für alle Sites), einem bestimmten Serverblock oder im Standortkontext hinzugefügt werden.
Hier füge ich die Direktive zum http-Block hinzu, der den Wert für alle Sites festlegt, die auf diesem Server laufen.
http { .... client_max_body_size 256M; .... }
Außerdem müssen wir den Wert von post_max_size in der Datei php.ini ändern.
vi /etc/php.ini
Ändern Sie die Upload-Größe gemäß Ihren Anforderungen.
post_max_size = 256M
Starten Sie die Dienste neu.
systemctl restart php-fpm systemctl restart nginx
Schlussfolgerung
Das ist alles. Ich hoffe, Sie können jetzt Ihr WordPress mit Nginx auf CentOS 8 / RHEL 8 ausführen. Bitte teilen Sie uns Ihr Feedback im Kommentarbereich mit.