Wie man WordPress mit HHVM und Nginx auf CentOS 7 installiert

HHVM (HipHop Virtual Machine) ist eine Open-Source-Virtualmaschine zur Ausführung von Programmen, die in PHP und Hack-Sprache geschrieben sind. HHVM wurde von Facebook entwickelt und bietet die meisten Funktionen der aktuellen PHP 7 Version. Um HHVM auf Ihrem Server auszuführen, können Sie einen FastCGI verwenden, um HHVM mit einem Nginx- oder Apache-Webserver zu verbinden, oder Sie können den in HHVM integrierten Webserver namens „Proxygen“ verwenden.

In diesem Tutorial zeige ich Ihnen, wie Sie WordPress mit HHVM und Nginx als Webserver installieren. Ich werde CentOS 7 als Betriebssystem verwenden, so dass Grundkenntnisse in CentOS erforderlich sind.

Voraussetzung

  • CentOS 7 – 64bit 64bit
  • Root-Rechte

Schritt 1 – SELinux konfigurieren und das Epel Repository hinzufügen

In diesem Tutorial werden wir SELinux im Erzwingungsmodus verwenden, daher benötigen wir die auf dem System installierten SELinux-Verwaltungstools. Wir werden setools und setrobleshoot verwenden, um SELinux-Richtlinien zu verwalten.

Standardmäßig ist SELinux auf CentOS 7 aktiviert, das können wir mit dem folgenden Befehl überprüfen:

sestatus
getenforce

SELinux prüfen

Sie können sehen, dass SELinux im Erzwingungsmodus aktiviert ist.

Als nächstes installieren Sie setools und setroubleshoot mit dem Befehl yum.

yum -y install setroubleshoot setools net-tools

Nach Abschluss der Installation können Sie das EPEL-Repository installieren.

yum -y install epel-release

Schritt 2 – Nginx installieren

Nginx oder engine-x ist ein leichter Webserver mit hoher Leistung und geringem Speicherverbrauch. Auf CentOS können wir yum verwenden, um die Nginx-Pakete zu installieren. Stelle sicher, dass du als root-Benutzer angemeldet bist!

Installiere nginx mit diesem yum-Befehl aus dem CentOS-Repository:

yum -y install nginx

Starten Sie nun Nginx und lassen Sie es beim Booten mit dem Befehl systemctl starten:

systemctl start nginx
systemctl enable nginx

Um sicherzustellen, dass Nginx auf unserem Server läuft, besuchen Sie die Server-IP-Adresse mit Ihrem Browser oder verwenden Sie den Befehl curl wie unten gezeigt, um die Ergebnisse zu erhalten:

curl 192.168.1.110

Ich werde es mit meinem Webbrowser hier überprüfen:

Nginx läuft

Schritt 3 – MariaDB installieren und konfigurieren

MariaDB ist eine Open-Source-Datenbank, die vom ursprünglichen MySQL-Entwickler Monty Widenius entwickelt wurde, sie wurde aus der MySQL-Datenbank abgeleitet, bleibt aber in ihren wichtigsten Funktionen kompatibel mit ihr. In diesem Schritt installieren wir MariaDB und konfigurieren das Root-Passwort für die MariaDB-Datenbank. Dann werden wir eine neue Datenbank und einen neuen Benutzer erstellen, die für unsere WordPress-Installation benötigt werden.

Installiere mariadb und mariadb-server:

yum -y install mariadb mariadb-server

Starten Sie MariaDB und fügen Sie den Dienst hinzu, der beim Booten automatisch gestartet werden soll:

systemctl start mariadb
systemctl enable mariadb

MariaDB wurde gestartet, und jetzt müssen wir das Root-Passwort für die mariadb/mysql-Datenbank konfigurieren. Geben Sie den folgenden Befehl ein, um das MariaDB root-Passwort einzurichten.

mysql_secure_installation

