Найти тему
Symfony Topsite Web

Деплой приложения Symfony на Apache2

Технические требования

Убедитесь, что ваш сервер соответствует необходимым техническим требованиям для развертывания приложения Symfony на Apache2:

Убедитесь, что у вас установлена ​​соответствующая версия PHP и совместимая база данных.

Убедитесь, что установлены все необходимые расширения PHP. Вы можете найти файл php.ini, следуя по этому пути:

/etc/php/8.1/apache2/php.ini

В файле php.ini убедитесь, что все необходимые расширения раскомментированы, чтобы включить их.

Установите правильный часовой пояс в разделе [Date] файла php.ini:

[Date]
; Defines the default time zone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Moscow

После внесения этих изменений перезапустите сервер Apache с помощью следующей команды:

sudo service apache2 restart

Установка Symfony CLI

Установите Symfony CLI так, как вам удобно, перейдя по этой ссылке .

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

curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | sudo -E bash
sudo apt install symfony-cli

Убедитесь, что Symfony CLI правильно установлен, проверив требования:

symfony check:requirements

Проверьте, какая версия php используется снова:

php -i
symfony local:php:list

Клонируйте свой проект

Чтобы клонировать проект в корневой каталог (/var/www/…), у вас есть два варианта:

1. Использование FileZilla:

Если вы предпочитаете использовать FileZilla, выполните следующие действия:

  • Убедитесь, что ваше имя пользователя имеет полное право доступа к корневому каталогу.
  • Откройте FileZilla и подключитесь к своему серверу, используя соответствующие учетные данные.
  • Перейдите в корневой каталог (/var/www/…) и создайте новую папку для своего проекта.
  • Загрузите все файлы и папки проекта во вновь созданную папку.

2. Использование Git (Gitlab/Github): (рекомендуется)

Если вы предпочитаете использовать Git для клонирования вашего проекта, выполните следующую команду:

git clone -b <branchname> <remote-repo-url>

Замените <branchname> на имя ветки, которую вы хотите клонировать, и <remote-repo-url> на URL-адрес вашего репозитория.

После запуска команды git clone терминал предложит вам ввести имя пользователя и пароль для аутентификации.

Symfony среда PROD

Если вы еще не подготовили среду, выполните следующие действия.

Во-первых, убедитесь, что у вас есть права на каталог вашего проекта:

sudo chown user:user /var/www/your-project

Запустите свое приложение для производства, экспортировав переменную SYMFONY_ENV:

export SYMFONY_ENV=prod

Установите необходимые зависимости Composer для производства с помощью следующей команды:

cd /var/www/your_project
symfony composer install --no-dev --optimize-autoloader

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

Измените файл .env, чтобы он соответствовал вашей рабочей среде:

###> symfony/framework-bundle ###
APP_ENV=prod

Также отредактируйте URL-адрес подключения к базе данных:

DATABASE_URL="postgresql://user_name:password@127.0.0.1:5432/database_name?serverVersion=13&charset=utf8"

(Замените user_name, password и database_name своими фактическими учетными данными базы данных.)

Примечание. Имя пользователя должно быть владельцем вашей базы данных на сервере.

Убедитесь, что определенные пакеты доступны только в среде разработки, например DebugBundle, WebProfilerBundle и MakerBundle. Вы можете настроить это в файле config/bundles.php, например:

Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],

Конфигурация базы данных

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

Переключитесь на пользователя PostgreSQL и создайте новую базу данных с указанным владельцем:

sudo su – postgres
createdb –encoding=UNICODE –owner =user_name database_name

(Замените user_name на нужного владельца базы данных, а database_name на имя пустой базы данных.)

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

grant all privileges on database dbname to dbuser;

(Замените dbuser на пользователя, которому вы хотите предоставить доступ.)

Теперь проверьте файл сопоставления в вашем приложении Symfony.

Перейдите в каталог вашего приложения Symfony:

cd /var/www/your_app
php app/console doctrine:schema:validate

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

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

[Mapping] OK - The mapping files are correct.
[Database] FAIL - The database schema is not in sync with the current mapping file.

Теперь у вас есть два варианта синхронизации схемы базы данных:

Создайте новую схему с помощью Doctrine:

cd /var/www/your_app
php app/console doctrine:schema:create

Загрузите файл дампа (dumpdb.sql) в папку /tmp на вашем сервере.

Переключитесь на пользователя PostgreSQL:

sudo su – postgres
psql
psql -d dbname < /tmp/dumpdb.sql

(Замените dbname именем целевой базы данных.)

Проверьте свою базу данных.

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

\l
\c your_database_name
\dt

Для дальнейшей проверки вы можете проверить любую конкретную таблицу, используя:

SELECT * from any_table;

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

cd /var/www/your_app
php app/console doctrine:schema:validate

Наконец, очистите кеш, чтобы все изменения вступили в силу:

php bin/console cashe:clear

Настройка веб-сервера

Давайте установим пакет Symfony Apache с помощью этой команды:

composer require symfony/apache-pack

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

cd /etc/apache2/sites-available
sudo mv 000-default.conf default-bkp.conf

Создайте новый файл для замены старого:

sudo nano /etc/apache2/sites-available/000-default.conf

Минимальная конфигурация для запуска вашего приложения под Apache2:

<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld

DocumentRoot /var/www/yourapp/public
DirectoryIndex /index.php

<Directory /var/www/yourapp/public>
AllowOverride None
Order Allow,Deny
Allow from All
FallbackResource /index.php
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Для получения дополнительной информации вы можете обратиться по этой ссылке .

После настройки пользовательского сайта Apache перезапустите сервер, чтобы изменения вступили в силу:

sudo service apache2 restart

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц