_ Автор выбрал Software в Public Interest Inc, чтобы получить пожертвование в рамках https://do.co/ Программа w4do-cta [Писать для DOnations] ._
Вступление
https://symfony.com [Symfony] - это PHP-фреймворк с открытым исходным кодом с элегантной структурой и репутацией подходящего фреймворка для запуска любого проекта независимо от его размера. Являясь набором повторно используемых компонентов, его гибкость, архитектура и высокая производительность делают его лучшим выбором для создания очень сложного корпоративного приложения.
В этом руководстве вы развернете существующее стандартное приложение Symfony 4 в производство со стеком LEMP (Nginx, MySQL и PHP) в Ubuntu 18.04, что поможет вам приступить к настройке сервера и структуры инфраструктуры. Nginx - это популярный высокопроизводительный HTTP-сервер с открытым исходным кодом, с дополнительными функциями, включая поддержку обратного прокси-сервера. Он имеет хорошую репутацию и размещает некоторые из крупнейших и самых популярных сайтов в Интернете. Если вы решите развернуть собственное приложение Symfony, вам может потребоваться выполнить дополнительные действия в зависимости от существующей структуры вашего приложения.
Предпосылки
Для завершения этого урока вам понадобится:
-
Один сервер Ubuntu 18.04, настроенный по следующему адресу https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04, - руководство по первоначальной настройке сервера Ubuntu 18.04], включая некорневого пользователь с доступом
+ sudo +
и брандмауэром. -
Nginx, MySQL и PHP установлены следующим образом: Как установить Linux, Nginx, MySQL, PHP (стек LEMP) в Ubuntu 18.04.
-
Composer установлен, следуя шагам 1 и 2 из Как установить и использовать Composer в Ubuntu 18,04.
-
Git установлен следующим образом https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-18-04 как установить Git в Ubuntu 18.04].
Шаг 1 - Создание пользователя и базы данных для приложения
Следуя инструкциям в Предварительных условиях, теперь у вас есть все основные серверные зависимости, необходимые для установки приложения. Поскольку для каждого динамического веб-приложения требуется база данных, вы создадите пользователя и правильно настроите базу данных для приложения в этом разделе.
Чтобы создать базу данных MySQL для нашего приложения и связанного с ним пользователя, вам необходимо получить доступ к клиенту MySQL с помощью корневой учетной записи MySQL:
mysql -u root -p
Введите соответствующий пароль, который должен быть тем же паролем, который использовался при запуске + mysql_secure_installation +
.
Затем создайте базу данных приложения с помощью:
CREATE DATABASE blog;
Вы увидите следующий вывод в консоли:
OutputQuery OK, 1 row affected (0.00 sec)
Вы успешно создали свою базу данных приложений. Теперь вы можете создать пользователя MySQL и предоставить ему доступ к вновь созданной базе данных.
Выполните следующую команду, чтобы создать пользователя и пароль MySQL. Вы можете изменить имя пользователя и пароль на что-то более безопасное, если хотите:
CREATE USER @'localhost' IDENTIFIED BY ;
Вы увидите следующий вывод:
OutputQuery OK, 0 rows affected (0.00 sec)
В настоящее время пользователь * blog-admin * не имеет прав доступа к базе данных приложения. Фактически, даже если * blog-admin * попытается войти в систему со своим паролем, они не смогут получить доступ к оболочке MySQL.
Пользователь должен иметь соответствующие разрешения перед доступом или выполнением определенного действия с базой данных. Используйте следующую команду, чтобы разрешить полный доступ к базе данных * blog * для пользователя * blog-admin *:
GRANT ALL PRIVILEGES ON blog.* TO @'localhost';
Вы увидите следующий вывод:
OutputQuery OK, 0 rows affected (0.00 sec)
-
Blog-admin * теперь имеет все привилегии для всех таблиц в базе данных * blog *. Чтобы перезагрузить таблицы предоставления и применить изменения, вам нужно выполнить операцию очистки привилегий с помощью оператора flush:
FLUSH PRIVILEGES;
Вы увидите следующий вывод:
OutputQuery OK, 0 rows affected (0.00 sec)
Вы закончили создание нового пользователя и предоставление привилегий. Чтобы проверить, в порядке ли вы, выйдите из клиента MySQL:
quit;
И снова войдите в систему, используя учетные данные только что созданного пользователя MySQL, и введите пароль при появлении запроса:
mysql -u -p
Убедитесь, что пользователь может получить доступ к базе данных с помощью:
SHOW DATABASES;
Вы увидите таблицу + blog +
в выводе:
Output+--------------------+
| Database |
+--------------------+
| information_schema |
| blog |
+--------------------+
2 rows in set (0.00 sec)
Наконец, выйдите из клиента MySQL:
quit;
Вы успешно создали базу данных, пользователя для демонстрационного приложения, и предоставили вновь созданному пользователю права доступа к базе данных. Теперь вы готовы установить демонстрационное приложение.
Шаг 2 - Настройка демонстрационного приложения
Для простоты этого руководства вы развернете приложение для блога, созданное с помощью Symfony. Это приложение позволит аутентифицированному пользователю создать запись в блоге и сохранить ее в базе данных. Кроме того, пользователь приложения может просматривать все сообщения и сведения, связанные с автором.
Исходный код приложения блога, которое вы развернете в этом руководстве, - on GitHub. Вы будете использовать Git, чтобы извлечь исходный код приложения из GitHub и сохранить его в новом каталоге.
Сначала создайте каталог, который будет служить корневым каталогом для вашего приложения. Итак, выполните следующую команду из консоли, чтобы создать новый каталог с именем + symfony-blog +
:
sudo mkdir -p /var/www/symfony-blog
Чтобы работать с файлами проекта, используя учетную запись пользователя без полномочий root, вам нужно изменить владельца папки и группу, выполнив:
sudo chown : /var/www/symfony-blog
Замените * sammy * своим именем пользователя sudo без полномочий root.
Теперь вы можете перейти в родительский каталог и клонировать приложение на GitHub:
cd /var/www
git clone https://github.com/yemiwebby/symfony-blog.git symfony-blog
Вы увидите следующий вывод:
OutputCloning into 'symfony-blog'...
remote: Counting objects: 180, done.
remote: Compressing objects: 100% (122/122), done.
remote: Total 180 (delta 57), reused 164 (delta 41), pack-reused 0
Receiving objects: 100% (180/180), 167.01 KiB | 11.13 MiB/s, done.
Resolving deltas: 100% (57/57), done.
Демо-приложение установлено. На следующем шаге вы настроите переменные среды и установите необходимые зависимости для проекта.
Шаг 3 - Настройка переменных среды для приложения
Чтобы полностью настроить приложение, вам нужно установить зависимости проекта и правильно настроить параметры приложения.
По умолчанию приложение Symfony работает в режиме разработки, что дает очень подробный журнал для целей отладки. Это не относится к тому, что вы делаете в этом руководстве, и не является хорошей практикой для производственной среды, так как это может замедлить работу и создать очень большие файлы журналов.
Symfony должен знать, что вы запускаете приложение в производственной среде. Вы можете настроить это, создав файл + .env +
, содержащий объявления переменных, или непосредственно создав переменные окружения. Поскольку вы также можете использовать файл + .env +
для настройки учетных данных базы данных для этого приложения, для вас имеет больше смысла делать это. Измените ваш рабочий каталог на клонированный проект и создайте файл + .env +
с помощью:
cd symfony-blog
sudo nano .env
Добавьте следующие строки в файл для настройки среды производственного приложения:
APP_ENV=prod
APP_DEBUG=0
+ APP_ENV +
- это переменная среды, которая указывает, что приложение находится в рабочем состоянии, а + APP_DEBUG +
- это переменная среды, которая указывает, должно ли приложение работать в режиме отладки или нет. Вы установили его в false на данный момент.
Сохраните файл и выйдите из редактора.
Затем установите расширение PHP, которое приложения Symfony используют для обработки XML:
sudo apt install php7.2-xml
Далее вам нужно установить зависимости проекта, запустить + composer install
:
cd /var/www/symfony-blog
composer install
Вы успешно настроили переменные среды и установили необходимые зависимости для проекта. Далее вы настроите учетные данные базы данных.
Шаг 4 - Настройка учетных данных базы данных
Чтобы получить данные из базы данных приложения, которую вы создали ранее, вам нужно будет установить и настроить необходимые учетные данные базы данных из приложения Symfony.
Снова откройте файл + .env +
:
sudo nano .env
Добавьте следующий файл в файл, который позволит вам легко подключаться и правильно взаимодействовать с базой данных. Вы можете добавить его сразу после строки + APP_DEBUG = 0 +
в файле + .env +
:
...
DATABASE_URL=mysql://:@localhost:3306/blog
Платформа Symfony использует стороннюю библиотеку под названием Doctrine для взаимодействия с базами данных. Doctrine предоставляет вам полезные инструменты, которые делают взаимодействие с базами данных простым и гибким.
Теперь вы можете использовать Doctrine для обновления вашей базы данных таблицами из клонированного приложения Github. Запустите эту команду, чтобы сделать это:
php bin/console doctrine:schema:update --force
Вы увидите следующий вывод:
OutputUpdating database schema...
4 queries were executed
[OK] Database schema updated successfully!
После настройки необходимых учетных данных и обновления схемы базы данных вы теперь можете легко взаимодействовать с базой данных. Чтобы запустить приложение с некоторыми данными, вы загрузите набор фиктивных данных в базу данных в следующем разделе.
Шаг 5 - Заполнение вашей базы данных с помощью Doctrine-Fixtures
На данный момент вновь созданные таблицы пусты. Заполните его, используя doctrine-fixtures. Использование Doctrine-Fixtures не является обязательным условием для приложений Symfony, оно используется только для предоставления фиктивных данных для вашего приложения.
Выполните следующую команду, чтобы автоматически загрузить данные тестирования, содержащие данные * author * и образец * post * в таблицу базы данных, созданную для блога:
php bin/console doctrine:fixtures:load
Вы получите предупреждение об очистке базы данных. Вы можете пойти дальше и набрать + Y +
:
OutputCareful, database will be purged. Do you want to continue y/N ? y
> purging database
> loading App\DataFixtures\ORM\Fixtures
В следующем разделе вы очистите и разогреете свой кеш.
Шаг 6 - Очистка и разогрев кеша
Чтобы приложение загружалось быстрее, когда пользователи отправляют запросы, рекомендуется подогревать кеш во время развертывания. Прогрев кеша генерирует страницы и сохраняет их для более быстрого ответа, а не для создания совершенно новых страниц. К счастью, у Symfony есть команда для очистки кеша, которая также запускает прогрев. Для этого выполните следующую команду:
php bin/console cache:clear
Вы увидите следующий вывод:
OutputClearing the cache for the prod environment with debug false
[OK] Cache for the "prod" environment (debug=false) was successfully cleared.
Вы завершите настройку чуть позже. Осталось только настроить веб-сервер. Вы сделаете это в следующем разделе.
Шаг 7 - Настройка веб-сервера и запуск приложения
К настоящему времени у вас установлен Nginx для обслуживания ваших страниц и MySQL для хранения ваших данных и управления ими. Теперь вы настроите веб-сервер, создав новый блок сервера приложений вместо редактирования по умолчанию.
Откройте новый блок сервера с помощью:
sudo nano /etc/nginx/sites-available/blog
Добавьте следующее содержимое в новый файл конфигурации блока сервера. Убедитесь, что вы заменили ++
в блоке сервера на IP-адрес вашего сервера:
/ И т.д. / Nginx / сайты Недоступные / блог
server {
listen 80;
listen [::]:80;
server_name blog ;
root /var/www/symfony-blog/public;
index index.php;
client_max_body_size 100m;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php {
try_files $uri /index.php =404;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.(?:ht|git|svn) {
deny all;
}
}
Сначала мы указали директивы + listen +
для Nginx, который по умолчанию используется для порта + 80 +
, а затем задали имя сервера, соответствующее запросам на IP-адрес сервера. Далее мы использовали директивы + root +
, чтобы указать корневой документ для проекта. Приложение + symfony-blog +
хранится в + / var / www / symfony-blog +
, но в соответствии с лучшими практиками мы установили для корневого веб-каталога значение + / var / www / symfony-blog / public +
как только подкаталог + / public +
должен быть подключен к Интернету. Наконец, мы настроили директиву location для обработки PHP.
После добавления содержимого сохраните файл и выйдите из редактора.
Чтобы включить вновь созданный блок сервера, нам нужно создать символическую ссылку из файла конфигурации нового блока сервера, расположенного в каталоге + / etc / nginx / sites-available +
, в каталог + + etc / nginx / sites-enabled + ` используя следующую команду:
sudo ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/
Проверьте новый файл конфигурации на наличие синтаксических ошибок, выполнив:
sudo nginx -t
Эта команда выведет ошибки на консоль, если они есть. Если ошибок нет, выполните эту команду для перезагрузки Nginx:
sudo systemctl reload nginx
Вы только что завершили последний шаг, необходимый для успешного развертывания приложения Symfony 4. Вы настроили веб-сервер, создав блок сервера и правильно установив корневой веб-каталог, чтобы сделать веб-приложение доступным.
Наконец, теперь вы можете запустить и протестировать приложение. Посетите + http: // +
в вашем любимом браузере:
На следующем рисунке показан снимок экрана приложения блога Symfony, который вы должны увидеть по IP-адресу вашего сервера:
изображение: https: //assets.digitalocean.com/articles/symfony4-1804/EQQNuIv.png [альтернативный снимок экрана приложения блога Symfony]
Заключение
Symfony - это многофункциональный PHP-фреймворк с архитектурой, которая делает веб-разработку интересной для разработчика, который создает программное обеспечение с его использованием. Symfony - это многофункциональная среда веб-разработки, которая предоставляет разработчикам мощные инструменты для создания веб-приложений. Это часто считается хорошим выбором для корпоративных приложений из-за его гибкости. Шаги для развертывания типичного приложения Symfony различаются в зависимости от настроек, сложности и требований приложения.
В этом руководстве вы вручную развернули приложение Symfony 4 на рабочем месте на сервере Ubuntu 18.04, работающем под управлением LEMP. Теперь вы можете применить эти знания для развертывания ваших собственных приложений Symfony.