Быстрый старт

Содержание

Step 5 — Setting Up Nginx

We have installed Laravel on a local folder of your remote user’s home directory, and while this works well for local development environments, it’s not a recommended practice for web servers that are open to the public internet. We’ll move the application folder to , which is the usual location for web applications running on Nginx.


First, use the command to move the application folder with all its contents to :

Now we need to give the web server user write access to the and folders, where Laravel stores application-generated files:

The application files are now in order, but we still need to configure Nginx to serve the content. To do this, we’ll create a new virtual host configuration file at :

The following configuration file contains the settings for Laravel applications on Nginx:

/etc/nginx/sites-available/travel_list

Copy this content to your file and, if necessary, adjust the highlighted values to align with your own configuration. Save and close the file when you’re done editing.

To activate the new virtual host configuration file, create a symbolic link to in :

Note: If you have another virtual host file that was previously configured for the same used in the virtual host, you might need to deactivate the old configuration by removing the corresponding symbolic link inside .

To confirm that the configuration doesn’t contain any syntax errors, you can use:

You should see output like this:

To apply the changes, reload Nginx with:

Now go to your browser and access the application using the server’s domain name or IP address, as defined by the directive in your configuration file:

You will see a page like this:

That confirms your Nginx server is properly configured to serve Laravel. From this point, you can start building up your application on top of the skeleton provided by the default installation.

In the next step, we’ll modify the application’s main route to query for data in the database using Laravel’s facade.

Работа с JavaScript

Mix предоставляет несколько функций для работы с JavaScript-файлами, например: компилирование ECMAScript 2015, бандлинг модулей, минификация и простая конкатенация простых JavaScript-файлов. Даже лучше: это все работает незаметно для пользователя, не требуя ни грамма пользовательской настройки:

Используя эту единственную строку кода теперь вы можете воспользоваться следующими плюсами:

  • Синтаксис ES2015.
  • Модули
  • Компиляция файлов .
  • Минификация для продакшна.

Извлечение библиотек поставщика

Одним из потенциальных недостатков бандлинга всего JavaScript приложения с вашими библиотеками поставщиков является то, что это затрудняет долгосрочное кэширование. Например, одно обновление вашего кода приложения заставит браузер повторно загружать все ваши библиотеки поставщиков, даже если они не изменились.

Если вы планируете часто обновлять JavaScript своего приложения, то вам следует рассмотреть вариант извлечение всех своих внешних библиотек в отдельный файл. Таким образом, изменение кода вашего приложения не повлияет на кеширование вашего большого файла . Метод в Mix делает эту задачу чрезвычайно простой:

Метод принимает массив всех библиотек или модулей, которые вы бы хотели извлечь в файл . Используя вышеуказанный сниппет в качестве примера, Mix сгенерирует следующие файлы:

  • : Webpack manifest runtime
  • : Ваши библиотеки поставщика
  • : Код вашего приложения

Убедитесь, что загрузили эти файлы в соответствующем порядке, чтобы избежать ошибок JavaScript:

React

Mix может автоматически установить Babel-плагины, необходимые для поддержки React. Для начала замените на :

Mix в фоновом режиме скачает и включит подходящие Babel-плагины .

Vanilla JS

Схоже с комбинирование таблиц стилей с , вы также можете скомбинировать и минифицировать любое количество файлов JavaScript при помощи метода :

Эта опция особенно полезна для прежних версий проектов, где вам не требовалась компиляция Webpack для вашего JavaScript.

Пользовательская настройка Webpack

Laravel Mix обращается к преднастроенному файлу . Время от времени вам может потребоваться вручную изменить этот файл. У вас, возможно, есть специальный лоадер или плагин, который нужно указывать, или может вы предпочитаете использовать Stylus вместо Sass. В таких случаях у вас будет два выбора:

Слияние пользовательской настройки


Mix предоставляет полезный метод , который позволит выполнить слияение любых коротких Webpack-переопределений. Это крайне привлекательный выбор, так как от вас не требуется копировать и поддерживать собственную копию файла . Метод принимает объект, который должен содержать любую специальную настройку Webpack, которую вы желаете применить.

Пользовательские файлы настроек

Скопируйте файл в корневую директорию вашего проекта, если вы бы хотели полностью изменить свою настройку Webpack. Затем укажите все ссылки в своем файле на этот скопированный конфиг. Если вы решите воспользоваться этим подходом, любые будущие upstream-обновления вашего Mix следует вручную склеивать с вашим измененным файлом.

