CentOS 7 – NGINX aus dem NGINX-Repository installieren

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.

Nginx Standard-Seite

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.