Geben Sie bei Bedarf Ihr neues Passwort für den MariaDB root-Benutzer ein.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
... Success!

Das MariaDB-Root-Passwort wurde konfiguriert. Melden Sie sich nun in der MariaDB/MySQL-Shell an und erstellen Sie eine neue Datenbank „wordpressdb“ und einen neuen Benutzer „wpuser“ mit dem Passwort „wpuser@“ für unsere WordPress-Installation. Wählen Sie ein sicheres Passwort für Ihre Installation!

Melden Sie sich in der MariaDB/MySQL-Shell an:

mysql -u root -p
TYPE YOUR PASSWORD

Erstellen Sie eine neue Datenbank und einen neuen Benutzer:

create database wordpressdb;
create user wpuser@localhost identified by 'wpuser@';
grant all privileges on wordpressdb.* to wpuser@localhost identified by 'wpuser@';
flush privileges;
\q

Datenbank für WordPress Installation auf MariaDB erstellen

MariaDB wurde installiert und die neue Datenbank für unsere WordPress-Installation erstellt.

Schritt 4 – HHVM installieren

Für die HHVM-Installation müssen wir viele Abhängigkeiten installieren. Wir können HHVM von der Quelle installieren, indem wir die Quelle von github herunterladen oder vorgefertigte Pakete installieren, die im Internet verfügbar sind. In diesem Tutorial werde ich HHVM aus vorgefertigten Paketen installieren.

Installieren Sie die Abhängigkeiten für die HHVM-Installation.

yum -y install cpp gcc-c++ cmake git psmisc {binutils,boost,jemalloc,numactl}-devel \
{ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \
lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf}-devel \
{unixODBC,expat,mariadb}-devel lib{edit,curl,xml2,xslt}-devel \
glog-devel oniguruma-devel ocaml gperf enca libjpeg-turbo-devel openssl-devel \
mariadb mariadb-server libc-client make

Installieren Sie dann die vorkonfigurierten HHVM-Pakete von dieser Seite mit dem Befehl rpm.

rpm -Uvh http://mirrors.linuxeye.com/hhvm-repo/7/x86_64/hhvm-3.15.2-1.el7.centos.x86_64.rpm
ln -s /usr/local/bin/hhvm /bin/hhvm

HHVM wurde installiert, überprüfen Sie es mit dem folgenden Befehl:

hhvm --version

Um den Befehl php zu verwenden, können wir den Befehl hhvm als php setzen. Wenn Sie also ‚php‘ auf der Shell eingeben, sehen Sie das gleiche Ergebnis wie beim Befehl hhvm.

sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
php --version

Installation von HHVM auf CentOS

Schritt 5 – HHVM konfigurieren

In diesem Schritt werden wir HHVM konfigurieren. Wir werden hhvm als systematischen Dienst ausführen. Anstatt es auf einem Systemport auszuführen, werden wir hhvm auf einer Unix-Socket-Datei ausführen, was schneller ist.

Gehen Sie in das Verzeichnis systemd und erstellen Sie die Datei hhvm.service.

cd /etc/systemd/system/
vim hhvm.service

Fügen Sie die untenstehende Dienstkonfiguration in diese Datei ein.

[Unit]
Description=HHVM HipHop Virtual Machine (FCGI)
After=network.target nginx.service mariadb.service

[Service]
ExecStart=/usr/local/bin/hhvm –config /etc/hhvm/server.ini –user nginx –mode daemon -vServer.Type=fastcgi -vServer.FileSocket=/var/run/hhvm/hhvm.sock

[Install]
WantedBy=multi-user.target

Speichern Sie die Datei und beenden Sie vim.

Gehen Sie anschließend in das Verzeichnis hhvm und bearbeiten Sie die Datei server.ini.

cd /etc/hhvm/
vim server.ini

Ersetzen Sie den Port hhvm.server.port auf Zeile 7 durch die folgende Unix-Sockelkonfiguration:

hhvm.server.file_socket = /var/run/hhvm/hhvm.sock