Аутентификация пользователей вручную

Вы можете написать свои контроллеры аутентификации пользователей, не пользоваться теми, что генерирует фреймворк, если по какой-то причине они вас не устраивают. Для этого вам нужно использовать в своих контроллерах классы аутентификации Laravel. Не волнуйтесь, это просто.

Мы будем работать со службами аутентификации Laravel через фасад , поэтому нам надо не забыть импортировать фасад Auth в начале класса. Далее давайте посмотрим на метод :

Метод вернет , если аутентификация прошла успешно. В противном случае будет возвращён .

Метод «редиректора» перенаправит пользователя к тому URL, к которому он обращался до того, как был перехвачен фильтром аутентификации. В этот метод можно передать запасной URI, на случай недоступности требуемого пути.

Обращение к конкретным экземплярам гварда

С помощью метода фасада вы можете указать, какой экземпляр гварда необходимо использовать. Это позволяет управлять аутентификацией для отдельных частей вашего приложения, используя полностью отдельные модели для аутентификации или таблицы пользователей.

Передаваемое в метод имя гварда должно соответствовать одному из защитников, настроенных в конфиге :

Завершение сессии

Для завершения сессии пользователя можно использовать метод фасада . Он очистит информацию об аутентификации в сессии пользователя:

Запоминание пользователей

Если вы хотите обеспечить функциональность «запомнить меня» в вашем приложении, вы можете передать логическое значение как второй параметр методу , который сохранит пользователя аутентифицированным на неопределённое время, или пока он вручную не выйдет из системы. Ваша таблица должна содержать строковый столбец , который будет использоваться для хранения токенов «запомнить меня».

Если вы «запоминаете» пользователей, то можете использовать метод , чтобы определить, аутентифицировался ли пользователь, используя cookie «запомнить меня»:

Другие методы аутентификации

Аутентификация экземпляра пользователя

Если вам необходимо «залогинить» в приложение существующий экземпляр пользователя, вызовите метод с экземпляром пользователя. Данный объект должен быть реализацией контракта . Конечно, встроенная в Laravel модель реализует этот интерфейс:

Конечно, вы можете указать, какой экземпляр гварда надо использовать:

Аутентификация пользователя по ID

Для входа пользователя в приложение по его ID, используйте метод . Этот метод просто принимает первичный ключ пользователя, которого необходимо аутентифицировать:

Однократная аутентификация пользователя

Вы также можете использовать метод для пользовательского входа в систему для одного запроса. Сеансы и cookies не будут использоваться, что может быть полезно при создании API без сохранения состояний:

Step 6 — Securing your Application with TLS

To complete the production setup it is recommended to serve the application through secure HTTPS using TLS. This will make sure that all communication between the application and its visitors will be encrypted, which is especially important if the application asks for sensitive information such as login or password.

Let’s Encrypt is a free certificate authority which makes adding TLS to your website straightforward. To enable HTTPS for the freshly deployed application, we’ll be following the How To Secure Nginx with Let’s Encrypt on Ubuntu 16.04 tutorial with some small modifications to accommodate for this specific Laravel app’s setup.

The only changes will be:

  • Using the Laravel application’s location () instead of the default web root () when requesting an SSL certificate.
  • Modifying the configuration file instead of the default server block file.

Specifically, the command to obtain the certificate will be:

And the final version of the configuration file will look like this

/etc/nginx/sites-enabled/example.com

Make sure to check that there are no syntax errors in the configuration.

If all changes were successful, you will get a result that looks like this:

If that is the case, you can safely restart Nginx to put the changes in effect.

The Let’s Encrypt TLS/SSL certificate will be fully in place and the application will be available through a secure connection. To verify if everything works as expected, simply visit . You should see the same application form as before, but this time the connection will be fully secured.

Шаг 4 — Настройка Laravel

Файлы конфигурации Laravel располагаются в директории внутри корневой директории приложения. При установке Laravel с помощью Composer создается файл среды. Этот файл содержит настройки текущей среды, где выполняется приложение, и имеет приоритет перед обычными файлами конфигурации, расположенными в каталоге . Для каждого случая установки в новую среду требуется персонализированный файл среды, где будут определены такие настройки, как параметры подключения к базе данных, параметры отладки, URL приложения и другие параметры, в зависимости от используемой приложением среды.

