So installieren Sie Laravel mit einem Nginx-Webserver unter Ubuntu 14.04

Einführung

Laravel ist ein modernes Open-Source-PHP-Framework für Webentwickler. Es soll Entwicklern eine einfache und elegante Möglichkeit bieten, eine voll funktionsfähige Webanwendung schnell zum Laufen zu bringen.

In diesem Handbuch wird die Installation von Laravel unter Ubuntu 14.04 erläutert. Wir werden Nginx als unseren Webserver verwenden und zum Zeitpunkt dieses Schreibens mit der neuesten Version von Laravel, Version 4.2, arbeiten.

Installieren Sie die Backend-Komponenten

Das erste, was wir tun müssen, um mit Laravel zu beginnen, ist den Stack zu installieren, der es unterstützt. Wir können dies über Ubuntus Standard-Repositorys tun.

Zuerst müssen wir unseren lokalen Paketindex aktualisieren, um sicherzustellen, dass wir eine neue Liste der verfügbaren Pakete haben. Dann können wir die notwendigen Komponenten installieren:

sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git

Dies installiert Nginx als unseren Webserver zusammen mit den PHP-Tools, die benötigt werden, um den Laravel-Code tatsächlich auszuführen. Wir installieren auchgit, da das Toolcomposer, der Abhängigkeitsmanager für PHP, mit dem wir Laravel installieren, es zum Abrufen von Paketen verwendet.

Ändern Sie die PHP-Konfiguration

Nachdem wir unsere Komponenten installiert haben, können wir sie konfigurieren. Wir werden mit PHP beginnen, was ziemlich einfach ist.

Als erstes müssen wir die Haupt-PHP-Konfigurationsdatei für den von Nginx verwendeten PHP-fpm-Prozessor öffnen. Öffnen Sie dies mit sudo-Berechtigungen in Ihrem Texteditor:

sudo nano /etc/php5/fpm/php.ini

Wir müssen nur einen Wert in dieser Datei ändern. Suchen Sie nach dem Parametercgi.fix_pathinfo. Dies wird auskommentiert und auf „1“ gesetzt. Wir müssen dies auskommentieren und auf "0" setzen:

cgi.fix_pathinfo=0

Dies weist PHP an, nicht zu versuchen, ein ähnlich benanntes Skript auszuführen, wenn der angeforderte Dateiname nicht gefunden wird. Dies ist sehr wichtig, da ein Angreifer durch das Zulassen dieses Verhaltens eine speziell entwickelte Anforderung erstellen kann, mit der versucht wird, PHP zur Ausführung von Code zu verleiten, der nicht ausgeführt werden sollte.

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Der letzte Teil der PHP-Administration, den wir ausführen müssen, ist die explizite Aktivierung der MCrypt-Erweiterung, von der Laravel abhängig ist. Wir können dies tun, indem wir den Befehlphp5enmod verwenden, mit dem wir optionale Module einfach aktivieren können:

sudo php5enmod mcrypt

Jetzt können wir den Dienstphp5-fpmneu starten, um die vorgenommenen Änderungen zu implementieren:

sudo service php5-fpm restart

Unser PHP ist jetzt vollständig konfiguriert und wir können weitermachen.

Konfigurieren Sie Nginx und das Web Root

Der nächste Punkt, den wir ansprechen sollten, ist der Webserver. Dies beinhaltet tatsächlich zwei unterschiedliche Schritte.

Der erste Schritt ist die Konfiguration des Dokumentenstamms und der Verzeichnisstruktur, in denen die Laravel-Dateien gespeichert werden. Wir werden unsere Dateien in einem Verzeichnis namens/var/www/laravel ablegen.

Zu diesem Zeitpunkt wird nur die oberste Ebene dieses Pfads (/var) erstellt. Wir können den gesamten Pfad in einem Schritt erstellen, indem wir das Flag-pan unseren Befehlmkdirübergeben. Dadurch wird das Dienstprogramm angewiesen, alle erforderlichen übergeordneten Pfadelemente zu erstellen, die zum Erstellen eines bestimmten Pfads erforderlich sind:

sudo mkdir -p /var/www/laravel

Nachdem wir einen Speicherort für die Laravel-Komponenten festgelegt haben, können wir mit der Bearbeitung der Nginx-Serverblöcke fortfahren.