Speichern Sie die Datei und verlassen Sie den Editor.

In der hhvm-Servicedatei haben wir definiert, dass hhvm unter dem Benutzer’nginx‘ läuft, daher müssen wir den Besitzer des Verzeichnisses der Socket-Datei auf den Benutzer’nginx‘ ändern. Dann müssen wir den SELinux-Kontext des hhvm-Verzeichnisses ändern, um den Zugriff auf die Socket-Datei zu ermöglichen.

chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm

Nach dem Neustart des Servers wird hhvm nicht ausgeführt, da es kein Verzeichnis für die Socket-Datei gibt, also müssen wir es automatisch zum Bootzeitpunkt erstellen.

Bearbeiten Sie die Datei rc.local mit vim.

vim /etc/rc.local

Fügen Sie die Konfiguration unten an das Ende der Zeile ein.

mkdir -p /var/run/hhvm/
chown -R nginx:nginx /var/run/hhvm/
semanage fcontext -a -t httpd_var_run_t "/var/run/hhvm(/.*)?"
restorecon -Rv /var/run/hhvm

Speichern Sie die Datei und beenden Sie vim. Machen Sie die Datei ausführbar.

chmod +x /etc/rc.local

Laden Sie den Systemdienst neu, starten Sie hhvm und fügen Sie ihn hinzu, um ihn beim Booten zu starten.

systemctl daemon-reload
systemctl start hhvm
systemctl enable hhvm

Achten Sie darauf, dass kein Fehler vorliegt. Überprüfen Sie mit dem Befehl netstat, ob hhvm unter der Socket-Datei läuft.

netstat -pl | grep hhvm

Überprüfen Sie die HHVM-Socket-Datei.

Schritt 6 – Konfigurieren von HHVM und Nginx

In diesem Schritt werden wir HHVM so konfigurieren, dass es mit dem Nginx-Webserver läuft. Wir müssen eine neue hhvm-Konfigurationsdatei im Nginx-Verzeichnis erstellen.

Gehen Sie in das Verzeichnis /etc/nginx und erstellen Sie eine hhvm.conf-Datei.

cd /etc/nginx/
vim hhvm.conf

Fügen Sie die untenstehende Konfiguration ein:

