NGINX ist ein leistungsfähiger Webserver und Reverse Proxy, der sogar als E-Mail-Proxy verwendet werden kann. Nginx wird aufgrund seiner Robustheit und seiner Effizienz immer beliebter und kommt auf immer mehr Systeme zum Einsatz. Die Konfigurationssyntax unterscheidet sich sehr stark vom Apache Webservers ist aber genau so einfach zu erlernen.
Installation NGINX unter CentOS 7
Zuerst binden wir das NGINX-Repository ein. So haben wir immer die aktuelle Version direkt vom NGINX-Projekt.
yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Geladene Plugins: fastestmirror nginx-release-centos-7-0.el7.ngx.noarch.rpm | 4.6 kB 00:00:00 /var/tmp/yum-root-gmzmqN/nginx-release-centos-7-0.el7.ngx.noarch.rpm wird untersucht: nginx-release-centos-7-0.el7.ngx.noarch /var/tmp/yum-root-gmzmqN/nginx-release-centos-7-0.el7.ngx.noarch.rpm wird zum Installieren markiert Abhängigkeiten werden aufgelöst --> Transaktionsprüfung wird ausgeführt ---> Paket nginx-release-centos.noarch 0:7-0.el7.ngx markiert, um installiert zu werden --> Abhängigkeitsauflösung beendet Abhängigkeiten aufgelöst ================================================================================================ Package Arch Version Paketquelle Größe ================================================================================================ Installieren: nginx-release-centos noarch 7-0.el7.ngx /nginx-release-centos-7-0.el7.ngx.noarch 1.5 k Transaktionsübersicht ================================================================================================ Installieren 1 Paket Gesamtgröße: 1.5 k Installationsgröße: 1.5 k Is this ok [y/d/N]:Y ...
Nun kontrollieren wir ob das NGINX-Repo erfolgreich eingebunden wurde und NGINX aus diesem installiert werden kann.
yum info nginx
Es sollte dann folgende Ausgabe erscheinen.
Geladene Plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.eu.oneandone.net * epel: mirrors.n-ix.net * extras: centos.mirrors.as250.net * updates: centos.mirrors.as250.net Verfügbare Pakete Name : nginx Architektur : x86_64 Epoche :1 Version : 1.6.2 Ausgabe : 1.el7.ngx Größe : 353 k Quelle : nginx/x86_64 Zusammenfassung: High performance web server URL : http://nginx.org/ Lizenz : 2-clause BSD-like license Beschreibung: nginx [engine x] is an HTTP and reverse proxy server, as well as : a mail proxy server.
Wichtig ist hier der Punkt Quelle. Falls wir das EPEL-Repository eingebunden haben und bei Quelle EPEL erscheint müssen wir im EPEL-Repository NGINX verbieten. Das geschieht wie folgt.
vi /etc/yum.repos.d/epel.repo
In diesem File ergänzen wir die Zeile „exclude=nginx*„.
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 ### blacklist NGINX in EPEL ### exclude=nginx* [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug ...
Anschliessend kontrollieren wir nochmals ob die Quelle stimmt. Wenn das der Fall ist können wir NGINX installieren.
yum install nginx
Wir nun fügen wir NGINX noch dem Systemstart hinzu und starten den Dienst.
systemctl enable nginx.service systemctl start nginx.service
Beim Aufruf der Server-IP oder des FQDNs sollten wir nun die Standard-Seite vom NGINX sehen.
Die Konfigurationsdateien für NGINX finden wir unter /etc/nginx/. Für verschiedne Szenarien werden ich zukünftig weitere Tutorials veröffentlichen.
Einrichten der Firewall
Falls der Dienst firewalld läuft müssen dessen Firewall-Regeln noch konfiguriert werden. Dies geschieht so:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --reload
Fazit
Nginx ist ein schmaler äußerst leistungsstarker Webserver. Durch seinen relativ geringen Ressourcenverbrauch ist dieser auch für kleine Systeme z.B. raspberry pi sehr empfehlenswert. Die Installation und Konfiguration ist relativ simpel.
Eine umfassende Dokumentation gibt es auf der Projekt-Webseite von NGINX.
Probleme
Scheinbar gibt es einen kleinen Bug der folgende Fehlermeldung produziert:
-- Unit nginx.service has begun starting up. Dez 17 12:43:50 tutorial.der-linux-admin.de nginx[2703]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok Dez 17 12:43:50 tutorial.der-linux-admin.de nginx[2703]: nginx: configuration file /etc/nginx/nginx.conf test is successful Dez 17 12:43:50 tutorial.der-linux-admin.de systemd[1]: PID file /run/nginx.pid not readable (yet?) after start. Dez 17 12:44:05 tutorial.der-linux-admin.de sshd[2707]: Accepted publickey for root from 192.168.66.56 port 44596 ssh2: RSA Dez 17 12:44:05 tutorial.der-linux-admin.de systemd[1]: Starting Session c13 of user root. -- Subject: Unit session-c13.scope has begun with start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel --
Kurios ist dabei folgende Zeile.
PID file /run/nginx.pid not readable (yet?) after start.
Das PID-File sollte eigentlich unter /var/run/nginx.pid abgelegt werden.
Das Problem lässt sich ganz einfach lösen indem wir die Datei /usr/lib/systemd/system/nginx.service editieren.
vi /usr/lib/systemd/system/nginx.service
Dort beheben wir den Fehler in dem wir die Pfad in der Zeile „PIDFile=/var/run/nginx.pid“ korrigieren.
[Unit] Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/ After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target systemctl daemon-reload
Das Problem wir vermutlich früher oder später behoben sein.
5 Kommentare