HHVM (HipHop Virtual Machine) ist eine virtuelle Open-Source-Maschine zum Ausführen 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 ein 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. Als Betriebssystem werde ich CentOS 7 verwenden, daher sind Grundkenntnisse in CentOS erforderlich.
Voraussetzung
- CentOS 7 – 64 Bit
- Root-Rechte
Schritt 1 – Konfigurieren Sie SELinux und fügen Sie das Epel-Repository hinzu
In diesem Tutorial verwenden wir SELinux im Erzwingungsmodus, daher müssen die SELinux-Verwaltungstools auf dem System installiert sein. Wir werden setools und setrobleshoot verwenden, um SELinux-Richtlinien zu verwalten.
Standardmäßig ist SELinux auf CentOS 7 aktiviert. Wir können dies mit dem folgenden Befehl überprüfen:
sestatus
getenforce
Sie können sehen, dass SELinux im Erzwingungsmodus aktiviert ist.
Installieren Sie als Nächstes setools und beheben Sie die Fehlerbehebung mit dem Befehl yum.
yum -y install setroubleshoot setools net-tools
Wenn die Installation abgeschlossen ist, können Sie das EPEL-Repository installieren.
yum -y install epel-release
Schritt 2 – Nginx installieren
Nginx oder engine-x ist ein leichtgewichtiger Webserver mit hoher Leistung und geringem Speicherverbrauch. Unter CentOS können wir yum verwenden, um die Nginx-Pakete zu installieren. Stellen Sie sicher, dass Sie als Root-Benutzer angemeldet sind!
Installieren Sie nginx mit diesem yum-Befehl aus dem CentOS-Repository:
yum -y install nginx
Starten Sie nun Nginx und ermöglichen Sie es, dass es beim Booten mit dem Befehl systemctl gestartet wird:
systemctl start nginx
systemctl enable nginx
Um sicherzustellen, dass Nginx auf unserem Server ausgeführt wird, besuchen Sie die Server-IP-Adresse mit Ihrem Browser oder verwenden Sie den Curl-Befehl wie unten gezeigt, um die Ergebnisse zu erhalten:
curl 192.168.1.110
Ich werde es mit meinem Webbrowser hier überprüfen:
Schritt 3 – MariaDB installieren und konfigurieren
MariaDB ist eine Open-Source-Datenbank, die vom ursprünglichen MySQL-Entwickler Monty Widenius entwickelt wurde. Sie wurde von der MySQL-Datenbank abgezweigt, bleibt aber in ihren Hauptfunktionen mit ihr kompatibel. In diesem Schritt installieren wir MariaDB und konfigurieren das Root-Passwort für die MariaDB-Datenbank. Dann erstellen wir eine neue Datenbank und einen neuen Benutzer, die für unsere WordPress-Installation erforderlich sind.
Mariadb und mariadb-server installieren:
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 Ihr neues Passwort für den MariaDB-Root-Benutzer ein, wenn Sie dazu aufgefordert werden.
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 jetzt bei der MariaDB/MySQL-Shell an und erstellen Sie eine neue Datenbank "wordpressdb" und einen neuen Benutzer "wpuser" mit Passwort "[email protected]" für unsere WordPress-Installation. Wählen Sie ein sicheres Passwort für Ihre Installation!
Melden Sie sich bei 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 [email protected] identified by '[email protected]';
grant all privileges on wordpressdb.* to [email protected] identified by '[email protected]';
flush privileges;
\q
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 vorgefertigten 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 php-Befehl zu verwenden, können wir den hhvm-Befehl als php. Wenn Sie also in der Shell 'php' eingeben, sehen Sie das gleiche Ergebnis wie beim hhvm-Befehl.
sudo update-alternatives --install /usr/bin/php php /usr/bin/hhvm 60
php --version
Schritt 5 – HHVM konfigurieren
In diesem Schritt konfigurieren wir HHVM. Wir werden hhvm als systemd-Dienst ausführen. Anstatt es auf einem Systemport auszuführen, führen wir hhvm auf einer Unix-Socket-Datei aus, was schneller ist.
Wechseln Sie in das systemd-Verzeichnis 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.
Wechseln Sie als Nächstes in das hhvm-Verzeichnis und bearbeiten Sie die Datei server.ini.
cd /etc/hhvm/
vim server.ini
Ersetzen Sie hhvm.server.port in Zeile 7 durch die Unix-Socket-Konfiguration unten:
hhvm.server.file_socket = /var/run/hhvm/hhvm.sock
Speichern Sie die Datei und beenden Sie den Editor.
In der hhvm-Dienstdatei haben wir definiert, dass hhvm unter dem Benutzer ‚nginx‘ läuft, also müssen wir den Besitzer des Socket-Dateiverzeichnisses 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 beim Booten automatisch erstellen.
Bearbeiten Sie die Datei rc.local mit vim.
vim /etc/rc.local
Fügen Sie die Konfiguration unten bis zum 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 systemd-Dienst neu, starten Sie hhvm und fügen Sie ihn hinzu, damit er beim Booten gestartet wird.
systemctl daemon-reload
systemctl start hhvm
systemctl enable hhvm
Stellen Sie sicher, dass kein Fehler vorliegt. Überprüfen Sie mit dem Befehl netstat, ob hhvm unter der Socket-Datei ausgeführt wird.
netstat -pl | grep hhvm
Schritt 6 – HHVM und Nginx konfigurieren
In diesem Schritt konfigurieren wir HHVM für die Ausführung mit dem Nginx-Webserver. 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 Konfiguration unten 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.
Bearbeiten Sie als Nächstes die Datei nginx.conf und fügen Sie die hhvm-Konfigurations-Include-Zeile hinzu.
vim nginx.conf
Fügen Sie die Konfiguration der Serverdirektive Zeile 57 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 Sie einen virtuellen Host mit HHVM und Nginx
In diesem Schritt erstellen wir eine neue virtuelle Hostkonfiguration mit Nginx und hhvm. Ich werde den Domainnamen "natsume.co" verwenden für dieses Beispiel. 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:
cd /etc/nginx/conf.d/
Erstellen Sie die neue Konfiguration „natsume.conf“ mit vim:
vim natsume.conf
Fügen Sie die Konfiguration des virtuellen Hosts unten 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 virtuellen Hostkonfiguration haben wir das Web-Root-Verzeichnis für den Domainnamen als das Verzeichnis „/var/www/hakase“ definiert. Dieses Verzeichnis existiert noch nicht, also müssen wir es erstellen und den Besitz auf den Benutzer und die Gruppe nginx ändern.
mkdir -p /var/www/hakase
chown -R nginx:nginx /var/www/hakase
Als nächstes konfigurieren Sie 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 abschließend 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 Konfiguration des virtuellen Hosts für unsere WordPress-Installation erstellt. Jetzt müssen wir nur noch WordPress herunterladen und die Datenbankkonfiguration bearbeiten, indem wir die Datenbank und den Benutzer verwenden, die wir in Schritt 3 erstellt haben.
Wechseln Sie zum Web-Root-Verzeichnis „/var/www/hakase“ und laden Sie WordPress mit dem Befehl „wget“ herunter:
cd /var/www/hakase
wget wordpress.org/latest.tar.gz
Extrahieren Sie „latest.tar.gz“ und verschieben Sie alle WordPress-Dateien und -Verzeichnisse in das aktuelle Verzeichnis:
tar -xzvf latest.tar.gz
mv wordpress/* .
Kopieren Sie als Nächstes 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 zu "wpuser" und DB_PASSWORD zu "[email protected]" .
define('DB_NAME', 'wordpressdb'); define('DB_USER', 'wpuser'); define('DB_PASSWORD', '[email protected]'); define('DB_HOST', 'localhost');
Speichern und beenden.
Ä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, meiner ist „natsume.co“.
Wählen Sie die englische Sprache und klicken Sie auf 'Weiter '.
Füllen Sie den Seitentitel und die Beschreibung mit Ihren Informationen aus und klicken Sie auf „Wordpress installieren“.
Warten Sie, bis die Installation abgeschlossen ist. Sie sehen die folgende Seite. Klicken Sie auf „Anmelden“, um sich beim WordPress-Admin-Dashboard anzumelden:
Geben Sie Ihren Admin-Benutzer und Ihr Passwort ein und klicken Sie dann erneut auf "Anmelden".
Jetzt befinden Sie sich im WordPress-Admin-Dashboard.
WordPress-Homepage.
Wordpress mit Nginx und HHVM auf CentOS 7 wurde erfolgreich installiert.