Введение
В этой публикации я разберу как развернуть Laravel-приложение на сервере под операционной системой Ubuntu Linux 20.04.
Laravel — это общедоступный PHP-фреймворк, который был разработан еще в 2011 году. Используется для создания многоуровневых Web-ресурсов и приложений.
Он оперативно поддерживает функциональное тестирование при создании ПО, и можно не использовать другие инструменты тестирования ПО. Легкая масштабируемость проектов на фреймворке Laravel.
Фреймворк обеспечивает простую, но быструю и доступную систему авторизации и сразу дает права доступа к вашим файлам. Что позволяет нам, сделать ограничение на доступ неавторизованных пользователей. Обеспечение защиту приложений, код фреймворка защищен от таких угроз как SQL-инъекций или межсайтовых подделок запросов.
Laravel предоставляет простой и гибкий подход к разработке веб-приложений. Он поставляется с мощными функциями и инструментами, которые позволяют разработчикам быстро и легко создавать и обслуживать веб-приложения. Также для продвинутых разработчиков есть возможность использовать шаблоны и модули для более эффективного проектирования и разработки приложений. Кроме того, Laravel поддерживает много популярных баз данных, таких как MySQL, Postgres, SQLite и MS SQL, что делает его более пригодным для разработки приложений с различными базами данных. У него есть встроенные механизмы для безопасности и аутентификации, ко всему перечисленному он имеет мощные инструменты для мониторинга приложений. Все это делает Laravel очень привлекательным для разработки веб-приложений.
Nginx поддерживает следующие уникальные фишки:
- Управление производительностью: Nginx предоставляет много инструментов для настройки производительности сервера, включая возможность масштабирования и контроля нагрузки.
- Поддержка большого количества протоколов: Nginx поддерживает широкий спектр протоколов, включая HTTP, HTTPS, FTP, SMTP и многие другие.
- Управление кешированием: Nginx позволяет настраивать кеширование, чтобы улучшить производительность и повысить скорость отклика.
- Поддержка распределенных приложений: Nginx поддерживает распределенные приложения, позволяя распределять нагрузку между несколькими серверами.
- Поддержка виртуального хостинга: Nginx позволяет делать виртуальный хостинг, что позволяет запускать несколько веб-сайтов на одном сервере.
Требования к системе
- Сервер на операционной системе Linux Ubuntu;
- Обновленные пакеты системы и приложений;
- Установленный Web-сервер Nginx, «БД» MySQL, PHP и Composer.
Начало работы
Обновляем пакеты.
sudo apt update
Устанавливаем нужные пакеты модулей PHP.
sudo apt install php-mbstring php-xml php-bcmath
Создание БД
Чтобы показать основное предназначение фреймворка, создадим таблицу «city list», где я внес лист популярных городов.
Заходим в консоль MySQL из под root`a базы данных.
sudo mysql
Создал новую «БД».
Создал пользователя и выдал все права для созданной «БД».
Выдал все права для «БД» пользователю, затем вышел из «БД».
Это дает пользователю все права доступа к «БД» для администрирования.
Проверяем можем ли зайти в MySQL используя учетные данные нашего пользователя.
Проверяем так же доступ к созданной «БД», затем выйдите из «БД».
Создание нового приложения
Создаю табличку в «БД».
Вносим данные в таблицу. В моем случае, вношу данные популярных городов.
Проверяем, внеслись ли записи в таблицу. Появится вот такое окно.
Разработка приложения для фреймворка
После того, как создал приложение citylist. Она используется для показа основных конфигурации фреймворка и доступом подключения к «БД».
Создал новый каталог «citylist», где будет содержаться сам фреймворк.
composer create-project --prefer-dist laravel/laravel “name_of_your_project”
После установки, будет показана следующая информация в командной строке.
Теперь открываем каталог нашего приложения, запускаем команду artisan для того, чтобы проверить установились ли нужные компоненты правильно.
cd “name_of_your_project”
php artisan
Artisan – это CLI входящий в состав фреймворка. Он выдает ряд команд, которые полезны при разработке вашего приложения.
Если все сделано как по инструкции, то показано будет следующие.
Настройка фреймворка
Настройка фреймворка расположена в каталоге “config” вашего главного каталога. Когда мы устанавливали фреймворк через утилиту “Composer” то создался файл среды.
Файл среды — записаны настройки вашей среды, где находится приложение, и ставит свой файл по приоритету выше перед другими файлами настроек, которые находятся в каталоге «config».
Открываем файл “.env”.
Nano .env
Хоть и в файле на первый взгляд много конфигураций, но я буду настраивать лишь те, которым нам понадобятся. Дальше я напишу и опишу, какие параметры я буду менять.
- APP_NAME: Имя вашего проекта, в основном пользуется для уведомления;
- APP_ENV: Актуальная среда вашего приложения;
- APP_KEY: Специальный ключ для генерации хэш-сумм, создается сразу после установки фреймворка, его не трогаем;
- APP_URL: Сюда вписываем ваш ip-адрес;
- DB_DATABASE: имя вашей «БД»;
- DB_USERNAME: имя пользователя для подключения к «БД»;
- DB_PASSWORD: пароль к «БД» чтобы подключаться к ней.
Изменяем следующие ключи в файле приложения.
Настройка веб-сервера
Перемещаем папку нашего приложения в каталог «/var/www», где обычно хранят все приложения, которые функционируют на веб-севере.
sudo mv ~/yourproject /var/www/yourproject
Выдал доступ к папкам, куда фреймворк сохраняет созданные приложением файлы.
Приступим к настройке веб сервера. Создаем файл настроек виртуального хоста.
sudo nano /etc/nginx/sites-available/yourproject
Вставляем следующие настройка для веб-сервера.
server {
listen 80;
server_name IP ADDRESS/DOMAIN_NAME;
root /var/www/YOURPROJECT/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;}
}
Теперь, запускаем новый файл с настройками виртуального хоста, создаем ссылку на ваш проект в «sites-enabled».
sudo ln -s /etc/nginx/sites-available/yourproject /etc/nginx/sites-enabled/
Проверяем на синтаксис ошибок в настройках.
sudo nginx -t
Перезагружаем веб-сервер
systemctl reload nginx
Настройка главной страницы фреймворка
Открываем файл главного маршрута.
nano routes/web.php
Вносим следующие параметры в наш файл.
<?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('yourproject', ['visited' => $visited, 'togo' => $togo ] );
});
Создаем новый файл – экран, на котором будет выполняться рендеринг вывода информации с «БД» для пользователя.
nano resources/views/travellist.blade.php
Этот код предназначен для вывода информации. Прописываем его в файл конфигурации.
Сохраняем файл. Открываем браузер и перезагружаем приложение. Сама страничка будет выглядеть в таком формате.
Вывод
В этой публикации мы разобрали следующие действия:
- Создали и расписали «БД» для приложения;
- Настроили новое приложение фреймворка;
- Настройка фреймворка и веб-сервера;
- Настройка главной страницы фреймворка.