Symfony: много проектов в разных областях

Я изучаю Symfony прямо сейчас. Я создал 2 проекта Symfony с 2 разными доменами. Тем не менее, мой второй домен указывает на первый, и не знаю, почему.

Я следую этому руководству, известному jobeet: http://www.symfony-project.org/jobeet/1 ... rine/en/01

Обратите внимание на мои конфигурации:

Мой /etc/apache2/httpd.conf

ServerName localhost

#From the symfony tutorial "jobeet"
# Be sure to only have this line once in your configuration
NameVirtualHost 127.0.0.1:8080

# This is the configuration for your project
<VirtualHost 127.0.0.1:80>
 ServerName www.jobeet.com.localhost
 DocumentRoot "/home/lola/sfprojects/jobeet/web"
 DirectoryIndex index.php
 <Directory "/home/lola/sfprojects/jobeet/web">
    AllowOverride All
    Allow from All
 </Directory>
 Alias /sf /home/lola/sfprojects/jobeet/lib/vendor/symfony/data/web/sf
<Directory "/home/lola/sfprojects/jobeet/lib/vendor/symfony/data/web/sf">
    AllowOverride All
   Allow from All
 </Directory>
</VirtualHost>


#Another symfony tutorial
NameVirtualHost 127.0.0.1:8081

<VirtualHost 127.0.0.1:80>
ServerName www.tutorial.com.localhost
DocumentRoot "/home/sfprojects/tutorial/web"
  DirectoryIndex index.php
  <Directory "/home/sfprojects/tutorial/web">
    AllowOverride All
    Allow from All
  </Directory>
  Alias /sf /home/lola/sfprojects/tutorial/lib/vendor/symfony/data/web/sf
  <Directory "/home/lola/sfprojects/tutorial/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

Обратите внимание, что я прослушиваю порт 8081 в домене tutorial. Я попробовал перестановку VirtualHost 127.0.0.1:80 и VirtualHost 127.0.0.1:81. Ни один из них не работал. (действительно не знаю, какое использование)

Мои /etc/hosts:

#From the symfony tutorial
127.0.0.1 www.jobeet.com.localhost

#From ANOTHER symfony tutorial
127.0.0.1 www.tutorial.com.localhost

После этого я перезапустил Apache.

Теперь, когда я это сделаю: http://www.jobeet.com.localhost/frontend_dev.php/ Я иду к своим обучающим материалам Jobeet, НО когда я делаю http://www.tutorial.com.localhost/frontend_dev.php/ Я ТАКЖЕ захожу на страницу Jobeet. Я должен перейти к той, которая содержит часть tutorial.

Почему не не работает??!


person Kani    schedule 01.02.2012    source источник
comment
это больше похоже на проблему с веб-сервером (apache) ....   -  person Vlad Jula-Nedelcu    schedule 01.02.2012
comment
Это была моя ошибка. Выложу через 8 часов -т.к. репутация у меня меньше 100- Так что на завтра поставлю ответ. Короткий: NameVirtualHost должен вызываться ОДИН раз, например, NameVirtualHost:80.   -  person Kani    schedule 02.02.2012
comment
Могу ли я предложить, если вы изучаете Symfony в первый раз, вместо этого вы должны изучить Symfony2. Symfony 1 больше не будет поддерживаться через год.   -  person lonesomeday    schedule 02.02.2012
comment
Спасибо! На самом деле я изучаю оба! Тем не менее, проекты компании, в которой я работаю, находятся в версии 1.4. Они не хотят мигрировать на 2, потому что боятся сломать систему (она ОГРОМНА и предоставляет услуги половине континента). Так что у меня сейчас нет выбора :/   -  person Kani    schedule 02.02.2012


Ответы (2)


Что ж:

В /etc/apache2/httpd.conf достаточно:

 NameVirtualHost 127.0.0.1:80

Я повторил эту команду при создании другого ServeName (учебник). Может, в этом и был конфликт. Я оставил все в порту 80. Теперь это разрешается правильно.

Итак, это окончательный файл /etc/apache2/httpd.conf:

ServerName localhost

NameVirtualHost 127.0.0.1:80

# This is the configuration for your project
<VirtualHost 127.0.0.1:80>
 ServerName www.jobeet.com.localhost
 DocumentRoot "/home/lola/sfprojects/jobeet/web"
 DirectoryIndex index.php
 <Directory "/home/lola/sfprojects/jobeet/web">
    AllowOverride All
    Allow from All
 </Directory>
 Alias /sf /home/lola/sfprojects/jobeet/lib/vendor/symfony/data/web/sf
<Directory "/home/lola/sfprojects/jobeet/lib/vendor/symfony/data/web/sf">
   AllowOverride All
   Allow from All
</Directory>
</VirtualHost>


#Another symfony tutorial
# DO NOT REPEAT NameVirtualHost 127.0.0.1:80 --------> ****HERE: do not repeat this****

<VirtualHost 127.0.0.1:80>
ServerName www.tutorial.com.localhost
DocumentRoot "/home/sfprojects/tutorial/web"
  DirectoryIndex index.php
  <Directory "/home/sfprojects/tutorial/web">
    AllowOverride All
    Allow from All
  </Directory>
  Alias /sf /home/lola/sfprojects/tutorial/lib/vendor/symfony/data/web/sf
  <Directory "/home/lola/sfprojects/tutorial/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
 </VirtualHost>

/etc/hosts (или /etc/apache2/sites-avaiable для debian) — то же самое.

Я могу получить доступ к www.jobeet.com.localhost и www.tutorial.com.localhost

Извините, это была моя неправильная конфигурация.

person Kani    schedule 02.02.2012

  1. Распространенной ошибкой является отключение модуля виртуального хоста для apache, для его включения попробуйте: sudo a2enmod virtualhost

  2. поместите свой vhost conf в /etc/apache2/sites-available/name-file-with-vhost-conf

  3. все виртуальные хосты должны быть включены, с sudo a2ensite name-file-with-vhost-conf

  4. apache2 необходимо перезагрузить sudo service apache2 reload

вы можете попробовать это github/rokemaster/virtual_hosts — все шаги в одном скрипте

person rkmax    schedule 02.02.2012
comment
будет ли разница делать это в /sites-aviables rather чем в /etc/hosts? - person Kani; 02.02.2012
comment
/sites-available/это место, где apache читает конфигурацию vhost, а /etc/hosts файл является статическим DNS для ОС и необходим для правильной работы виртуального хоста. - person rkmax; 03.02.2012