Все, что вам нужно знать для развертывания веб-приложения Laravel на машине Ubuntu 20.04 LTS
Laravel - очень популярный PHP-фреймворк с открытым исходным кодом с выразительным и элегантным синтаксисом, который используется для разработки современных и красивых веб-приложений. Laravel стремится облегчить веб-разработку и сделать ее приятной и творческой, превращая веб-разработчиков в веб-мастеров.
В этом руководстве вы узнаете, как установить Laravel со стеком LAMP на сервере Ubuntu 20.04, чтобы настроить и запустить свое веб-приложение.
Предпосылки
Чтобы следовать этому руководству, вам понадобится сервер Ubuntu 20.04 LTS и вы войдете в систему как судо
Пользователь. Прежде чем мы начнем, обновите и обновите пакеты Ubuntu 20.04, запустив:
sudo apt update && sudo apt upgrade
Установка LAMP Stack
ЛАМПА - это аббревиатура от L операционная система inux, А веб-сервер pache, M база данных ySQL и п Язык программирования HP. Мы уже находимся на Ubuntu 20.04, что соответствует Linux в стеке LAMP. Итак, мы собираемся установить остальные три пакета, чтобы завершить стек LAMP для нашего приложения Laravel.
Нет доступного метапакета для установки стека LAMP в репозиториях Ubuntu 20.04. Но мы можем использовать небольшую изящную функцию подходящий
менеджер пакетов называется задачами. Задачи обозначаются названием доступной задачи с курсантом (^
) добавлен к нему.
sudo apt установить ламповый сервер ^
Эта команда будет искать в файлах списка пакетов все поля «Задача:» и устанавливать все пакеты с «lamp-server» в их поле задачи. Таким образом, стек LAMP, состоящий из пакетов Apache, MySQL и PHP со всеми их зависимостями, будет установлен на вашем сервере Ubuntu.
Настроить брандмауэр
После того, как вы установили стек LAMP, вам также необходимо настроить несложный брандмауэр (UFW) и изменить его правила, чтобы вы могли получить доступ к серверу Apache из Интернета.
UFW предоставляет простые профили приложений, которые можно использовать для изменения правил и переключения трафика на сетевых портах. Выполните следующую команду, чтобы вывести список всех приложений, имеющих доступ к сетевым портам:
список приложений sudo ufw
Вы увидите такой вывод:
Доступные приложения: Apache Apache Full Apache Secure OpenSSH
Сетевые порты, которые эти профили открывают на сервере Ubuntu 20.04, перечислены ниже:
- Apache: этот профиль открывает только порт
80
(разрешает HTTP-трафик) - Apache Full: этот профиль открывает оба
80
&443
порты (разрешает трафик HTTP и HTTPS) - Apache Secure: этот профиль открывает только порт
443
(разрешает трафик HTTPS) - OpenSSH: этот профиль открывает порт
22
который позволяет протокол SSH
Вам необходимо включить профиль «Apache Full», который разрешит трафик на веб-сервер Apache из Интернета. Кроме того, вам также необходимо включить профиль «OpenSSH», который разрешает трафик на порт. 22
(SSH) на вашем сервере Ubuntu 20.04. Если вы включите UFW без разрешения профиля «OpenSSH», вы не сможете подключиться к своему серверу с помощью SSH.
Чтобы изменить правило UFW и разрешить трафик на порт 80
и 22
, бегать:
sudo ufw allow 'Apache Full' sudo ufw allow 'OpenSSH'
Затем включите брандмауэр UFW, используя следующую команду:
sudo ufw enable
Вы можете получить сообщение «команда может нарушить существующие ssh-соединения. Продолжить операции (y | n)? ». Нажмите Y
чтобы продолжить, поскольку мы уже добавили правило, разрешающее SSH в UFW.
Теперь вы можете получить доступ к веб-странице Apache по умолчанию, используя IP-адрес вашего сервера Ubuntu из Интернета. Для этого откройте браузер, введите IP-адрес своего сервера Ubuntu 20.04 в адресную строку и нажмите Enter.
// Your_ubuntu_server_ip
Эта страница подтверждает, что веб-сервер Apache работает правильно и правила UFW настроены правильно.
Настройка базы данных MySQL для Laravel
Laravel 7 делает взаимодействие с базами данных чрезвычайно простым через различные поддерживаемые серверы баз данных, такие как MySQL версии 5.6+, PostgreSQL 9.4+, SQLite 3.8.8+ и SQL Server 2017+. У нас уже установлен последний пакет MySQL с выключатель лампы ^
задача. Итак, в этом разделе мы настроим сервер MySQL, а затем рассмотрим, как настроить нового пользователя MySQL и базу данных для приложения Laravel.
Настроить MySQL
База данных MySQL поставляется с предустановленным сценарием безопасности, который можно использовать для удаления некоторых небезопасных настроек по умолчанию. Рекомендуется запустить этот сценарий перед развертыванием приложения Laravel.
sudo mysql_secure_installation
Приведенная выше команда выполнит сценарий безопасности, который предложит вам ряд вопросов для настройки сервера MySQL.
Сначала вас спросят, хотите ли вы настроить ПОДТВЕРДИТЬ ПАРОЛЬ
плагин. Этот плагин проверяет ваш пароль и классифицирует его как безопасный или небезопасный в зависимости от уровня политики проверки пароля, который вы выберете в ближайшее время. Так что нажимайте Y если вы хотите включить этот плагин.
Вывод: Обеспечение безопасности развертывания сервера MySQL. Подключение к MySQL с пустым паролем. КОМПОНЕНТ ПРОВЕРКИ ПАРОЛЯ можно использовать для проверки паролей и повышения безопасности. Он проверяет надежность пароля и позволяет пользователям устанавливать только те пароли, которые достаточно безопасны. Хотите установить компонент ПРОВЕРКА ПАРОЛЯ? Нажмите y | Y для Да, любую другую клавишу для Нет: Y
Затем установите уровень политики проверки пароля, введя 0
, 1
или 2
в зависимости от того, насколько надежным вы хотите создать свой пароль для своих баз данных.
Вывод: Существует три уровня политики проверки пароля: LOW Length> = 8 MEDIUM Length> = 8, числовые, смешанный регистр и специальные символы STRONG Length> = 8, числовые, смешанный регистр, специальные символы и файл словаря. Введите 0 = LOW, 1 = СРЕДНИЙ и 2 = СИЛЬНЫЙ: 2
Затем вам будет предложено ввести новый пароль для пользователя root MySQL. Введите подходящий пароль для корневого каталога MySQL. Плагин VALIDATE PASSWORD предоставит вам приблизительную надежность вашего пароля в соответствии с вашим уровнем проверки пароля. Нажмите Y
чтобы продолжить с введенным вами паролем.
Вывод: Пожалуйста, установите здесь пароль для root. Новый пароль: введите новый пароль еще раз: Расчетная надежность пароля: 100 Хотите продолжить с введенным паролем? (Нажмите y | Y для Да, любую другую клавишу для Нет): Y
Нажмите Y
Что касается остальных запросов, они удалят некоторых анонимных пользователей и тестовые базы данных, отключат удаленный вход в систему root и перезагрузят новые настройки для сервера MySQL. Когда вы закончите, протестируйте свою базу данных, запустив:
sudo mysql
Приведенная выше команда откроет консоль MySQL, подключившись к базе данных MySQL как корень Пользователь. Вы увидите такой вывод:
Вывод: Добро пожаловать в монитор MySQL. Команды заканчиваются на; или \ g. Ваш идентификатор подключения к MySQL - 10. Версия сервера: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Авторские права (c) 2000, 2020, Oracle и / или его дочерние компании. Все права защищены. Oracle является зарегистрированным товарным знаком Oracle Corporation и / или ее дочерних компаний. Другие наименования могут быть торговыми марками их владельцев. Введите "помощь"; или '\ h' для помощи. Введите '\ c', чтобы очистить текущий оператор ввода. mysql>
Вы могли заметить, что вам не нужно вводить пароль, который вы установили для пользователя root MySQL. Это потому, что метод аутентификации по умолчанию для административного пользователя root MySQL caching_sha2_authentication
вместо mysql_native_password
метод, который использует пароль для входа в систему.
Таким образом, по умолчанию вы можете войти в систему только как пользователь root MySQL с судо
включенных пользователей, которые действуют как дополнительная безопасность для сервера MySQL. Но библиотека MySQL PHP не поддерживает caching_sha2_authentication
метод. Поэтому нам нужно использовать mysql_native_password
при создании нового пользователя для Laravel, поскольку он использует пароли для подключения и взаимодействия с базой данных.
Создание нового пользователя и базы данных MySQL
Всегда рекомендуется создавать нового пользователя и базу данных специально для вашего приложения вместо использования корневого пользователя MySQL и тестовых баз данных. Итак, мы собираемся создать нового пользователя MySQL с именем laravel_user
и база данных под названием ларавел
. Если вы следовали руководству до этого момента, у вас должна быть открыта консоль MySQL. Чтобы создать пользователя с именем laravel_user
запустите в консоли MySQL следующий запрос:
Примечание: Заменить тест проходят
в приведенном ниже запросе MySQL с надежным паролем.
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'laravel_user' @ '%' ИДЕНТИФИЦИРОВАННЫЙ mysql_native_password ПО 'testpass';
Затем создайте базу данных с именем ларавел
для нашего приложения Laravel, выполнив этот запрос:
СОЗДАТЬ БАЗУ ДАННЫХ laravel;
Только пользователь root MySQL имеет разрешения на вновь созданную базу данных laravel. Предоставьте все разрешения на ларавел
базу данных в laravel_user
запустив:
ПРЕДОСТАВИТЬ ВСЕ НА laravel. * TO 'laravel_user' @ '%';
Итак, теперь у нас есть новый пользователь MySQL и база данных, выйдите из консоли MySQL, запустив:
ВЫХОД;
Проверьте своего нового пользователя MySQL, войдя с ним в консоль MySQL, для этого выполните следующую команду в терминале:
mysql -u laravel_user -p
Обратите внимание на -п
в команде, вам будет предложено ввести пароль, который вы использовали при создании laravel_user
(тест проходят
в запросе). После того, как вы вошли в консоль MySQL как laravel_user
подтвердите, что у пользователя есть доступ к ларавел
база данных, запустив:
ПОКАЗАТЬ БАЗЫ ДАННЫХ;
Вывод: + -------------------- + | База данных | + -------------------- + | ларавел | | information_schema | + -------------------- + 2 ряда в наборе (0,01 сек)
Приведенный выше вывод подтверждает, что пользователь MySQL laravel_user
имеет права доступа к базе данных ларавел
. Выйдите из консоли MySQL, используя ВЫХОД;
запрос, чтобы мы могли приступить к созданию приложения DemoApp Laravel.
Установка Laravel
Фреймворк Laravel использует Composer для загрузки и управления своими зависимостями. Итак, нам нужно установить Composer на нашу машину с Ubuntu 20.04, прежде чем мы сможем создать приложение Laravel.
Установить Composer
Composer - это инструмент диспетчера зависимостей для PHP, который значительно упрощает установку и обновление фреймворков и библиотек PHP. В этом руководстве мы рассмотрим, как быстро установить Composer, чтобы использовать его для загрузки и управления фреймворком Laravel.
Вам необходимо установить некоторые дополнительные пакеты, которые требуются Composer для работы, например php-cli
запускать PHP-скрипты в терминале и распаковать
чтобы помочь Composer извлечь пакеты. Установите их оба, запустив:
sudo apt install php-cli распаковать
Затем, чтобы установить Composer глобально, загрузите сценарий установки Composer с завиток
и установите его с помощью следующей команды:
curl -sS //getcomposer.org/installer | sudo php - --install-dir = / usr / local / bin --filename = composer
Наконец, убедитесь, что композитор установлен правильно, запустив:
композитор
______ / ____ / ___ ____ ___ ____ ____ ________ _____ / / / __ \ / __ `__ \ / __ \ / __ \ / ___ / _ \ / ___ / / / ___ / / _ / / / / / / / / _ / / / _ / (__) __ / / \ ____ / \ ____ / _ / / _ / / _ / .___ / \ ____ / ____ / \ ___ / _ / / _ / Версия композитора 1.10.8 2020-06- 24 21:23:30 Использование: команда [параметры] [аргументы]
Этот вывод подтверждает, что Composer работает правильно на вашем сервере Ubuntu 20.04, вы можете начать использовать его для установки и управления фреймворками и библиотеками PHP.
Создать приложение Laravel
У нас почти есть все необходимое для создания приложения Laravel на нашем сервере Ubuntu 20.04, за исключением нескольких расширений PHP. Установите эти недостающие расширения с помощью следующей команды:
sudo apt install php-mbstring php-xml php-bcmath php-zip php-json
Теперь мы можем установить Laravel и создать новое приложение Laravel с помощью Composer. Во-первых, убедитесь, что вы находитесь в домашнем каталоге своего пользователя:
cd ~
Затем создайте новый проект Laravel с помощью Composer’s создать проект
команда:
композитор создать проект --prefer-dist laravel / laravel LaravelApp
Приведенная выше команда создаст новый проект под названием LaravelApp, а также установит и настроит для вас Laravel Framework. Вы увидите результат, подобный этому:
Вывод: Создание проекта "laravel / laravel" в "./LaravelApp" Установка laravel / laravel (v7.12.0) Установка laravel / laravel (v7.12.0): Загрузка (100%) Созданный проект в / home / ath / LaravelApp @php - r "file_exists ('. env') || copy ('. env.example', '.env');" Загрузка репозиториев композитора с информацией о пакете Обновление зависимостей (включая require-dev) Операции с пакетами: 97 установок, 0 обновлений, 0 удалений Установка voku / portable-ascii (1.5.2): Загрузка (100%) Установка symfony / polyfill-ctype (v1 .17.1): Загрузка (100%) Установка phpoption / phpoption (1.7.4): Загрузка (100%) Установка vlucas / phpdotenv (v4.1.7): Загрузка (100%) Установка symfony / css-selector (v5.1.2) : Скачивается (100%) ....
Когда установка будет завершена, перейдите в корневой каталог приложения и запустите Laravel’s ремесленник
команда, чтобы убедиться, что все компоненты установлены правильно:
компакт-диск LaravelApp / php artisan
Вывод: Laravel Framework 7.18.0 Использование: команда [параметры] [аргументы] Параметры: -h, --help Показать это справочное сообщение -q, --quiet Не выводить никаких сообщений -V, --version Показать версию этого приложения --ansi Принудительный вывод ANSI --no-ansi Отключить вывод ANSI -n, --no-взаимодействовать Не задавать никаких интерактивных вопросов --env [= ENV] Среда, в которой команда должна выполняться под -v | vv | vvv, --verbose Увеличить многословность сообщений: 1 для нормального вывода, 2 для более подробного вывода и 3 для отладки ....
Этот вывод подтверждает, что установка прошла успешно, все файлы на месте и инструменты командной строки Laravel работают правильно. Однако нам все еще нужно настроить приложение для настройки базы данных и некоторых других параметров.
Настроить приложение Laravel
Файлы конфигурации Laravel находятся в каталоге с именем config
внутри корневого каталога приложения. Кроме того, когда мы установили Laravel через Composer, он создал файл среды с именем «.env» в корневом каталоге приложения. Файл среды включает в себя конфигурации, специфичные для среды, и имеет приоритет над настройками в обычных файлах конфигурации, расположенных в каталоге config.
Примечание. Файл конфигурации среды содержит конфиденциальную информацию о вашем сервере, такую как пароли базы данных, ключи приложения Laravel и т. Д. Таким образом, он никогда не должен публиковаться публично.
Теперь мы отредактируем .env
файл, чтобы изменить конфигурацию и добавить в него учетные данные базы данных. Откройте файл с помощью редактора nano, запустив:
нано .env
В этом .env
файл. Нам не нужно менять каждый из них, поскольку Composer настроил большинство параметров автоматически. Итак, вот список некоторых основных переменных конфигурации, о которых вы должны знать:
ИМЯ ПРИЛОЖЕНИЯ
: Имя приложения, используемое для уведомлений и сообщений, поэтому мы собираемся установить его как «LaravelApp».APP_ENV
: Эта переменная используется для обозначения текущей среды приложения. Это может быть локальная среда, среда разработки, тестирования или производственная среда. Сейчас мы собираемся установить его в среду разработки.APP_KEY
: Уникальный ключ приложения, используемый для создания солей и хэшей для веб-приложения. Он автоматически создается при установке Laravel через Composer, поэтому менять его не нужно.APP_DEBUG
: Может быть установлено значение true или false, в зависимости от того, хотите ли вы отображать ошибки на стороне клиента. Установите значение false при переходе в производственную среду.APP_URL
: Базовый URL-адрес или IP-адрес приложения, измените его на свое доменное имя, если оно у вас есть для вашего приложения Laravel, или оставьте его пока нетронутым.DB_DATABASE
: Имя базы данных, которую вы хотите использовать с приложением Laravel. Мы собираемся использовать базу данных MySQL laravel, которую мы создали при настройке MySQL.DB_USERNAME
: Имя пользователя для подключения к базе данных. Мы собираемся использовать созданного нами пользователя MySQL laravel_user.DB_PASSWORD
: Пароль для подключения к базе данных.
APP_NAME =LaravelApp
APP_ENV =разработка
APP_KEY =base64: Application_unique_key
APP_DEBUG = true APP_URL =// domain_or_IP
LOG_CHANNEL = стек DB_CONNECTION = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = laravel DB_USERNAME =laravel_user
DB_PASSWORD =тест проходят
Внесите изменения в .env
файл соответственно, и когда вы закончите редактирование, сохраните и выйдите из файла, используя CTRL + X
затем нажмите Y
и нажмите Enter для подтверждения. Теперь осталось только настроить сервер Apache и создать виртуальный хост для нашего приложения Laravel.
Настройка веб-сервера Apache
Мы установили Laravel в локальную папку домашнего каталога пользователя. Хотя это отлично работает для локальной разработки, рекомендуется располагать каталог веб-приложений в / var / www
. Причина, по которой мы не установили Laravel в / var / www
напрямую потому, что он принадлежит root, и Composer не должен использоваться с судо
.
Так что используйте мв
команда для перемещения папки приложения Laravel и ее содержимого в / var / www
:
Судо мв ~ / Laravel / / var / www
Каталог LaravelApp принадлежит пользователю, поэтому вы все равно можете редактировать и вносить изменения в файлы, не используя судо
команда. Но веб-серверу Apache необходим доступ к каталогам кеша и хранилища приложения, поскольку Laravel хранит в нем файлы, созданные приложением. Измените владельца этих папок на www-data
пользователь, использующий Chown
команда:
sudo chown -R www-data.www-data / var / www / LaravelApp / storage sudo chown -R www-data.www-data / var / www / LaravelApp / bootstrap / cache
После смены владельца этих каталогов включите Apache mod_rewrite
поскольку Laravel требует правильного преобразования URL-адресов для интерпретации его функцией маршрутизации через .htaccess
файл.
sudo a2enmod переписать
Затем нам нужно настроить виртуальный хост для приложения Laravel. Конфиги виртуального хоста находятся по адресу / и т.д. / apache2 / сайты-доступные
. Мы собираемся отредактировать файл виртуального хоста по умолчанию, чтобы развернуть приложение Laravel. Откройте файл конфигурации виртуального хоста по умолчанию с помощью редактора nano:
sudo nano /etc/apache2/sites-available/000-default.conf
Измените корень документа с / var / www / html
к / вар / www / LaravelApp / общедоступный
и добавьте следующий фрагмент под строкой DocumentRoot:
AllowOverride All
Ваш 000-default.conf
теперь должно выглядеть примерно так, с небольшими комментариями.
ServerAdmin веб-мастер @ localhost DocumentRoot / var / www / LaravelApp / public AllowOverride All ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log вместе
Перезапустите веб-сервер Apache, выполнив следующую команду:
sudo systemctl перезапустить apache2
Теперь перейдите в свой браузер и введите IP-адрес своего сервера Ubuntu 20.04. Вы увидите стартовую страницу Laravel вместо страницы приветствия Apache по умолчанию.
Предполагая, что вы до сих пор следовали этому руководству, у вас должно быть работающее приложение Laravel с базой данных MySQL под названием ларавел
для этого. С этого момента вы можете начать разработку своего Laravel-приложения самостоятельно. Чтобы узнать больше о фреймворке Laravel и его использовании, посетите страницу документации Laravel.