Назад | Перейти на главную страницу

Виртуальные хосты и поддомены Apache

Я пытаюсь создать поддомен для проекта, над которым работаю, projectx.cairocubicles.com, этот URL указывает на сервер, отличный от того, на котором www.cairocubicles.com. На сервере, на который указывает субдомен, установлен apache со следующим виртуальным хостом:

    <VirtualHost *:80>
  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin webmaster@cairocubicles.com
  ServerName  www.project1.cairocubicles.com


  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /home/project1/web/public
    <Directory /home/project1/web/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        AcceptPathInfo On
        Order allow,deny
        Allow from all
    </Directory>


  # Custom log file locations
  LogLevel warn
  ErrorLog  /home/project1/web/log/error.log
  CustomLog /home/project1/web/log/access.log combined

</VirtualHost>

Но теперь при просмотре project1.cairocubicles.com я получаю другой веб-сайт (другой веб-сайт в списках виртуальных хостов). Я тоже пробовал менять ServerName www.project1.cairocubicles.com к ServerName project1.cairocubicles.com но затем я получил ошибку 403 Forbidden. Какие-нибудь подсказки?

Спасибо.

-Убедитесь, что вы выполнили перезагрузку или перезагрузку с apache2 / httpd после ЛЮБЫХ изменений в конфигурации

-Убедитесь, что / home / project1 / web / public существует и разрешение 664 (выполнить это рекурсивно с -R)

-Убедитесь, что владельцем и группой файлов является apache2 / httpd (в зависимости от дистрибутива), обычно идентификатор пользователя 33

-Убедитесь, что IP-адрес, на который указывает project1.cairocubicles.com, правильный.

-Я вообще избегаю www. субдомен с существующим субдоменом (не по техническим причинам, это просто выглядит беспорядочно)

-Для тестирования создайте файл с именем phpinfo.php, и пусть он содержит только следующие

 <?php
     phpinfo();
 ?>

и загрузить только это (так что http://project1.cairocubicles.com/phpinfo.php)

-Вы должны убедиться, что вы изменили информацию о владельце и группе в папках. Попробуйте выполнить следующую команду (расширяя пункт 3 выше):

sudo chown apache2 /home/project1/public -R 

и

sudo chgrp apache2 /home/project1/public -R 

если команды говорят, что пользователь apache2 не существует, замените его на httpd. Если процесс apache2 (запущенный как пользователь apache2) не может читать / выполнять файлы, могут возникнуть ошибки (например, 403 запрещено).

Другой способ обойти это - добавить вашего пользователя в группу apache2. Это немного сложнее правильно настроить, хотя

Просто быстрый снимок в темноте, но это может быть проблема SELinux. Когда вы переходите на сайт, который вы настроили как ServerName, отображается ли что-нибудь в журналах конкретного сайта? Что-нибудь отображается в /var/log/http/error.log?

Пытаться:

ServerName project1.cairocubicles.com
ServerAlias www.project1.cariocubicles.com

Убедитесь, что пользователь, от имени которого запущен apache, имеет доступ для чтения к каталогу / home / project1 / web / public.

Если домен не указан как ServerName или ServerAlias, он будет загружаться с первого определенного VirtualHost. Поэтому в первом случае вы оказались не на том сайте.

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

так что теперь это сработало, когда я дал домашнему каталогу в / home / userx разрешение o + x, это безопасно, почему ему нужно разрешение на выполнение для всех

Мне нужно было убедиться, что я изменил информацию о владельце и группе в папках с помощью следующей команды: chown apache2 / home / project1 / public -R и chgrp apache2 / home / project1 / public -R, если команды говорят, что пользователь apache2 не существует, замените его на httpd. Это причина, по которой он не работает в домашнем каталоге (принадлежащем вашему пользователю) и не работает в каталоге / var / www (принадлежит apache2). Я бы рекомендовал создать символическую ссылку в / var / www /, указывающую на ваш домашний каталог. Это стандартное дело. (другим легче увидеть, что происходит)