Технические требования
Убедитесь, что ваш сервер соответствует необходимым техническим требованиям для развертывания приложения 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