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

Как управлять основным сайтом и несколькими виртуальными хостами на одном сервере

У меня стандартная установка Ubuntu. Веб-корень Apache - / var / www.

Я хочу разместить свой «основной» сайт и несколько других.

Обычно я помещал файлы для mysite.com прямо в корневой каталог. Однако, если я хочу разместить несколько сайтов, это может стать беспорядочным. Похоже, у меня получится такая структура:

Файлы моего "основного" сайта:

/var/www/index.html
/var/www/images/
/var/www/js/

и т.д...

а затем мои виртуальные сайты, такие как:

/var/www/somesite/ #somesite's files in here
/var/www/foobar/ #foobar's files in here

Как мне организовать такую ​​установку? Смешивание файлов с основного сайта с каталогами для сайтов виртуального хоста кажется неправильным и беспорядочным. Я думал о том, чтобы поместить мой «основной» сайт в отдельный каталог в корневом веб-каталоге (например, «somesite» и «foobar» выше), но тогда люди, посещающие мой IP-адрес, получат корневой веб-сайт без каких-либо файлов сайта в нем. Должен ли я сделать это, а затем перенаправить что-либо с основного IP в каталог «основного» сайта? Может с htaccess? Может, в конфигурации apache где-нибудь?

Как бы вы к этому подойти?


Что я в итоге сделал (благодаря предложениям ниже, все из которых были полезны) ...

Вот что такое конфигурационный файл (/etc/apache2/sites-enabled/default) изначально:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
<Directory /var/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

Изменив его на:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

DocumentRoot /var/www/mysite/public
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
<Directory /var/www/mysite/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

Мне удалось получить посещения для перехода на "mysite.com" (у меня есть общедоступные файлы, public каталог, поэтому я могу иметь некоторые системные файлы на одном уровне и не доступны в Интернете)

Затем я создал другой сайт на next.mysite.com, создав новый файл конфигурации в /etc/apache2/sites-enabled/nextconfig это выглядит так:

<VirtualHost *:80>
DocumentRoot /var/www/next
<Directory "/var/www/next">
allow from all
Options +Indexes
</Directory>
ServerName next.mysite.com
</VirtualHost>

Смешивать не нужно. Ни капли.

Поместите каталог виртуального хоста в /var/vh1 /var/vh2 и так далее. Необязательно размещать их все в /var/www

Пример:

Listen 80

# This is the "main" server running on 172.20.30.40
ServerName server.domain.com
DocumentRoot /www/mainserver

# This is the other address
NameVirtualHost 172.20.30.50

<VirtualHost 172.20.30.50>
DocumentRoot /www/example1
ServerName www.example.com

# Other directives here ...

</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example.org

# Other directives here ...

</VirtualHost>

Я взял это из Apache сама страница. Так что это довольно надежно.

Поместите «основной» сайт в подкаталог /var/www а также измените конфигурацию Apache, чтобы отразить его новое местоположение.

Я лично считаю, что вам просто нужно сделать папку /var/Www/main для вашего собственного сайта. Тогда легче уследить.

Просто создайте виртуальный хост для своего основного сайта и укажите его в новой папке.