Öffnen Sie die Standard-Serverblockkonfigurationsdatei mit sudo-Berechtigungen:

sudo nano /etc/nginx/sites-available/default

Nach der Installation enthält diese Datei einige erläuternde Kommentare, aber die Grundstruktur sieht folgendermaßen aus:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

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

        server_name localhost;

        location / {
                try_files $uri $uri/ =404;
        }
}

Dies ist eine gute Grundlage für die Änderungen, die wir vornehmen werden.

Das erste, was wir ändern müssen, ist der Speicherort des Dokumentenstamms. Laravel wird in dem von uns erstellten Verzeichnis/var/www/laravelinstalliert.

Die Basisdateien, die zum Ausführen der App verwendet werden, werden jedoch in einem Unterverzeichnis innerhalb diesespublic gespeichert. Hier legen wir unseren Dokumentenstamm fest. Darüber hinaus werden wir Nginx anweisen, alleindex.php-Dateien bereitzustellen, bevor nach ihren HTML-Gegenstücken gesucht wird, wenn ein Verzeichnisspeicherort angefordert wird:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/laravel/public;
    index index.php index.html index.htm;

    server_name localhost;

    location / {
            try_files $uri $uri/ =404;
    }
}

Als nächstes sollten wir die Direktiveserver_nameo setzen, dass sie auf den tatsächlichen Domänennamen unseres Servers verweist. Wenn Sie keinen Domainnamen haben, können Sie die IP-Adresse Ihres Servers verwenden.

Wir müssen auch die Art und Weise ändern, wie Nginx Anfragen behandelt. Dies erfolgt über die Direktivetry_files. Wir möchten, dass es zuerst versucht, die Anfrage als Datei zu liefern. Wenn keine Datei mit dem richtigen Namen gefunden wird, sollte versucht werden, die Standardindexdatei für ein Verzeichnis bereitzustellen, das der Anforderung entspricht. Andernfalls sollte die Anforderung als Abfrageparameter an die Dateiindex.phpübergeben werden.

Die oben beschriebenen Änderungen können folgendermaßen implementiert werden:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /var/www/laravel/public;
        index index.php index.html index.htm;

        server_name server_domain_or_IP;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }
}

Schließlich müssen wir einen Block erstellen, der die tatsächliche Ausführung von PHP-Dateien übernimmt. Dies gilt für alle Dateien, die mit.php enden. Es wird versucht, die Datei selbst zu erstellen und sie dann als Parameter an die Dateiindex.phpzu übergeben.

Wir werden die Direktiven vonfastcgi_*o festlegen, dass der Pfad der Anforderungen für die Ausführung korrekt aufgeteilt wird, und sicherstellen, dass Nginx den Socket verwendet, denphp5-fpm für die Kommunikation verwendet, und dass die Dateiindex.php ist wird als Index für diese Operationen verwendet.

Wir werden dann den ParameterSCRIPT_FILENAME einstellen, damit PHP die angeforderten Dateien korrekt finden kann. Wenn wir fertig sind, sollte die fertige Datei so aussehen:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/laravel/public;
    index index.php index.html index.htm;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Da wir die Server-Blockdatei vondefaultgeändert haben, die bereits aktiviert ist, müssen wir Nginx einfach neu starten, damit unsere Konfigurationsänderungen übernommen werden:

sudo service nginx restart

Auslagerungsdatei erstellen (optional)

Bevor wir mit der Installation von Composer und Laravel beginnen, ist es möglicherweise eine gute Idee, einen Swap auf Ihrem Server zu aktivieren, damit der Build korrekt abgeschlossen wird. Dies ist in der Regel nur erforderlich, wenn Sie auf einem Server ohne viel Arbeitsspeicher (z. B. einem 512-MB-Droplet) arbeiten.

Swap Space ermöglicht es dem Betriebssystem, Daten vorübergehend aus dem Speicher auf die Festplatte zu verschieben, wenn die Menge der Informationen im Speicher den verfügbaren physischen Speicherplatz überschreitet. Dadurch wird verhindert, dass Ihre Anwendungen oder Ihr System bei speicherintensiven Aufgaben mit einer OOM-Ausnahme abstürzen.