Предупреждение. Файл конфигурации среды содержит важную информацию о вашем сервере, включая учетные данные базы данных и ключи безопасности. В связи с этим не следует предоставлять этот файл в открытый доступ.

Теперь мы изменим файл для настройки конфигурации текущей среды приложения.


Откройте файл , используя предпочитаемый редактор командной строки. Здесь мы будем использовать :

Хотя в этом файле содержится много переменных конфигурации, вам не нужно настраивать их все. В следующем списке содержится обзор переменных, требующих внимания:

  • : имя приложения, используется для уведомлений и сообщений.
  • : текущая среда приложения.
  • : используется для генерирования солей и хэш-сумм, этот уникальный ключ создается автоматически при установке Laravel с помощью Composer, изменять его не нужно.
  • : указывает, нужно ли отображать данные отладки на стороне клиента.
  • : базовый URL приложения, используется для генерирования ссылок на приложение.
  • : имя базы данных.
  • : имя пользователя для подключения к базе данных.
  • : пароль для подключения к базе данных.

По умолчанию эти значения настроены для локальной среды разработки, которая использует Homestead, упакованный комплект Vagrant, который предоставляется Laravel. Мы изменим эти значения, чтобы отразить текущие настройки среды нашего приложения.

Если вы устанавливаете Laravel на систему, предназначенную для разработки или тестирования, вы можете оставить опцию включенной, чтобы получать важные данные отладки при тестировании приложения в браузере. В этом случае для переменной следует задать значение или .

Если вы устанавливаете Laravel в производственной среде, вам необходимо будет отключить опцию , потому что она показывает конечному пользователю важные данные о вашем приложении. В этом случае для следует задать значение .

Следующий файл содержит настройки нашего приложения-примера для разработки:

Примечание. Переменная содержит уникальный ключ, который был автоматически сгенерирован при установке Laravel с помощью Composer. Это значение изменять не нужно. Если вы хотите сгенерировать новый ключ безопасности, вы можете воспользоваться командой .

/var/www/travellist/.env

Измените переменные соответствующим образом. Завершив редактирование, сохраните и закройте файл для сохранения изменений. Если вы используете , то можете выйти, введя , а затем и для подтверждения.

Теперь наше приложение Laravel настроено, но нам еще нужно настроить веб-сервер для доступа к нему через браузер. На следующем шаге мы настроим Nginx для обслуживания вашего приложения Laravel.

Шаг 2 — Создание базы данных для приложения

Чтобы продемонстрировать основы установки и использования Laravel, мы создадим приложение travel list, показывающее список мест, куда хотят поехать пользователи, и места, где они уже побывали. Эти данные можно хранить в таблице places с полем для мест, которому мы присвоим имя name, а также с полем visited, где мы можем отметить места, которые пользователи посещали или не посещали. Также мы добавим поле id для уникальной идентификации каждой записи.

Чтобы подключиться к базе данных из приложения Laravel, мы создадим отдельного пользователя MySQL и предоставим этому пользователю полные права доступа к базе данных .

На момент написания этого руководства собственная библиотека MySQL PHP не поддерживает метод аутентификации , используемый по умолчанию в MySQL 8. Для подключения к базе данных MySQL из кода PHP необходимо создать нового пользователя с помощью метода аутентификации .

Для начала войдите в консоль MySQL как пользователь root базы данных:

Чтобы создать новую базу данных, запустите следующую команду в консоли MySQL:

Теперь вы можете создать нового пользователя и предоставить ему полный набор прав для только что созданной вами базы данных. В этом примере мы создаем пользователя travellist_user с паролем , но вам следует изменить его на безопасный пароль по своему усмотрению:

Теперь нам нужно предоставить этому пользователю разрешение для базы данных :

Это даст пользователю travellist_user полные права доступа к базе данных , но не даст ему возможности создавать или изменять другие базы данных на вашем сервере.

После этого выйдите из оболочки MySQL:

Теперь вы можете проверить наличие у нового пользователя необходимых разрешений, выполнив повторный вход в консоль MySQL, на этот раз используя учетные данные вашего собственного пользователя:

В этой команде используется флаг , то есть она будет запрашивать пароль, заданный вами при создании пользователя travellist_user. Войдите в консоль MySQL и убедитесь, что у вас имеется доступ к базе данных :

Результат будет выглядеть следующим образом:

