GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Nginx + php-FPM + apc + MariaDB auf Debian 7 einrichten – Der perfekte LEMP-Server

Debian-Webserver

Debian ist eine großartige Wahl für die Einrichtung von Linux-Webservern. Laut aktuellen Statistiken ist es das beliebteste Server-Betriebssystem, dicht gefolgt von Centos.

Ich bin ein großer Fan der apt/dpkg/gdebi-Befehle, die es so einfach machen, Pakete auf dem System zu installieren und zu aktualisieren.

Um einen vollständig funktionsfähigen PHP-Webserver einzurichten, müssen Sie einige zusätzliche Dinge installieren, darunter einen Webserver und eine Datenbank. In diesem Beitrag werden wir nginx, php, php-fpm, apc und MariaDB einrichten.

Nginx ist ein moderner Webserver, der entwickelt wurde, um große Mengen an Datenverkehr mit den geringsten Ressourcen in Bezug auf RAM und CPU zu bewältigen.

Vor Nginx war Apache der traditionelle Webserver, der im gesamten Internet verwendet wurde. Als das Internet jedoch immer dichter wurde, wuchs der Bedarf an einem schnelleren und effizienteren Webserver.

Nginx vs. Apache

Apache ist von Natur aus sehr sperrig und verfügt über unzählige Funktionen, von denen die meisten für typische Websites nicht erforderlich sind. Es wurde wahrscheinlich entwickelt, um die Bedürfnisse aller zu befriedigen, aber das machte es letztendlich zu einem großen und schweren Webserver mit größtenteils ungenutzten Funktionen.

Nginx hingegen ist ein sehr schlanker und schneller Webserver, der sich ganz auf Geschwindigkeit, Skalierbarkeit und Effizienz konzentriert.

Die technischen Details dazu sind umfangreich und würden den Rahmen dieses Beitrags sprengen. Vielleicht können wir uns das später anschauen. Nur zu Ihrer Information, diese Website läuft auf nginx.

Jetzt können wir uns ohne weitere Diskussion an die Arbeit machen.

1. Installieren Sie Nginx unter Debian

Das nginx-Paket befindet sich direkt in den Debian-Repositories, sodass Sie nirgendwo anders suchen müssen. Starten Sie apt-get und installieren Sie es.

# apt-get install nginx

Starten Sie nun den Nginx-Server.

# service nginx start
Starting nginx: nginx.

Greifen Sie nun über den Browser auf den Nginx-Server zu, indem Sie die URL öffnen

http://localhost/

und Sie sollten die Willkommensnachricht erhalten

Welcome to nginx!

Wichtige Hinweise

Es gibt einige Dinge, die Sie sich merken sollten, um Ihren Nginx-Server besser zu verwalten. Die nginx-Konfigurationsdateien befinden sich an folgendem Speicherort

/etc/nginx/
[email protected]:/etc/nginx# ls
conf.d		koi-win		  naxsi.rules	scgi_params	 uwsgi_params
fastcgi_params	mime.types	  nginx.conf	sites-available  win-utf
koi-utf		naxsi_core.rules  proxy_params	sites-enabled

Wir werden die Datei nginx.conf nicht direkt ändern. Stattdessen erstellen wir für jeden Vhost/jede Site eine separate Konfigurationsdatei und speichern sie in den folgenden Verzeichnissen.

/etc/nginx/sites-available
/etc/nginx/sites-enabled

Dies ist ähnlich wie bei Apache. Das Verzeichnis „sites-enabled“ enthält die Konfigurationen für vhosts, die aktiviert werden sollen. Es enthält symbolische Links zu den entsprechenden Konfigurationsdateien im Verzeichnis „sites-available“.

Richten Sie einen virtuellen Host ein

Nachdem wir nginx installiert haben, ist es an der Zeit, einen virtuellen Host einzurichten. Dies ist, was Sie auf einem echten Webserver tun würden, um Ihre Website einzurichten.

Innerhalb von /etc/nginx/sites-available sehen Sie eine Datei namens default. Es ist eine Vorlagendatei zum Erstellen eigener Konfigurationsdateien. Kopieren Sie es einfach und benennen Sie es auf Ihrer Website.