location ~ \.(hh|php)$ {
    root /usr/share/nginx/html;
    fastcgi_keep_conn on;
    fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

Speichern und beenden.

Als nächstes bearbeiten Sie die Datei nginx.conf und fügen die Zeile hhvm configuration include hinzu.

vim nginx.conf

Fügen Sie die Konfiguration zur Zeile 57 der Serveranweisung hinzu.

include /etc/nginx/hhvm.conf;

Speichern und beenden.

Ändern Sie dann den SELinux-Kontext der hhvm-Konfigurationsdatei.

semanage fcontext -a -t httpd_config_t /etc/nginx/hhvm.conf
restorecon -v /etc/nginx/hhvm.conf

Testen Sie die Nginx-Konfiguration und starten Sie den Dienst neu.

nginx -t
systemctl restart nginx

Stellen Sie sicher, dass kein Fehler vorliegt.

Schritt 7 – Erstellen eines virtuellen Hosts mit HHVM und Nginx

In diesem Schritt erstellen wir eine neue virtuelle Host-Konfiguration mit Nginx und hhvm. Ich werde für dieses Beispiel den Domainnamen „natsume.co“ verwenden. Bitte verwenden Sie Ihren eigenen Domainnamen und ersetzen Sie ihn in den Konfigurationsdateien und der WordPress-Installation, wo immer er erscheint.

Gehen Sie in das Verzeichnis nginx conf.d, in dem wir die virtuelle Hostdatei speichern werden:

cd /etc/nginx/conf.d/

Erstellen Sie die neue Konfiguration „natsume.conf“ mit vim:

vim natsume.conf

Fügen Sie die untenstehende Konfiguration des virtuellen Hosts ein:

server {
    listen       80;
    server_name  natsume.co;

    # note that these lines are originally from the "location /" block
    root   /var/www/hakase;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    location = /50x.html {
        root /var/www/hakase;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Speichern und beenden.

In unserer Konfiguration des virtuellen Hosts haben wir das Web-Root-Verzeichnis für den Domänennamen als das Verzeichnis „/var/wwww/hakase definiert. Dieses Verzeichnis existiert noch nicht, also müssen wir es erstellen und den Besitzer auf den nginx-Benutzer und die Gruppe ändern.

mkdir -p /var/www/hakase
chown -R nginx:nginx /var/www/hakase

Konfigurieren Sie anschließend den SELinux-Kontext für die Datei und das Verzeichnis.

semanage fcontext -a -t httpd_config_t "/etc/nginx/conf.d(/.*)?"
restorecon -Rv /etc/nginx/conf.d

Testen Sie schließlich die nginx-Konfiguration, um sicherzustellen, dass kein Fehler vorliegt, und starten Sie dann nginx neu:

nginx -t
systemctl restart nginx

Schritt 8 – WordPress installieren

In Schritt 5 haben wir die virtuelle Host-Konfiguration für unsere WordPress-Installation erstellt. Jetzt müssen wir nur noch WordPress herunterladen und die Datenbankkonfiguration mit der Datenbank und dem Benutzer bearbeiten, die wir in Schritt 3 erstellt haben.

Gehen Sie in das Web-Root-Verzeichnis „/var/wwww/hakase“ und laden Sie WordPress mit dem Befehl wget herunter:

cd /var/www/hakase
wget wordpress.org/latest.tar.gz

Entpacken Sie „latest.tar.gz“ und verschieben Sie alle WordPress-Dateien und -Verzeichnisse in das aktuelle Verzeichnis:

tar -xzvf latest.tar.gz
mv wordpress/* .

Als nächstes kopieren Sie die Datei „wp-config-sample.php“ nach „wp-config.php“ und bearbeiten Sie sie mit vim:

cp wp-config-sample.php wp-config.php
vim wp-config.php

Setzen Sie DB_NAME auf „wordpressdb„, DB_USER auf „wpuser“ und DB_PASSWORD auf „wpuser@“.

define('DB_NAME', 'wordpressdb');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'wpuser@');
define('DB_HOST', 'localhost');

Speichern und beenden.

WordPress Konfiguration

Ändern Sie den SELinux-Kontext für das WordPress-Verzeichnis.

semanage fcontext -a -t httpd_sys_content_t "/var/www/hakase(/.*)?"
restorecon -Rv /var/www/hakase

Öffnen Sie nun einen Webbrowser und geben Sie den Domainnamen Ihrer WordPress-Domain in die Adressleiste ein, meine ist „natsume.co“.

Wählen Sie die englische Sprache und klicken Sie auf‘Weiter‚.

Wordpress Installation - Sprache auswählen

Geben Sie den Seitentitel und die Beschreibung mit Ihren Angaben ein und klicken Sie auf „WordPress installieren“.

Wordpress Installation - Konfigurieren von Admin und Site-Titel

Warten Sie, bis die Installation abgeschlossen ist. Sie werden die folgende Seite sehen, klicken Sie auf „Anmelden“, um sich in das WordPress Admin-Dashboard einzuloggen:

Wordpress Installation - Installationserfolg mit HHVM Nginx auf CentOS 7

Geben Sie Ihren Admin-Benutzer und Ihr Passwort ein und klicken Sie dann erneut auf „Anmelden“.

Anmelden am WordPress Admin Dashboard

Jetzt befinden Sie sich im WordPress Admin Dashboard.

Wordpress Admin Dashboard

WordPress Startseite.

Wordpress Home Page Default

WordPress mit Nginx und HHVM auf CentOS 7 wurde erfolgreich installiert.

Referenz

Das könnte Dich auch interessieren …