Создайте таблицу в базе данных . Из консоли MySQL запустите следующее выражение:

Заполните таблицу определенными образцами данных:

Чтобы подтвердить, что данные были успешно сохранены в таблицу, запустите следующую команду:

Вы увидите примерно следующий вывод:

Убедившись в том, что у вас есть надлежащие данные в тестовой таблице, вы можете закрыть консоль MySQL:

Вы готовы создать приложение и настроить его для подключения к новой базе данных.

Step 6: Setup Apache Virtual Host


Create an Apache virtual host file so your domain can serve Laravel. Open a file, for example, your_website.conf:

# nano /etc/apache2/sites-available/your_website.conf

Paste the following:

<VirtualHost *:80>
ServerAdmin _domain.com
DocumentRoot /var/www/html/your_website/public/
ServerName your_domain.com
ServerAlias www.your_domain.com
<Directory /var/www/html/your_website/>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/your_domain.com-error_log
CustomLog /var/log/apache2/your_domain.com-access_log common
</VirtualHost>

Enable the site:

# a2ensite your_website.conf

Restart Apache so the changes can take effect:

# service apache2 reload

Now open your favorite web browser and navigate to http://your_domain.com where you will be welcomed by a page as shown in the image below:

Congratulations, you have successfully installed Laravel on Ubuntu 16.04. For more information about Laravel, you should check their official documentation.

install Laravel on Ubuntu 16.04Laravel VPS Hosting

PS. If you liked this post, on how to install Laravel on Ubuntu 16.04,  please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.

# Updating Nova

To update your Nova installation, you may simply download a release Zip file from the Nova website.

Composer Installations

If you installed Nova via Composer, you may update Nova using , just like any other Composer package.

After downloading the Zip file, replace the current contents of your application’s directory with the contents of the Zip file. After updating the directory’s contents, you may run the and commands:

The command will re-publish Nova’s public assets, configuration, views, and language files. This command will not overwrite any existing configuration, views, or language files. If you would like the command to overwrite existing files, you may use the flag when executing the command:

Получение моделей

После создания модели и , вы можете начать получать данные из вашей БД. Каждая модель Eloquent представляет собой мощный конструктор запросов, позволяющий удобно выполнять запросы к связанной таблице. Например:

Добавление дополнительных ограничений

Метод в Eloquent возвращает все результаты из таблицы модели. Поскольку модели Eloquent работают как конструктор запросов, вы можете также добавить ограничения в запрос, а затем использовать метод для получения результатов:

Обновление данных в модели

Вы можете обновить аттрибуты в модели при помощи методов и .

Метод делает запрос в базу данных и возвращает такую же модель с новыми данными. Существующая модель не изменяется:

Метод перезаписывает текущую модель новыми данными из БД. Все заргуженные отношения обновляются тоже:

Коллекции

Такие методы Eloquent, как и , которые получают несколько результатов, возвращают экземпляр. Класс предоставляет для работы с результатами Eloquent:

Вы также можете просто перебирать такую коллекцию в цикле как массив:

Разделение результата на блоки

Если вам нужно обработать тысячи записей Eloquent, используйте команду . Метод будет получать заданное количество моделей Eloquent, передавая их для обработки функции во втором аргументе. Использование этого метода уменьшает используемый объём оперативной памяти при работе с большими наборами данных:

Первый передаваемый в метод аргумент — число записей, получаемых в одном блоке. Передаваемая в качестве второго аргумента функция-замыкание будет вызываться для каждого блока, получаемого из БД. Для получения каждого блока записей, передаваемого в замыкание, будет выполнен запрос к базе данных.

Использование курсоров

Метод позволяет проходить по записям базы данных, используя курсор, который выполняет только один запрос. При обработке больших объёмов данных метод может значительно уменьшить расход памяти:

Метод возвращает экземпляр . похожи на обычные, но загружают в память только один элемент за раз.

Продвинутые подзапросы

Выборка подзапросами

Eloquent предлагает расширенную поддержку подзапросов, которая позволяет извлекать информацию из связанных таблиц в одном запросе. Например, представим, что у нас есть таблица рейсов и таблица рейсов в пункты назначения. Таблица содержит столбец , в котором указано, когда рейс прибыл в пункт назначения.

Используя функцонал методов и , мы можем выбрать все и название рейса, который в последний раз прибыл в этот пункт назначения, с помощью одного запроса:

Сортировка результатов подзапросов

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


С этим читают