# cp default binarytides.com
[email protected]:/etc/nginx/sites-available# ls
binarytides.com  default

Wir haben uns dafür entschieden, die Konfigurationsdateien nach dem Site-Namen zu benennen, damit sie leichter zu merken und zu pflegen sind.
Öffnen Sie jetzt binarytides.com und bearbeiten Sie die Dinge nach Bedarf.
Sie würden einen Server sehen ähnlichen Block

server {
	#listen   80; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /usr/share/nginx/www;
	index index.html index.htm;

	# Make site accessible from http://localhost/
	server_name localhost;
zugänglich machen

Das erste, was hier konfiguriert werden muss, ist server_name. Nennen Sie es Ihrer Website. Zum Beispiel

server_name binarytides.com
or
server_name binarytides.com www.binarytides.com

Wenn jemand binarytides.com in seinem Browser öffnet, enthält der http-Header diesen Hostnamen, den nginx aufnehmen und nach einem passenden Serverblock suchen würde. Wenn ein passender Serverblock gefunden wird, würde er die Konfiguration von diesem bestimmten Serverblock verwenden.

Eine weitere zu konfigurierende Sache ist das Web-Root-Verzeichnis für diese Site/diesen vhost. Beachten Sie, dass dies standardmäßig /usr/share/nginx/www ist die Sie vielleicht in etwas anderes ändern möchten.

Die allgemeine Konvention besteht darin, für jeden vhost ein separates Verzeichnis zu haben. Zum Beispiel

/usr/share/nginx/www/binarytides.com/
/usr/share/nginx/www/google.com/

Erstellen Sie also ein geeignetes Verzeichnis und verweisen Sie die Root-Einstellung in der Konfigurationsdatei auf das Verzeichnis.

...
root /usr/share/nginx/www/binarytides.com;
...

Nachdem Sie diese Änderungen vorgenommen haben, speichern Sie die Konfigurationsdatei und erstellen Sie einen symbolischen Link zum /etc/nginx/sites-enabled-Verzeichnis.

[email protected]:/etc/nginx/sites-available# ls
binarytides.com  default
[email protected]:/etc/nginx/sites-available# cd ..
[email protected]:/etc/nginx# cd sites-enabled/
[email protected]:/etc/nginx/sites-enabled# ln -s ../sites-available/binarytides.com
[email protected]:/etc/nginx/sites-enabled# ls
binarytides.com  default
[email protected]:/etc/nginx/sites-enabled#

Testen Sie nun Ihre neue Konfiguration

# nginx -t
nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Die letzte Zeile der Ausgabe muss erfolgreich lauten, sonst wird ein Fehler angezeigt. Möglicherweise werden einige Warnungen angezeigt, die später behoben werden können.

Starten Sie schließlich nginx neu, damit die neue Konfiguration wirksam wird

# service nginx restart
Restarting nginx: nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored
nginx.
[email protected]:/etc/nginx/sites-enabled#

Die neue Konfiguration ist also wirksam. Erstellen Sie nun eine neue index.html-Datei im neuen Web-Root dieses virtuellen Hosts und öffnen Sie sie im Browser, und es sollte funktionieren.

2. Installieren Sie php und php-fpm

Als nächstes müssen der php-Interpreter und php-fpm installiert werden. Php-FPM ist ein dedizierter Fastcgi-Prozessmanager für PHP, der mit jedem kompatiblen Webserver eine Schnittstelle oder Verbindung herstellen und PHP-Prozesse verwalten kann, um PHP-Anfragen zu verarbeiten.

Nginx <== communicates ==> Php-FPM <== manages ==> php child process

Installieren Sie zuerst die erforderlichen Pakete.

# apt-get install php5 php5-fpm

Die erforderlichen Abhängigkeiten werden automatisch installiert. Sie können das php5-cli-Paket auch installieren, wenn Sie den php-Befehl zum Ausführen von php-Skripten benötigen.

Php-fpm runs as a separate server and nginx communicates with it over a socket. Hence the php execution is totally outside the server. Also since fpm keeps php process persistent, it fully supports APC.

Suchen Sie nun die PHP-fpm-Konfigurationsdateien. Die Dateien befinden sich unter

/etc/php5/fpm/

Ein Pool ist eine Reihe von PHP-Prozessen, die mit demselben Benutzer / derselben Gruppe ausgeführt werden. Wenn Sie also möchten, dass die PHP-Dateien jeder Site mit einer separaten Benutzerberechtigung ausgeführt werden, müssen Sie separate FPM-Pools erstellen. Der Einfachheit halber zeigen wir hier nur einen einzelnen Pool.

Die Pool-Konfigurationsdateien befinden sich im Verzeichnis pool.d. Navigieren Sie in

[email protected]:/etc/php5/fpm/pool.d# ls
www.conf

Öffnen Sie die www.conf-Datei, die wiederum eine Vorlage ist, die Sie verwenden können, und erstellen Sie separate Konfigurationsdateien für jeden Pool.
Sie sieht ungefähr so ​​aus

; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/run/php5-fpm.sock

; Set listen(2) backlog.
; Default Value: 128 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 128

Das obige besteht hauptsächlich aus Kommentaren und die wichtigsten 4 Zeilen sind

1. [www] 
this is the pool name

2. user = www-data 
this is the user with whose permissions the php script would be run

3. group = www-data
this is the group

4. listen = /var/run/php5-fpm.sock
this is the socket for communicating with this pool. This socket must be given to nginx for nginx to be able to talk to fpm

fpm mit nginx verbinden

Hier werden wir nicht viel ändern. Notieren Sie sich einfach den Socket-Pfad. Wir müssen dies in die nginx-Konfigurationsdatei einfügen. Gehen Sie zurück zu Ihrer Nginx-Konfiguration und öffnen Sie sie erneut.

Es enthält einen Abschnitt für die PHP-fpm-Konfiguration, der so aussieht

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
#	fastcgi_split_path_info ^(.+\.php)(/.+)$;
#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
#	# With php5-cgi alone:
#	fastcgi_pass 127.0.0.1:9000;
#	# With php5-fpm:
#	fastcgi_pass unix:/var/run/php5-fpm.sock;
#	fastcgi_index index.php;
#	include fastcgi_params;
#}
ein

Kommentieren Sie es aus und lassen Sie es so aussehen

location ~ \.php$ {
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
#	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#	# With php5-cgi alone:
#	fastcgi_pass 127.0.0.1:9000;
	# With php5-fpm:
	fastcgi_pass unix:/var/run/php5-fpm.sock;
	fastcgi_index index.php;
	include fastcgi_params;
}

PHP testen

Legen Sie nun mit dem phpinfo-Aufruf eine Datei im Webroot an.

&lt;?php

phpinfo();

Und dann öffnen Sie die Datei im Browser und der PHP-Informationsblock sollte erscheinen und sagen, dass PHP eingerichtet ist und korrekt funktioniert.

Eine andere Sache, die Sie tun können, ist das Hinzufügen von index.php zur Liste der Indexdateien. Wenn also beim Zugriff auf ein Verzeichnis keine Datei angegeben wird, dann wird index.php aufgerufen.

root /usr/share/nginx/www/binarytides.com;
index index.html index.htm index.php;

Setup apc - alternativer PHP-Cache

APC ist eine großartige Möglichkeit, die Ausführung von PHP-Skripten zu beschleunigen. Apc kompiliert PHP-Code und behält den Opcode im Speicher und verwendet ihn beim nächsten Mal, ohne denselben PHP-Code erneut aus der Datei zu kompilieren. Dies beschleunigt die Ausführung drastisch. Neben dem Opcode-Cache bietet apc auch einen Benutzer-Cache, um Rohdaten für die PHP-Anwendung im Speicher zu speichern.

Php ab Version 5.5 hat eine neue Funktion namens OPcache, die dasselbe tut wie apc opcode cache, wodurch apc veraltet ist.

Die Einrichtung von apc ist sehr einfach und schnell. Installieren Sie einfach das apc-Paket für PHP

# apt-get install php-apc

Starten Sie dann php fpm neu

# service php5-fpm restart

Überprüfen Sie nun erneut die phpinfo-Seite und sie sollte auch die APC-Details enthalten. Die apc-Konfigurationsdatei befindet sich unter

/etc/php5/fpm/conf.d/20-apc.ini

Die Konfiguration kann ein wenig angepasst werden, um eine optimale Leistung für Ihre Anforderungen zu erzielen. Hier ist die Art der Konfiguration, die ich verwende

extension=apc.so
 
apc.enabled=1
apc.shm_size=128M
apc.ttl=3600
apc.user_ttl=7200
apc.gc_ttl=3600
apc.max_file_size=1M

Weitere Informationen finden Sie in der Liste der APC-Konfigurationsparameter.

3. Installieren Sie MariaDB unter Debian

Jetzt kommt die letzte und letzte Komponente des LEMP-Stacks. Das ist die MariaDB-Datenbank und nicht mysql. Nun, inzwischen sollten Sie wissen, dass MySQL in den Händen von Oracle ist und nicht mehr zu einer Community gehört. Daher haben große Korps begonnen, auf Mariadb umzusteigen. Das Gute daran ist, dass mariadb mit vielen zusätzlichen Funktionen binärkompatibel mit mysql ist. Wenn Sie also bereits mysql für Ihre PHP-Anwendungen verwenden, wäre der Wechsel zu Mariadb absolut problemlos.

MariaDB ist in debian nicht vorhanden Lagerstätten. Um die Repositories zu erhalten, besuchen Sie die folgende Seite

https://downloads.mariadb.org/mariadb/repositories/

Wählen Sie Debian als Distribution, Wheezy als Release und Version 10.0 von Mariadb. Wählen Sie dann einen Spiegel auf der rechten Seite aus. Scrollen Sie nun zum Ende der Seite, um die Repository-Details zu finden.

Hier sind die Befehle, die ich erhalten habe

sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirrors.fe.up.pt/pub/mariadb/repo/10.0/debian wheezy main'

Aktualisieren Sie nun den apt-Cache und installieren Sie die mariadb-Pakete

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

Während der Installation würde Mariadb nach dem Passwort des Benutzers root fragen. Geben Sie das Passwort ein und vergessen Sie es nicht.

Überprüfen Sie nach Abschluss der Installation Ihre Mariadb-Version

# mysql -V
mysql  Ver 15.1 Distrib 10.0.3-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1

Beachten Sie, dass der Befehlsname derselbe ist wie bei mysql. Aber der Name mariadb steht in den Versionsinformationen.

Webserver ist bereit

Jetzt ist der LEMP-Webserver also einsatzbereit. Vielleicht möchten Sie ein paar Extras wie phpmyadmin installieren, um Ihre Datenbank besser zu verwalten. Phpmyadmin befindet sich im Debian-Repository, also installieren Sie es direkt von dort aus.

Haben Sie Fragen? Fühlen Sie sich frei, unten zu kommentieren.


Debian
  1. So richten Sie einen LEMP-Server unter Debian 10 Buster ein

  2. Aktualisieren Sie den ISPConfig Perfect Server von Debian 10 auf Debian 11

  3. Das perfekte Setup - Debian Sarge (3.1)

  4. So installieren Sie LEMP (Linux, Nginx, MySQL &PHP-FPM) auf einem Debian 8 VPS

  5. So installieren Sie das soziale Netzwerk Elgg unter Debian 9

So installieren Sie Nginx, MariaDB, PHP (LEMP Stack) unter Debian 11

So installieren Sie den LEMP-Stack auf Debian 10 Buster Server/Desktop

So installieren Sie Nginx mit PHP-FPM unter Debian 11

Der perfekte Server – Debian Squeeze (Debian 6.0) mit BIND, Dovecot &Nginx [ISPConfig 3]

Der perfekte Server – Debian Wheezy (nginx, BIND, Dovecot, ISPConfig 3)

So richten Sie den Nginx-Cache auf dem LEMP-Server ein