Úvod
Laravel je framework pro webové aplikace, který přichází s sadou vestavěných nástrojů a prostředků pro vývoj moderních PHP aplikací. Je známý svou spolehlivostí, výkonem, efektivitou, modularitou a bezpečností. Díky svým rozmanitým vestavěným funkcím zaznamenal Laravel neuvěřitelný nárůst popularity. Mnoho vývojářů přijímá Laravel, aby zefektivnili proces vývoje webu.
Tento návod ukáže, jak nainstalovat a nakonfigurovat novou aplikaci Laravel na Ubuntu 20.04.
Laravel na Ubuntu
Použijeme Composer, správce závislostí pro PHP, ke stažení a správě Laravelu. Chcete-li nainstalovat Composer, postupujte podle pokynů v tomto návodu. The Nginx server bude obsluhovat aplikaci. Vytvoří ukázkovou aplikaci Laravel s využitím MySQL databáze.
Tento návod vyžaduje splnění několika předpokladů. Předpokládáme, že již máte správně nakonfigurovaný a spuštěný server Ubuntu 20.04. Pro referenci je zde rychlý návod na nastavení serveru Ubuntu. Je také vyžadováno mít nainstalovaný LEMP stack (Linux, Nginx, MySQL a PHP). Máme podrobný návod na instalaci a konfiguraci LEMP stacku.
Because we’re going to install various packages, it requires root permission. In the case of Ubuntu, the root user is disabled by default. So, we need access to a non-root user with sudo privilege. Here’s jak udělit oprávnění sudo ostatním uživatelům.
Krok 1 – Instalace PHP modulů
Před instalací Laravelu potřebujeme pro tento framework některé důležité PHP moduly. Tyto moduly jsou přímo dostupné z výchozích balíčkových repozitářů Ubuntu. Tyto moduly podporují funkce jako kódování znaků, XML a přesnou matematiku.
First, update the APT cache and install the packages:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Krok 2 – Vytvoření databáze pro aplikaci
To demonstrate the functionality of Laravel, we will make a travel list application that shows the list of places the user would like to visit, and a list of places that are already visited. We can store this data in a table place with fields name (location name) and visited (marking as visited nebo nonvisited). An additional field will feature a unique identity for each entry. To connect the data with our Laravel application, we will create a dedicated MySQL user, and grant the user full permission over the database travellist.
The native MySQL PHP library mysqlnd no longer supports caching_sha2_authentication. Thus, we need to set our database with the authentication method mysql_native_password. Access the MySQL shell as the root:
|
1 |
$ sudo mysql |
Next, create a new database named travellist:
|
1 |
> CREATE DATABASE travellist; |
After that, create a dedicated user travellist_user with a suitable password:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Give the user travellist_user full permission over the database travellist. It will also prevent the user from creating and modifying any other database on the server:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
Opusťte MySQL shell:
|
1 |
> exit |
Let’s put the new user to the test. The following command will log in to the MySQL shell as the user travellist_user. The flag -p will prompt for the user password:
|
1 |
$ mysql -u travellist_user -p |
Print all the available databases. As configured earlier, it should show travellist and information_schema only:
|
1 |
> SHOW DATABASES; |
Next, we need to create the data table places. Run the following MySQL statement:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Naplňme tabulku několika ukázkovými daty:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
> INSERT INTO travellist.places (name, visited) VALUES ("Tokyo", false), ("Delhi", true), ("Shanghai", false), ("Moscow", true), ("Lisbon", true), ("Denver", false), ("Berlin", false), ("Istanbul", false), ("Rio", true), ("Beijing", false), ("Helsinki", false); |
Podívejme se, zda byla data úspěšně uložena do databáze:
|
1 |
> SELECT * FROM travellist.places; |
Jak vidíme, testovací tabulka je naplněna platnými daty. Nyní můžeme MySQL shell opustit:
|
1 |
> exit |
Krok 3 – Vytvoření nové aplikace Laravel
We are now ready to create a new Laravel application using Composer. We’ll use travellist as a demo application. This application will display the location list from the MySQL database, demonstrating the basic configuration of Laravel. Go to the user’s home directory:
|
1 |
$ cd ~ |
The next step is to create a new Laravel application using Composer. It will create a dedicated directory travellist with a barebones Laravel application with default settings. Run the following command:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Jakmile je aplikace vytvořena, můžeme ověřit, zda byly všechny komponenty úspěšně nainstalovány:
|
1 2 |
$ cd travellist $ php artisan |
Výstup potvrzuje, že všechny soubory aplikace jsou na svém místě. Ujišťuje také, že všechny nástroje příkazové řádky Laravel jsou funkční. Vyžaduje to však ještě konfiguraci aplikace pro nastavení databáze a několik dalších úprav.
Krok 4 – Konfigurace Laravelu
All the Laravel configuration files are stored within a directory named config within the root app directory. In addition, when installing Laravel with Composer, it also creates an environment file. It contains various settings specific to the current environment. Values declared within it will take precedence over the values set in regular configuration files at config.
Každá jedinečná instalace bude vyžadovat vlastní soubor prostředí pro definování hodnot, jako je nastavení připojení k databázi, URL aplikace, možnosti ladění atd. Upozorňujeme, že soubor prostředí obsahuje citlivé informace, jako jsou přihlašovací údaje k databázi, bezpečnostní klíče atd. Proto se důrazně doporučuje tento soubor nikdy veřejně nesdílet.
Otevřete soubor prostředí v textovém editoru:
|
1 |
$ nano .env |
Zde je ukázkový kód prostředí:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
APP_NAME=TravelList APP_ENV=development APP_KEY=<unique_app_key> APP_DEBUG=true APP_URL=http://<domain_or_ip> LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password123 |
Pojďme si rozebrat jednotlivé hodnoty:
APP_NAME: This field describes the name of the application. This name will be used for notifications and messages.APP_ENV: The current environment of the application.APP_KEY: This key is generated automatically when installing Laravel through Composer. It is used to generate salts and hashes. No need to change it.APP_DEBUG: Debug mode toggle. When turned on, it will show debug info on the client-side.APP_URL: App base URL. It’s also used for generating application links.DB_DATABASE: The name of the database. In this case, it will be the dedicated database we created.DB_USERNAME: The username to connect to the database.DB_PASSWORD: The password to connect to the database.
Jakmile provedete změny, soubor uložte a zavřete editor.
Krok 5 – Nastavení Nginx
Úspěšně jsme nainstalovali Laravel do lokální složky domovského adresáře uživatele. Tato konfigurace funguje dobře pro lokální vývojové prostředí. Nedoporučuje se ji však implementovat pro webové servery, které jsou přístupné z veřejného internetu.
Our next step is to move the application to /var/www as it’s the usual location for web apps running on Nginx. Use the mv command to move travellist to /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Next, assign the user write access to the storage and cache folders. These are the locations of Laravel app-generated files:
|
1 2 |
$ sudo chown -R www-data.www-data /var/www/travellist/storage $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache |
Soubory aplikace jsou nyní na svém místě. Musíme však říct Nginxu, aby tento obsah poskytoval. Vytvořte nový konfigurační soubor virtuálního hostitele:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Zde je ukázka doporučených nastavení pro aplikaci Laravel běžící na Nginxu:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name <domain_or_ip>; root /var/www/travellist/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } |
Time to activate the new virtual host configuration file. Create a symbolic link to sites-enabled directory:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
Následující příkaz Nginx otestuje konfigurační soubory na syntaktické chyby:
|
1 |
$ sudo nginx -t |
Poté znovu načtěte Nginx:
|
1 |
$ sudo systemctl reload nginx |
The application should now be available using the domain name or IP address (as defined by the server_name directive):
Krok 6 – Přizpůsobení hlavní stránky
With the Laravel application configured, we can now start working on it. For demonstration, it’s time we created a sample page showcasing the sample data from the database table places. First, open the main route file in a text editor:
|
1 |
$ nano routes/web.php |
The file will contain some content by default. Here, routes are defined using the static method (Route::get). It receives a cesta a zpětné volání funkce jako argumenty.
Nahraďte kód následujícím:
|
1 2 3 4 5 6 7 |
<?php use Illuminate\Support\Facades\DB; Route::get('/', function () { $visited = DB::select('select * from places where visited = ?', [1]); $togo = DB::select('select * from places where visited = ?', [0]); return view('travellist', ['visited' => $visited, 'togo' => $togo ] ); }); |
Save the file and close the editor. Next, we’ll create the layout to render the database query results to the user. Create a new file within resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
In the following code, we’ve created two lists of places depending on the value of visited and togo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<html> <head> <title>Travel List</title> </head> <body> <h1>My Travel Bucket List</h1> <h2>Places to visit</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Already visited</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Uložte soubor a zavřete editor. Nyní znovu přejděte na stránku webové aplikace:
Voila! Nyní máme funkční aplikaci Laravel, která pro obsah využívá databázi MySQL.
Závěrečné myšlenky
V tomto návodu jsme si ukázali, jak nastavit aplikaci Laravel na stacku LEMP běžícím na serveru Ubuntu 20.04. Také jsme předvedli, jak přizpůsobit výchozí routu pro dotazování na obsah databáze a zobrazení výsledků ve vlastním zobrazení. Další informace o frameworku Laravel naleznete v oficiální dokumentaci k pohledům, routám, a podpoře databází.
Instalace v tomto návodu se provádí na samostatném virtuálním stroji. Můžete však také nasadit Laravel na LEMP stacky v Dockeru.
Příjemnou práci!









Komentáře
Zatím žádné komentáře. Buďte první.