Развертывание сайта Symfony 2.5.3 на производственном сервере

Я работал над сайтом в среде разработки, построенной на основе инфраструктуры Symfony, и теперь пришло время развернуть его на живом сайте, в среде разработки мы запускаем команду php app/console server:run чтобы запустить веб-сайт, но я не уверен, что нужно сделать, чтобы пользователь увидел содержимое веб-сайта на живом сервере, после того, как я загрузил код на живой сервер, все, что я вижу, это структура корневого каталога Symfony, я прошел через Как развернуть приложение Symfony и я чешу голову, потому что должно быть что-то еще, потому что после выполнения шагов ничего не изменилось, и я все еще вижу структуру каталогов.

Я заметил, что когда я нажимаю на веб-папку, я вижу веб-сайт, поэтому я создал следующее .htaccess файл, который работает, но URL выглядит www.domain.com/web как я могу просто сделать это www.domain.com

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ web/$1 [QSA,L]
</IfModule>

Я буду очень признателен, если я смогу получить некоторую помощь здесь, если это поможет, я пытаюсь развернуть на сервере под управлением Linux с использованием Apache.

РЕШЕНИЕ
Добавьте следующее в ваш .htaccess файл, и он будет работать, так как именно это решило мою проблему, и, пожалуйста, не забудьте очистить кеш браузера

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
</IfModule>

1

Решение

Если вы работаете с Ubuntu, сделайте следующее

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

изменить корень документа на и сохранить

  DocumentRoot /var/www/html/web

Тогда беги

  sudo service apache2 restart

Тогда беги

 cd /var/www/html

php app/console cache:clear --env=prod --no-debug

все сделано

2

Другие решения

Я не знаю, как это делается профессионально, потому что я не использую Symfony, но я расскажу вам, как я это делал, когда тестировал Linux.

Допустим, у вас есть www каталог в /home/user/www/ (это не имеет значения) Я бы поместил весь каталог Symfony (со всей структурой каталогов) в какой-то другой каталог (скажем, /home/user/applications/my-symfony-webpage — последним является ваш каталог со структурой файлов Symfony).

Последнее, что вам нужно сделать, чтобы заставить его работать, это создать символическую ссылку, которая будет направлять /home/user/www/ в /home/user/applications/my-symfony-webpage/web,

Это можно сделать с помощью этой команды: ln -s /home/user/applications/my-symfony-webpage/web /home/user/www/ (Я думаю, вам нужно сначала удалить каталог www, если он предназначен только для установки Symfony).

Это мое решение, я сомневаюсь, что оно единственное и, возможно, не самое лучшее. Я думаю, что вы можете создать перенаправления с Apache, чтобы направить некоторые домены в какой-то каталог в вашей файловой структуре (в вашем случае web каталог конечно). Вы можете посмотреть это онлайн.

1

Вы должны настроить свой Apache, чтобы указать папку вашего проекта web как корень документа.

Вы можете найти информацию о настройке вашего сервера здесь: Настройка веб-сервера (Symfony CookBook)

1

После следования всем Как развернуть приложение Symfony, в корне вашего приложения Symfony создайте .htaccess файл и добавьте в него следующий код, вот что решило мою проблему.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteCond %{REQUEST_URI} !web/
RewriteRule (.*) /web/$1 [L]
</IfModule>
1
По вопросам рекламы [email protected]