Wir können sehr einfach einen Swap-Bereich einrichten, damit unser Betriebssystem einen Teil davon bei Bedarf auf die Festplatte mischen kann. Wie oben erwähnt, ist dies wahrscheinlich nur erforderlich, wenn weniger als 1 GB RAM verfügbar sind.

Zuerst können wir eine leere 1GB-Datei erstellen, indem wir Folgendes eingeben:

sudo fallocate -l 1G /swapfile

Wir können es als Swap Space formatieren, indem wir Folgendes eingeben:

sudo mkswap /swapfile

Schließlich können wir diesen Bereich aktivieren, damit der Kernel ihn verwendet, indem wir Folgendes eingeben:

sudo swapon /swapfile

Das System verwendet diesen Speicherplatz nur bis zum nächsten Neustart. Es ist jedoch wahrscheinlich, dass der Server den verfügbaren Speicher während des Erstellungsprozesses überschreitet. Dies sollte also kein Problem darstellen.

Installieren Sie Composer und Laravel

Jetzt können wir endlich Composer und Laravel installieren. Wir werden zuerst Composer einrichten. Wir werden dann dieses Tool verwenden, um die Laravel-Installation zu handhaben.

Wechseln Sie in ein Verzeichnis, auf das Sie Schreibzugriff haben (z. B. in Ihr Basisverzeichnis), und laden Sie das Installationsskript aus dem Composer-Projekt herunter, und führen Sie es aus:

cd ~
curl -sS https://getcomposer.org/installer | php

Dadurch wird eine Datei mit dem Namencomposer.phar in Ihrem Home-Verzeichnis erstellt. Dies ist ein PHP-Archiv, das über die Befehlszeile ausgeführt werden kann.

Wir möchten es jedoch an einem global zugänglichen Ort installieren. Außerdem möchten wir den Namen incomposer ändern (ohne die Dateierweiterung). Wir können dies in einem Schritt tun, indem wir Folgendes eingeben:

sudo mv composer.phar /usr/local/bin/composer

Nachdem Sie Composer installiert haben, können wir Laravel damit installieren.

Denken Sie daran, wir möchten Laravel im Verzeichnis/var/www/laravelinstallieren. Um die neueste Version von Laravel zu installieren, können Sie Folgendes eingeben:

sudo composer create-project laravel/laravel /var/www/laravel

Zum Zeitpunkt dieses Schreibens ist die neueste Version 4.2. Falls zukünftige Änderungen am Projekt verhindern, dass dieser Installationsvorgang ordnungsgemäß abgeschlossen wird, können Sie die in diesem Handbuch verwendete Version erzwingen, indem Sie Folgendes eingeben:

sudo composer create-project laravel/laravel /var/www/laravel 4.2

Jetzt sind alle Dateien in unserem Verzeichnis/var/www/laravelinstalliert, aber sie gehören vollständig unserem Kontoroot. Der Webbenutzer benötigt teilweise Eigentumsrechte und Berechtigungen, um den Inhalt korrekt bereitzustellen.

Wir können der Webgruppe den Besitz einer Gruppe für unsere Laravel-Verzeichnisstruktur geben, indem wir Folgendes eingeben:

sudo chown -R :www-data /var/www/laravel

Als Nächstes können wir die Berechtigungen des Verzeichnisses/var/www/laravel/app/storageändern, um der Webgruppe Schreibberechtigungen zu ermöglichen. Dies ist erforderlich, damit die Anwendung ordnungsgemäß funktioniert:

sudo chmod -R 775 /var/www/laravel/app/storage

Sie haben Laravel jetzt vollständig installiert und können loslegen. Sie können die Standard-Zielseite anzeigen, indem Sie die Domain oder IP-Adresse Ihres Servers in Ihrem Webbrowser aufrufen:

http://server_domain_or_IP

Laravel default landing page

Sie haben jetzt alles, was Sie zum Erstellen von Anwendungen mit dem Laravel-Framework benötigen.

Fazit

Jetzt sollte Laravel auf Ihrem Server laufen. Laravel ist ein recht flexibles Framework und enthält viele Tools, mit denen Sie eine Anwendung strukturiert erstellen können.

Um zu erfahren, wie Sie mit Laravel eine Anwendung erstellen, lesen Sie dieLaravel documentation.