Всичко, което трябва да знаете, за да внедрите уеб приложение Laravel на машина Ubuntu 20.04 LTS
Laravel е много популярна PHP рамка с отворен код с изразителен и елегантен синтаксис, използван за проектиране на модерни и красиви уеб приложения. Laravel има за цел да премахне болката от уеб разработката и да я направи приятно и творческо изживяване, превръщайки уеб разработчиците в уеб занаятчии.
В това ръководство ще научите как да инсталирате Laravel с LAMP стек на сървър на Ubuntu 20.04, за да стартирате и стартирате вашето уеб приложение.
Предпоставки
За да следвате това ръководство, ще ви трябва сървър на Ubuntu 20.04 LTS и да сте влезли като sudo
потребител. Преди да започнем, актуализирайте и надстройте пакетите Ubuntu 20.04, като изпълните:
sudo apt update && sudo apt надстройка
Инсталиране на LAMP Stack
LAMP е акроним за Л операционна система inux, А pache уеб сървър, М 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 разреши 'Apache Full' sudo ufw разреши 'OpenSSH'
След това активирайте защитната стена на UFW, като използвате следната команда:
sudo ufw активиране
Може да получите подкана, казваща „командата може да наруши съществуващите ssh връзки. Продължете с операциите (y|n)?”. Натиснете Й
да продължим, тъй като вече сме добавили правило, позволяващо SSH в UFW.
Сега можете да получите достъп до уеб страницата по подразбиране на Apache, като използвате IP адреса на вашия Ubuntu сървър от интернет. За да направите това, отворете браузъра си и въведете IP адреса на вашия Ubuntu 20.04 сървър в URL лентата и натиснете Enter.
//Вашият_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 сървъра.
Първо ще бъдете попитани дали искате да настроите ВАЛИДАЙТЕ ПАРОЛА
плъгин. Този плъгин проверява вашата парола и ги класифицира като сигурни или несигурни въз основа на нивото на правилата за валидиране на паролата, което ще изберете скоро. Така че натиснете Й ако искате да активирате този плъгин.
Изход: Осигуряване на внедряването на MySQL сървъра. Свързване с MySQL с помощта на празна парола. КОМПОНЕНТЪТ ЗА ВАЛИДАЦИЯ НА ПАРОЛА може да се използва за тестване на пароли и подобряване на сигурността. Той проверява силата на паролата и позволява на потребителите да задават само тези пароли, които са достатъчно сигурни. Искате ли да настроите компонент VALIDATE PASSWORD? Натиснете y|Y за Да, всеки друг клавиш за Не: Й
След това задайте ниво на политика за валидиране на парола, като въведете 0
, 1
или 2
в зависимост от това колко силна искате да създадете паролата си за вашите бази данни.
Изход: Има три нива на правила за валидиране на паролата: НИСКА Дължина >= 8 СРЕДНА Дължина >= 8, цифри, смесени главни и специални знаци СИЛНА Дължина >= 8, числови, смесени малки букви, специални знаци и файл с речник Моля, въведете 0 = НИСКА, 1 = СРЕДЕН и 2 = СИЛЕН: 2
След това ще бъдете помолени да въведете нова парола за MySQL root потребител. Въведете подходяща парола за вашия MySQL root. Плъгинът VALIDATE PASSWORD ще ви даде прогнозната сила на вашата парола според нивото на валидиране на паролата ви. Натиснете Й
за да продължите с паролата, която сте предоставили.
Изход: Моля, задайте паролата за root тук. Нова парола: Въведете отново нова парола: Приблизителна сила на паролата: 100 Искате ли да продължите с предоставената парола? (Натиснете y|Y за Да, всеки друг клавиш за Не) : Й
Натиснете Й
за останалата част от подканите, те ще премахнат някои анонимни потребители и тестовите бази данни, ще деактивират дистанционното влизане в root и ще презаредят новите настройки за MySQL сървъра. Когато приключите, тествайте вашата база данни, като изпълните:
sudo mysql
Горната команда ще отвори MySQL конзолата, свързвайки се с базата данни на MySQL като корен потребител. Ще видите изход като този:
Изход: Добре дошли в MySQL монитора. Командите завършват с ; или \g. Вашият идентификатор на MySQL връзка е 10 Версия на сървъра: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2020, Oracle и/или неговите филиали. Всички права запазени. Oracle е регистрирана търговска марка на Oracle Corporation и/или нейните филиали. Други имена може да са търговски марки на съответните им собственици. Въведете 'help;' или '\h' за помощ. Въведете '\c', за да изчистите текущия оператор за въвеждане. mysql>
Може да сте забелязали, че не е необходимо да въвеждате паролата, която сте задали за root потребител на MySQL. Това е така, защото методът за удостоверяване по подразбиране за администраторски MySQL root потребител е caching_sha2_uthentication
вместо на mysql_native_password
метод, който използва парола за влизане.
Така че по подразбиране можете да влезете само като MySQL root потребител с sudo
активирани потребители, които действат като допълнителна защита за MySQL сървъра. Но библиотеката MySQL PHP не поддържа caching_sha2_uthentication
метод. Затова трябва да използваме mysql_native_password
метод, когато създаваме нов потребител за Laravel, тъй като той използва пароли за свързване и взаимодействие с базата данни.
Създайте нов потребител и база данни на MySQL
Винаги е добра практика да създадете нов потребител и база данни специално за вашето приложение, вместо да използвате MySQL root потребителски и тестови бази данни. Така че ще настроим нов потребител на MySQL, наречен laravel_user
и база данни, наречена laravel
. Ако сте следвали урока до този момент, трябва да имате отворена MySQL конзолата. За да създадете потребител, наречен laravel_user
изпълнете следната заявка в MySQL конзолата:
Забележка: Заменете testpass
в долната MySQL заявка със силна парола.
СЪЗДАВАТЕ ПОТРЕБИТЕЛ 'laravel_user'@'%' ИДЕНТИФИЦИРАН С mysql_native_password ОТ 'testpass';
След това създайте база данни, наречена laravel
за нашето приложение Laravel, като изпълните тази заявка:
СЪЗДАВАНЕ НА БАЗА ДАННИ laravel;
Само основният потребител на MySQL има разрешения за новосъздадената база данни laravel. Предоставете всички разрешения за laravel
база данни към laravel_user
като бягаш:
ПРЕДОСТАВЯ ВСИЧКИ НА laravel.* НА 'laravel_user'@'%';
И така, вече имаме нов потребител на MySQL и база данни, излезте от конзолата на MySQL, като изпълните:
ИЗХОД;
Тествайте своя нов потребител на MySQL, като влезете в конзолата на MySQL с него, за да направите това, изпълнете тази команда в терминал:
mysql -u laravel_user -p
Забележете -стр
флаг в командата, той ще ви подкани за паролата, която сте използвали при създаването на laravel_user
(testpass
в заявката). След като сте влезли в MySQL конзолата като laravel_user
, потвърдете, че потребителят има достъп до laravel
база данни, като изпълните:
ПОКАЖЕТЕ БАЗА ДАННИ;
Изход: +-------------------+ | База данни | +-------------------+ | laravel | | информация_схема | +-------------------+ 2 реда в комплект (0,01 сек)
Горният изход потвърждава, че потребителят на MySQL laravel_user
има разрешения за базата данни laravel
. Излезте от конзолата на MySQL с помощта на ИЗХОД;
заявка, за да можем да продължим да създаваме приложението DemoApp Laravel.
Инсталиране на Laravel
Рамката Laravel използва Composer за изтегляне и управление на своите зависимости. И така, трябва да инсталираме Composer на нашата Ubuntu 20.04 машина, преди да можем да създадем приложение Laravel.
Инсталирайте Composer
Composer е инструмент за управление на зависимости за PHP, който прави инсталирането и актуализирането на PHP рамки и библиотеки толкова по-лесни. Ще разгледаме как бързо да инсталираме Composer в този урок, за да можем да го използваме за изтегляне и управление на рамката на Laravel.
Трябва да инсталирате някои допълнителни пакети, които се изискват от Composer, за да функционират, като напр php-cli
за стартиране на PHP скриптове в терминала и разархивирайте
за да помогне на Composer да извлече пакетите. Инсталирайте ги и двете, като изпълните:
sudo apt инсталирайте 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 инсталира php-mbstring php-xml php-bcmath php-zip php-json
Сега можем да инсталираме Laravel и да създадем ново приложение Laravel с помощта на Composer. Първо, уверете се, че сте в домашната директория на вашия потребител:
cd ~
След това създайте нов проект на Laravel с помощта на Composer’s създаване на проект
команда:
composer create-project --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');" Зареждане на хранилища на composer с информация за пакета Актуализиране на зависимости (включително 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 занаятчия
команда, за да проверите дали всички компоненти са инсталирани правилно:
cd LaravelApp/ php artisan
Изход: Laravel Framework 7.18.0 Използване: команда [опции] [аргументи] Опции: -h, --help Показване на това помощно съобщение -q, --quiet Не извеждайте никакво съобщение -V, --version Показване на тази версия на приложението --ansi Принудително извеждане на ANSI --no-ansi Деактивиране на ANSI изход -n, --no-interaction Не задавайте никакви интерактивни въпроси --env[=ENV] Средата, в която командата трябва да се изпълнява под -v|vv|vvv, --verbose Увеличи многословността на съобщенията: 1 за нормален изход, 2 за по-подробен изход и 3 за отстраняване на грешки ....
Този изход потвърждава, че инсталацията е била успешна и всички файлове са на място и инструментите на командния ред на Laravel работят правилно. Все още обаче трябва да конфигурираме приложението, за да настроим базата данни и няколко други настройки.
Конфигурирайте приложението Laravel
Конфигурационните файлове на Laravel се намират в директория, наречена конфиг
в главната директория на приложението. Освен това, когато инсталирахме Laravel чрез Composer, той създаде файл на средата, наречен „.env“ в главната директория на приложението. Файлът на средата включва специфичните за средата конфигурации и има предимство пред настройките в обикновените конфигурационни файлове, разположени вътре в конфигурационната директория.
Забележка: Конфигурационният файл на средата съдържа чувствителна информация за вашия сървър, като пароли за база данни, ключове на приложението Laravel и т.н. По този начин никога не трябва да се споделя публично.
Сега ще редактираме .env
файл, за да промените конфигурацията и да добавите идентификационните данни на базата данни към него. Отворете файла с помощта на nano редактор, като изпълните:
nano .env
В това има много конфигурационни променливи .env
файл. Не е необходимо да променяме всеки един от тях, тъй като Composer е конфигурирал повечето настройки автоматично. И така, ето списъка с някои първични конфигурационни променливи, за които трябва да знаете:
APP_NAME
: Името на приложението, използвано за известия и съобщения, така че ще го настроим на „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=вярно 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=testpass
Направете промени в .env
файл съответно и когато приключите с редактирането, запазете и излезте от файла с помощта на CTRL+X
след това натиснете Й
и натиснете Enter, за да потвърдите. Сега всичко, което остава, е да конфигурирате сървъра на Apache и да създадете виртуален хост за нашето приложение Laravel.
Настройка на Apache уеб сървър
Инсталирахме Laravel в локалната папка на домашната директория на потребителя. Въпреки че това работи перфектно за локално развитие, препоръчително е да имате директория за уеб приложения, разположена в нея /var/www
. Причината, поради която не инсталирахме Laravel /var/www
директно е, защото е собственост на root и Composer не трябва да се използва с sudo
.
Така че използвайте mv
команда за преместване на папката на приложението Laravel и нейното съдържание /var/www
:
sudo mv ~/Laravel/ /var/www
Директорията LaravelApp е собственост на потребителя, така че все още можете да редактирате и правите промени във файловете, без да използвате sudo
команда. Но уеб сървърът на Apache се нуждае от достъп до кеша и директориите за съхранение на приложението, тъй като Laravel съхранява генерирани от приложението файлове в него. Променете собственика на тези папки на www-данни
потребител, използващ 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’s mod_rewrite
тъй като се изисква от Laravel да преобразува правилно URL адресите, за да бъдат интерпретирани от неговата функция за маршрутизиране чрез .htaccess
файл.
sudo a2enmod пренаписване
След това трябва да настроим виртуален хост за приложението Laravel. Конфигурациите на виртуалния хост се намират на адрес /etc/apache2/sites-available
. Ще редактираме файла за виртуален хост по подразбиране, за да разположим приложението Laravel. Отворете конфигурационния файл за виртуален хост по подразбиране с помощта на nano редактор:
sudo nano /etc/apache2/sites-available/000-default.conf
Променете корена на документа от /var/www/html
да се /var/www/LaravelApp/public
и добавете следния фрагмент под реда DocumentRoot:
AllowOverride All
Вашият 000-default.conf
трябва да изглежда нещо подобно сега с малко коментари.
ServerAdmin webmaster@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 и нейното използване, посетете страницата с документи на Laravel.