news
Serverspace в «Рейтинге провайдеров IaaS Enterprise 2023» от Market.CNews
БС
1 февраля 2023
Обновлено 24 июля 2023

Как развернуть Laravel-приложение NGINX на Ubuntu

Nginx Ubuntu

Введение

В этой публикации я разберу как развернуть 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

Устанавливаем нужные пакеты модулей PHP

Создание БД

Чтобы показать основное предназначение фреймворка, создадим таблицу «city list», где я внес лист популярных городов.

Заходим в консоль MySQL из под root`a базы данных.

sudo mysql

Заходим в консоль 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 входящий в состав фреймворка. Он выдает ряд команд, которые полезны при разработке вашего приложения.

Если все сделано как по инструкции, то показано будет следующие.

CLI Artisan

Настройка фреймворка

Настройка фреймворка расположена в каталоге “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

Вносим следующие параметры в наш файл.

20ngl

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

Вывод информации из БД

Этот код предназначен для вывода информации. Прописываем его в файл конфигурации.

Сохраняем файл. Открываем браузер и перезагружаем приложение. Сама страничка будет выглядеть в таком формате.

Проверка работы в браузере

Вывод

В этой публикации мы разобрали следующие действия:

  1. Создали и расписали «БД» для приложения;
  2. Настроили новое приложение фреймворка;
  3. Настройка фреймворка и веб-сервера;
  4. Настройка главной страницы фреймворка.
Оценка:
4 из 5
Аverage rating : 4.4
Оценок: 5
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300

Вам также может быть интересно...