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.
<?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.