unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
проблемы с Apache виртуальные хосты [Решено]
проблемы с Apache виртуальные хосты [Решено]
Сообщение BOPOH_Inc » 05.01.2009 00:48
Всем доброго времени суток.
Установил я связку Apache+PHP+MySQL с репозиториев. Настроил PHP, MySQL доустановил все необходимые мне модули и так далее. Всё работает.
При обращении в браузере кпо адресу localhost открывается «It Works». В этой же директории я проверял работу PHP и остальное. Далее потребовалось создать виртуальные хосты. Я начал с малого, создал первый. Используя YaST и документацию на ru.opensuse.org я создал виртуальный хост. Результата не принесло. Хост не открывается. Покопавшись в поиске нашел подоюную тему где посоветовали прописать имя хоста в /etc/hosts в виде 127.0.0.1 name_vhost. Что я и сделал. Виртуальный хост заработал. Но проблема все обращения к localhost идут в директорию этого виртуального хоста. Если создать ещё несколько виртуальных то обращения к любому из них будут вести в директорию первого хоста (это я узнал из /var/log/apache2/error_log), ну а в браузере естественно сообщение — «Object not found! The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again. If you think this is a server error, please contact the webmaster. «. Что это глюк или я что-то намудрил. Подскажите пожалуйста.
. # If possible, avoid changes to this file. It does mainly contain Include # statements and global settings that can/should be overridden in the # configuration of your virtual hosts. # Quickstart guide: # http://www.opensuse.org/Apache_Howto_Quickstart # Overview of include files, chronologically: # # httpd.conf # | # |— uid.conf . . . . . . . . . . . . . . UserID/GroupID to run under # |— server-tuning.conf . . . . . . . . . sizing of the server (how many processes to start, . ) # |— sysconfig.d/loadmodule.conf . . . . . [*] load these modules # |— listen.conf . . . . . . . . . . . . . IP adresses / ports to listen on # |— mod_log_config.conf . . . . . . . . . define logging formats # |— sysconfig.d/global.conf . . . . . . . [*] server-wide general settings # |— mod_status.conf . . . . . . . . . . . restrict access to mod_status (server monitoring) # |— mod_info.conf . . . . . . . . . . . . restrict access to mod_info # |— mod_usertrack.conf . . . . . . . . . defaults for cookie-based user tracking # |— mod_autoindex-defaults.conf . . . . . defaults for displaying of server-generated directory listings # |— mod_mime-defaults.conf . . . . . . . defaults for mod_mime configuration # |— errors.conf . . . . . . . . . . . . . customize error responses # |— ssl-global.conf . . . . . . . . . . . SSL conf that applies to default server _and all_ virtual hosts # | # |— default-server.conf . . . . . . . . . set up the default server that replies to non-virtual-host requests # | |—mod_userdir.conf . . . . . . . . enable UserDir (if mod_userdir is loaded) # | `—conf.d/apache2-manual?conf . . . add the docs (‘?’ = if installed) # | # |— sysconfig.d/include.conf . . . . . . [*] your include files # | (for each file to be included here, put its name # | into APACHE_INCLUDE_* in /etc/sysconfig/apache2) # | # `— vhosts.d/ . . . . . . . . . . . . . . for each virtual host, place one file here # `— *.conf . . . . . . . . . . . . . (*.conf is automatically included) # # # Files marked [*] are created from sysconfig upon server restart: instead of # these files, you edit /etc/sysconfig/apache2 # Filesystem layout: # # /etc/apache2/ # |— charset.conv . . . . . . . . . . . . for mod_auth_ldap # |— conf.d/ # | |— apache2-manual.conf . . . . . . . conf that comes with apache2-doc # | |— mod_php4.conf . . . . . . . . . . (example) conf that comes with apache2-mod_php4 # | `— . . . . . . . . . . . . . . . . other configuration added by packages # |— default-server.conf # |— errors.conf # |— httpd.conf . . . . . . . . . . . . . top level configuration file # |— listen.conf # |— magic # |— mime.types -> ../mime.types # |— mod_autoindex-defaults.conf # |— mod_info.conf # |— mod_log_config.conf # |— mod_mime-defaults.conf # |— mod_perl-startup.pl # |— mod_status.conf # |— mod_userdir.conf # |— mod_usertrack.conf # |— server-tuning.conf # |— ssl-global.conf # |— ssl.crl/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificate Revocation Lists (CRL) # |— ssl.crt/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificates # |— ssl.csr/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificate Signing Requests # |— ssl.key/ . . . . . . . . . . . . . . PEM-encoded RSA Private Keys # |— ssl.prm/ . . . . . . . . . . . . . . public DSA Parameter Files # |— sysconfig.d/ . . . . . . . . . . . . files that are created from /etc/sysconfig/apache2 # | |— global.conf # | |— include.conf # | `— loadmodule.conf # |— uid.conf # `— vhosts.d/ . . . . . . . . . . . . . . put your virtual host configuration (*.conf) here # |— vhost-ssl.template # `— vhost.template ### Global Environment ###################################################### # # The directives in this section affect the overall operation of Apache, # such as the number of concurrent requests. # run under this user/group id Include /etc/apache2/uid.conf # — how many server processes to start (server pool regulation) # — usage of KeepAlive Include /etc/apache2/server-tuning.conf # ErrorLog: The location of the error log file. # If you do not specify an ErrorLog directive within a # container, error messages relating to that virtual host will be # logged here. If you *do* define an error logfile for a # container, that host’s errors will be logged there and not here. ErrorLog /var/log/apache2/error_log # generated from APACHE_MODULES in /etc/sysconfig/apache2 Include /etc/apache2/sysconfig.d/loadmodule.conf # IP addresses / ports to listen on Include /etc/apache2/listen.conf # predefined logging formats Include /etc/apache2/mod_log_config.conf # generated from global settings in /etc/sysconfig/apache2 Include /etc/apache2/sysconfig.d/global.conf # optional mod_status, mod_info Include /etc/apache2/mod_status.conf Include /etc/apache2/mod_info.conf # optional cookie-based user tracking # read the documentation before using it!! Include /etc/apache2/mod_usertrack.conf # configuration of server-generated directory listings Include /etc/apache2/mod_autoindex-defaults.conf # associate MIME types with filename extensions TypesConfig /etc/apache2/mime.types DefaultType text/plain Include /etc/apache2/mod_mime-defaults.conf # set up (customizable) error responses Include /etc/apache2/errors.conf # global (server-wide) SSL configuration, that is not specific to # any virtual host Include /etc/apache2/ssl-global.conf # forbid access to the entire filesystem by default Options None AllowOverride None Order deny,allow Deny from all # use .htaccess files for overriding, AccessFileName .htaccess # and never show them Order allow,deny Deny from all # List of resources to look for when the client requests a directory DirectoryIndex index.html index.html.var ### ‘Main’ server configuration ############################################# # # The directives in this section set up the values used by the ‘main’ # server, which responds to any requests that aren’t handled by a # definition. These values also provide defaults for # any containers you may define later in the file. # # All of these directives may appear inside containers, # in which case these default settings will be overridden for the # virtual host being defined. # Include /etc/apache2/default-server.conf # Another way to include your own files # # The file below is generated from /etc/sysconfig/apache2, # include arbitrary files as named in APACHE_CONF_INCLUDE_FILES and # APACHE_CONF_INCLUDE_DIRS Include /etc/apache2/sysconfig.d/include.conf ### Virtual server configuration ############################################ # # VirtualHost: If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most configurations # use only name-based virtual hosts so the server doesn’t need to worry about # IP addresses. This is indicated by the asterisks in the directives below. # # Please see the documentation at # # for further details before you try to setup virtual hosts. # # You may use the command line option ‘-S’ to verify your virtual host # configuration. # Include /etc/apache2/vhosts.d/*.conf # Note: instead of adding your own configuration here, consider # adding it in your own file (/etc/apache2/httpd.conf.local) # putting its name into APACHE_CONF_INCLUDE_FILES in # /etc/sysconfig/apache2 — this will make system updates # easier
Источник
Настройка виртуальных хостов Apache
Apache — это один из самых популярных веб-серверов для размещения сайтов на хостингах и VPS, а также для создания тестовых окружений. Если на вашем сервере один сайт, то все довольно просто, все запросы, поступающие к серверу, отправляется этот единственный сайт. А что если сайтов несколько? Как Apache будет понимать кому адресован запрос?
Для решения этой задачи есть виртуальные хосты. В этой статье мы поговорим о том, как выполняется настройка виртуальных хостов Apache, а также как все это работает.
Как работают виртуальные хосты Apache?
Не будем пока о локальных системах. Если у вас есть веб-сайт, то наверное, вы занимались парковкой домена и уже знаете как все настраивается. Сначала используется DNS сервер, который выдает IP адрес вашего сервера всем клиентам, запросившим адрес этого домена. Затем клиенты отправляют запрос на ip вашего сервера, а веб-сервер уже должен его обработать.
Обычно, на хостингах один веб-сервер обслуживает десятки, а то и сотни сайтов. И как вы понимаете, все запросы поступают на один ip. Для распределения их между папками на сервере используется имя домена, которое передается вместе с запросом в HTTP заголовке «Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.
Вы настраиваете виртуальные хосты Apache, а затем веб-сервер сравнивает домен, переданный в заголовке «Host» с доступными виртуальными доменами и если находит совпадение, то возвращает содержимое настроенной папки или содержимое по умолчанию, или ошибку 404. Нужно сказать, что вы можете настроить виртуальный хост для любого домена, например, vk.com или losst.ru. Но пользователи смогут получить доступ к этому домену у вас, только если к вам будут поступать запросы от браузеров, в которых будет значиться этот домен. А теперь детальнее про настройку.
Настройка виртуальных хостов Apache?
Я уже подробно рассматривал как настроить Apache в отдельной статье. Поэтому не буду полностью расписывать здесь все конфигурационные файлы. Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:
Ясно, что это разделение очень условно. Вы можете его убрать и добавлять свои виртуальные хосты прямо в основной конфигурационный файл. Все файлы из этих папок подключаются к нему с помощью директив Include. Но ведь так намного удобнее. В папке sites-available находятся все конфигурационные файлы, но они пока еще не активированы и отсюда не импортируются никуда. При активации нужного хоста на него просто создается ссылка в папку /etc/apache2/sites-enabled.
Для примера, создадим новый конфигурационный файл для виртуального хоста site1.ru. Для этого просто скопируем существующую конфигурацию для хоста по умолчанию — 000-default:
$ sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/site1.ru.conf
Сначала рассмотрим синтаксис того, что вы увидите в этом файле:
адрес_хоста_для прослушивания : порт >
ServerName домен
ServerAlias псевдоним_домена
ServerAdmin емейл@администратора
DocumentRoot /путь/к/файлам/сайта
ErrorLog /куда/сохранять/логи/ошибок/error.log
CustomLog /куда/сохранять/логи/доступа/access.log combined
Это минимальная конфигурация, которую вам нужно указать, чтобы создать виртуальный хост Apache. Конечно, здесь вы можете использовать и другие директивы Apache, такие как Deny, Allow и многие другие. А теперь рассмотрим наш пример для тестового сайта site1.ru:
ServerName site1.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/site1.ru/
ErrorLog $
CustomLog $
Здесь мы используем звездочку вместо ip адреса, это значит, что веб-сервер будет слушать соединения на всех адресах, как на внешнем, так и на localhost. Порт 80, это порт по умолчанию. Затем указываем домен, электронный адрес администратора, и путь к папке, в которой будут находиться данные сайта. Две строчки Log говорят куда сохранять логи, но добавлять их необязательно. Дальше, нам нужно активировать этот хост. Мы можем вручную создать ссылку или использовать уже заготовленную команду:
sudo a2ensite site1.ru
Затем перезапустите Apache:
sudo systemctl restart apache2
И нам осталось все это протестировать. Если ваш сервер имен еще не направляет запросы к домену на ваш ip, а вы хотите уже проверить как все работает, можно пойти обходным путем. Для этого достаточно внести изменения в файл /etc/hosts на машине, с которой вы собрались открывать сайт. Этот файл, такой себе локальный DNS. Если компьютер находит ip для домена в нем, то запрос в интернет уже не отправляется. Если вы собираетесь тестировать с той же машины, на которую установлен Apache2, добавьте:
sudo vi /etc/hosts
Если же это будет другой компьютер, то вместо 127.0.0.1 нужно использовать адрес вашего сервера, на котором установлен Apache. Затем можете открыть сайт в браузере:
Настройка виртуальных хостов с SSL
Если вы хотите использовать современный безопасный протокол https для работы вашего виртуального хоста, то вам кроме обычного хоста на порту 80 будет необходимо создать виртуальный хост на порту 443. Здесь будет не так много отличий, вот пример, для нашего сайта site1.ru:
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName site1.ru
ErrorLog $
CustomLog $
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLOptions +StdEnvVars
Теперь о каждой новой строчке более подробно:
- — весь код в этой секции будет выполнен только в том случае, если активирован модуль mod_ssl. Это нужно для безопасности, чтобы если модуль не активирован, то код не вызывал ошибок;
- SSLEngine — включает поддержку SSL;
- SSLCertificateFile, SSLCertificateKeyFile — пути к файлам сертификата и приватного ключа;
- SSLOptions — для скриптов php, cgi и других мы передаем стандартные SSL опции.
Вот и все. Как видите, не так сложно. Осталось перезапустить Apache и проверить как все работает:
sudo a2enmod ssl
sudo a2ensite site1.ru-ssl
sudo systemctl restart apache2
Затем откройте https адрес в браузере:
Выводы
В этой статье мы рассмотрели как выполняется настройка виртуальных хостов Apache. Как видите, один веб-сервер может обслуживать сотни сайтов, а создание виртуальных хостов apache совсем не сложно. Надеюсь, эта статья была вам полезной. Если у вас остались вопросы, спрашивайте в комментариях!
Источник