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