Виртуальные хосты Apache2, доступные из локальной сетиБлог MerinovKV
С недавних пор пришлось озаботиться доступом к сайтам на локалхосте из локальной сети. Кому-то эго потешить, кому-то дать доступ к внутрикорпоративному порталу, кому-то просто, чтобы дома можно было работать не только за одним компьютером.
Итак, поехали.
Будем считать, что у нас есть сайт на виртуальном хосте. Например,, пусть это будет site.loc. Также даны два компьютера — один под Open SUSE (Apache2 + PHP + MySQL, IP: 192.168.0.100, например), второй — под WinXP (пусть это будет ноутбук, если кому-то интересно). Мне нужно, чтобы я мог зайти в phpMyAdmin и работать с админкой site.loc c ноутбука. Ну, или просто посмотреть из-под винды, как оно будет выглядеть 🙂
Настроим сеть
Для начала, на компьютере, откуда хотим получить доступ (в нашем случае, с WinXP), открываем файл C:/Windows/System32/drivers/etc/hosts и добавляем строчку после 127. 0.0.1:
192.168.0.100 site.loc
Сохраняем файл. что тут написано — при наборе адреса «site.loc» идти на IP «192.168.0.100«. Это вместо того, чтобы поднимать DNS ради одного-двух-пяти сайтов.
Если второй компьютер на Linux — файл будет /etc/hosts, действия — те же.
phpMyAdmin
Если с phpMyAdmin все относительно просто — пишем http://192.168.0.100/phpMyAdmin (регистр тут важен) и все открывается, то с виртуальными хостами придется расковырять пару файлов.
Виртуальные хосты
site.loc, соответственно, живет на виртуальном хосте, который прописан так:
sudo nano /etc/apache2/vhosts.d/site.loc.conf <VirtualHost 127.0.0.1:80> DocumentRoot /srv/www/vhosts/site.loc ServerName site.loc ServerAdmin [email protected] <Directory /srv/www/vhosts/site.loc> AllowOverride All Order allow,deny Allow from all </Directory> UserDir public_html </VirtualHost>
Все прекрасно работает на локалхосте, но при попытке зайти на site. loc cо второго компьютера, нас ждет облом. Откроется страница, находящаяся в папке WWW (по умолчанию там будет написано «It worws!«). Вот тут-то мы и начинаем.
Для начала, апачу нужно сказать, какие порты слушать и на каких интерфейсах (он же не телепат, правильно?). Открываем файл
sudo nano /etc/apache2/listen.conf Listen 80 <IfDefine SSL> <IfDefine !NOSSL> <IfModule mod_ssl.c> Listen 443 </IfModule> </IfDefine> </IfDefine>
К этому всему добру надо указать апачу слушать два интерфейса — локальный (127.0.0.1), чтобы можно было смотреть сайт на локалхосте как раньше, и внешний (192.168.0.100), чтобы апач принимал запросы еще и с того интерфейса, который смотрит в локалку.
NameVirtualHost 192.168.0.100:80 NameVirtualHost 127.0.0. 1:80
Можно добавить это в самый конец файла, можно в начало.
Чтобы апач слушал все интерфейсы на 80 порту — вместо того, что выше, добавляем
NameVirtualHost *:80
Этот вариант хорош именно в нашем случае, когда у нас по сути 2 интерфейса (значимых для дела) — 127.0.0.1 и 192.168.0.100
Чтобы все интерфейсы на всех портах (а надо ли?)
NameVirtualHost *
В принципе, все это описано в комментариях в этом же файле. Правда, на английском…
Теперь открываем известный нам уже файл /etc/apache2/vhosts.d/site.loc.conf и добавляем в него блок:
<VirtualHost 127.0.0.1:80> DocumentRoot /srv/www/vhosts/site.loc ServerName site.loc ServerAdmin [email protected] <Directory /srv/www/vhosts/site.loc> AllowOverride All Order allow,deny Allow from all </Directory> UserDir public_html </VirtualHost>
Таким образом, должно получиться так:
sudo nano /etc/apache2/vhosts.d/site.loc.conf <VirtualHost 192.168.0.100:80> DocumentRoot /srv/www/vhosts/site.loc ServerName site.loc ServerAdmin [email protected] <Directory /srv/www/vhosts/site.loc> AllowOverride All Order allow,deny Allow from all </Directory> UserDir public_html </VirtualHost> <VirtualHost 127.0.0.1:80> DocumentRoot /srv/www/vhosts/site.loc ServerName site.loc ServerAdmin [email protected] <Directory /srv/www/vhosts/site.loc> AllowOverride All Order allow,deny Allow from all </Directory> UserDir public_html </VirtualHost>
Собственно, осталось перезапустить апач:
sudo /etc/init.d/apache2 restart
и проверять. Все должно работать на обоих компьютерах.
Отключить виртуальный хост в операционной системе Ubuntu и CentOS для Apache и Nginx —
Последнее обновление: 11 мая 2020 г.
Автор: Джон Аберкромби
Что делать, если вам нужно отключить веб-сайт, но вы не уверен как? Это проще, чем вы думаете.
Прежде чем приступить к работе, при чтении этой статьи имейте в виду следующее:Ваш блок сервера виртуального хоста (vhost) может иметь заголовок, отличный от domain.com.conf . Например, вы можете использовать httpd.conf или ssl.conf . В этом случае замените domain.com.conf на свой имя файла конфигурации.
В этой статье используются виртуальные хосты или серверные блоки в некоторых примерах, которые используют порт 80 и не являются Уровень защищенных сокетов (SSL). Обратите внимание, что эти шаги не отличаются, если ваш блок vhost или server виртуальный хост или серверный блок с поддержкой SSL, использующий порт 443. Шаги такие же.
Операционная система Ubuntu и Apache
sudo a2ensite /etc/apache2/sites-available/domain. com.conf
Когда вы понимаете, что означает этот набор букв и цифр в a2ensite
, тогда становится легче
помните, как включить или отключить виртуальный хост Apache в Ubuntu.
Вот расшифровка команды:
- a2 : apache2 (то, что Ubuntu называет Apache)
- en : включить
- сайт : виртуальный хост веб-сайта
Чтобы отключить веб-сайт, используйте команду a2dissite
, как показано в следующем примере:
sudo a2dissite /etc/apache2/sites-enabled/domain.com.conf
Эта команда состоит из следующих компонентов:
- a2 : apache2 (то, что Ubuntu называет Apache)
- дис : отключить
- сайт : виртуальный хост веб-сайта
Также обратите внимание на разницу в путях к каталогам между a2ensite
и a2dissite
. Когда вы хотите
чтобы включить виртуальный хост для Apache в Ubuntu, вы делаете это из каталога , доступного для сайтов . Когда ты
хотите отключить виртуальный хост в Ubuntu, вы делаете это из каталога с поддержкой сайтов .
После отключения виртуального хоста используйте следующую команду для проверки синтаксиса конфигурации Apache:
апач2ктл -т
Ожидаемый ответ:
Синтаксис OK
Чтобы перезапустить или перезагрузить Apache, выполните одну из следующих команд:
service apache2 restart
или
служба apache2 перезагрузить
перезапуск
полностью отключает Apache, а перезагружает
плавно запускает новую службу Apache перед
остановка оригинальной службы. Как правило, вы хотите перезагрузить, а не перезапустить, когда у вас есть возможность.
Операционная система Ubuntu и Nginx
Отключение блока сервера Nginx® (то, что Nginx называет виртуальными хостами) немного отличается. Nginx использует символические ссылки для
включить или отключить серверные блоки. Виртуальные хосты Apache также могут использовать символические ссылки, но a2ensite
и a2dissite
. не работает для Nginx.
Чтобы отключить блокировку сервера в Nginx в Ubuntu, вам нужно удалить символическую ссылку между сайтами с поддержкой
и сайтов-доступно , как показано в следующем примере:sudo rm /etc/nginx/sites-enabled/domain.com.conf
Команда удаляет символическую ссылку для вашего сайта, domain.com . Используйте следующую команду для проверки Синтаксис Nginx:
nginx -t
Ожидаемый ответ:
nginx: синтаксис файла конфигурациив порядке nginx: проверка файла конфигурации прошла успешно
Ваш путь к файлу отображается в заполнителе. После получения положительного ответ, вам необходимо перезагрузить или перезапустить Nginx bu с помощью одной из следующих команд:
служба nginx перезагрузить
или
перезапуск службы nginx
Как и раньше, всякий раз, когда у вас есть такая возможность, используйте перезагрузка
вместо перезагрузка
, чтобы не
разрушать любые другие веб-сайты, которые у вас есть.
Примечание : Если вы запускаете php-fpm
, вам также необходимо перезапустить эту службу с помощью следующей команды:
service php-fpm restart
CentOS и Apache
Отключение виртуального хоста в Apache в CentOS® сложнее, поскольку в CentOS нет простой команды использовать. В CentOS вам нужно вручную закомментировать виртуальный хост, который вы хотите отключить.
Вот пример виртуального хоста domain.com для Apache в CentOS:
имя_сервера domain.com Псевдоним сервера www.domain.com DocumentRoot /var/www/vhosts/domain.com/public виртуальный хост>
Найдите этот виртуальный хост с помощью следующей команды:
httpd -S | grep-домен.com
Выходные данные показывают расположение виртуального хоста, который похож на следующий вывод:
/etc/httpd/vhost.d/domain.com.conf
В зависимости от вашей конкретной настройки предыдущий вывод может выглядеть иначе. Тем не менее, путь вы ищете должно заканчиваться аналогично domain.com.conf .
После того, как вы определились с местоположением виртуального хоста, откройте файл конфигурации виртуального хоста с вашим любимым
Текстовый редактор. Вот два примера использования vim
и nano
:
sudo vim /etc/httpd/vhost.d/domain.com.conf
или
sudo nano /etc/httpd/vhost.d/domain.com.conf
Отредактируйте файл конфигурации и добавьте знак решетки (#) перед каждой строкой записи vhost. Если вы
используете vim
, сначала введите режим Insert . Теперь ваша конфигурация виртуального хоста должна выглядеть так:
## Имя_сервера domain.com # Псевдоним сервера www.domain.com # DocumentRoot /var/www/vhosts/domain.com/public #виртуальный хост>
Сохраните файл и выйдите из текстового редактора.
Теперь вам нужно проверить синтаксис Apache с помощью следующей команды:
httpd -t
Ожидаемый ответ:
Синтаксис OK
Наконец, перезагрузите или перезапустите Apache. Если вы используете CentOS 7 или более позднюю версию, вы можете использовать systemctl
для этой команды. В противном случае используйте службу
. В следующих примерах показаны обе команды:
Использование службы
:
sudo service httpd reload
или
перезапуск службы sudo httpd
Использование systemctl
:
sudo systemctl перезагрузить httpd
или
sudo systemctl перезапустить httpd
Примечание : Хотя systemctl
работает только в CentOS 7 или более поздних версиях, эти версии также поддерживают службу
,
если так проще. Система автоматически связывается с systemctl
.
Этот же процесс работает и для SSL, порта 443, виртуальных хостов.
Как и раньше, если у вас есть возможность, используйте перезагрузка
вместо перезагрузка
.
CentOS и Nginx
Nginx относится к виртуальным хостам как к блокам сервера. Используйте тот же процесс для комментирования серверных блоков для Nginx. в CentOS, который вы использовали для Apache.
Однако сначала нам нужно найти блок сервера, который мы хотим отключить. Вы делаете это с помощью следующей команды:
nginx -T | grep-домен.com
Опять же, найдите путь, заканчивающийся на .conf для вашего домена. Это похоже на следующий пример:
/etc/nginx/conf.d/domain.com.conf
Теперь откройте этот файл в вашем любимом текстовом редакторе с помощью одной из следующих команд:
sudo vim /etc/nginx/conf.d/domain.com.conf
или
sudo nano /etc/nginx/conf.d/domain.com.conf
Файл похож на следующий пример:
сервер { слушать 80; имя_сервера домен.com www.домен.com; журнал_доступа /var/log/nginx/domain.com.access.log; error_log /var/log/nginx/domain.com.error.log; корень /var/www/domain.com/httpdocs; расположение / { индекс index.html index.htm index.php; try_files $uri = 404; } расположение ~ \. php$ { включить /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; #это означает, что php-fpm будет работать на порту # fastcgi_pass unix:/run/php-fpm/domain.com.sock; или вы можете запустить php-fpm на сокете fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/domain.com$fastcgi_script_name; } }
Вы должны закомментировать весь этот серверный блок. Если вы используете vim
, убедитесь, что вы находитесь в Вставьте режим первый. Блок вашего сервера должен выглядеть так:
#server { # слушать 80; # имя_сервера domain.com www.domain.com; # access_log /var/log/nginx/domain.com.access.log; # error_log /var/log/nginx/domain.com.error.log; # корень /var/www/domain.com/httpdocs; #расположение / { # индекс index.html index.htm index.php; # try_files $uri =404; # } #местоположение ~ \.php$ { # включить /etc/nginx/fastcgi_params; # fastcgi_pass 127.0.0.1:9000; #это означает, что php-fpm будет работать на порту # # fastcgi_pass unix:/run/php-fpm/domain. com.sock; или вы можете запустить php-fpm на сокете # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /var/www/html/domain.com$fastcgi_script_name; # } #}
Сохраните файл и закройте текстовый редактор.
Теперь проверьте синтаксис Nginx с помощью следующей команды:
nginx -t
Ожидаемый ответ:
nginx: синтаксис файла конфигурациив порядке nginx: проверка файла конфигурации прошла успешно
Ваш путь к файлу отображается в заполнителе. После получения положительного ответ, вам необходимо перезагрузить или перезапустить Nginx с помощью одной из следующих команд:
sudo service nginx reload
или
перезапуск службы sudo nginx
Если вы запустите php-fpm
, перезапустите эту службу с помощью следующей команды:
sudo service php-fpm restart
Вы также можете перезапустить или перезагрузить Nginx, используя systemctl
вместо сервис
, как показано на
следующие примеры:
sudo systemctl перезагрузить nginx
или
sudo systemctl перезапустить nginx
Перезапустить php-fpm
с systemctl
:
sudo systemctl перезапустить php-fpm
Теперь вы знаете, как отключить виртуальные хосты или серверные блоки как в CentOS, так и в операционной системе Ubuntu. для Apache и Nginx.
Как обновить настройки виртуального хоста для Apache 2.4 | Linode
В этом руководстве объясняются изменения конфигурации, необходимые для обновления стандартной установки виртуального хоста, такой как представленная здесь, с Apache 2.2 на Apache 2.4. Эти обновления конфигурации необходимы, потому что работающая установка виртуального хоста Apache 2.2 автоматически сломается при обновлении до Apache 2.4. Мы также обсудим изменения, которые новая версия Apache вносит в конфигурацию виртуального хоста и модуля по умолчанию.
Перед обновлением необходимо сделать резервную копию основного файла конфигурации Apache 2.2, чтобы не потерять настройки. Однако имейте в виду, что если вы попытаетесь использовать его как есть с Apache 2.4, несовместимость может помешать запуску или работе Apache.
Эта статья не является исчерпывающим руководством по обновлению с Apache 2.2 до 2.4. Для получения полной информации ознакомьтесь с рекомендациями apache. org по этому вопросу.
Сделайте резервную копию
Перед обновлением программного обеспечения Apache сделайте резервную копию своих данных. Обновление иногда может привести к потере данных, особенно если у вас были настройки в файле конфигурации Apache, которые больше не применяются в Apache 2.4. Если вы используете модули Apache, это особенно вероятно.
Даже при простейшей настройке Apache необходимо создать резервную копию настроек, модулей и других данных Apache на случай возникновения непредвиденных проблем.
Обновления настроек виртуальных хостов
Вам придется внести изменения в настройки виртуальных хостов Apache 2.2, чтобы ваши веб-сайты снова работали с Apache 2.4. Слепое обновление с Apache 2.2 до 2.4 не работает по следующим причинам:
Ubuntu и Debian: Файлы конфигурации виртуального хоста на
доступных сайтах 9Каталог 0035 теперь должен использовать расширение
.conf
Файлы конфигурации виртуального хоста должны иметь строку
Требовать всех предоставленных
в соответствующем блокеКаталог
:- Файл: файл конфигурации виртуального хоста
1 2 3
<Каталог /путь/к/общедоступному/веб-сайту/> Требовать все предоставленные
- Файл: файл конфигурации виртуального хоста
Пользователи Ubuntu и Debian должны будут внести оба изменения. Пользователям других дистрибутивов нужно будет внести второе изменение. Мы подробно расскажем о том, как внести эти изменения в следующих двух разделах.
Ubuntu и Debian: добавление расширений .conf
Следуйте этим инструкциям в любое время, чтобы обновить файлы конфигурации виртуального хоста. Это изменение будет работать с Apache 2.2, поэтому вы можете внести его заранее. Вы также можете сделать это сразу после обновления до Apache 2.4, чтобы ваши сайты снова заработали.
Используйте команду
mv
, чтобы переименовать каждый файл виртуального хоста в вашем каталоге/etc/apache2/sites-available/
, чтобы включить расширение.conf
:mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf
Используйте команду
a2ensite
для добавления виртуального хоста. Убедитесь, что вы включили расширение.conf
:a2ensite example. com.conf
Используйте команду
a2dissite
, чтобы отключить старый виртуальный хост. Убедитесь, что вы не включили расширение.conf
:a2dissite example.com
Повторите шаги 1-3 для всех ваших виртуальных хостов.
Перезагрузить Apache:
служба apache2 перезагрузить
Теперь ваши сайты добавлены в Apache. Теперь следуйте инструкциям в следующем разделе, чтобы сделать ваши сайты доступными.
Все дистрибутивы: Разрешения
Если вы используете правила управления доступом в файлах виртуального хоста, вам нужно будет следовать этим инструкциям, чтобы обновить свои разрешения для Apache 2.4. Вы не можете добавить Требовать всю предоставленную строку
в Apache 2.2, иначе вы получите 500 Internal Server Error. Внесите это изменение сразу после обновления до Apache 2.4.
Откройте файл конфигурации виртуального хоста вашего веб-сайта в вашем любимом текстовом редакторе. Для Ubuntu и Debian это обычно файл типа
/etc/apache2/sites-available/example.com.conf
. В CentOS и Fedora это обычно/etc/httpd/conf.d/vhost.conf
.Ubuntu и Debian (замените example.com.conf с вашим именем файла):
nano /etc/apache2/sites-available/example.com.conf
CentOS и Fedora:
нано /etc/httpd/conf.d/vhost.conf
В блоке
VirtualHost
для этого веб-сайта найдите или создайте блокDirectory
для общедоступного каталога вашего веб-сайта. Добавьте строкуТребовать все предоставленные
. (Если строкаТребовать все запрещенные
уже есть, обновите ее доТребовать все разрешенные
). Посмотрите пример файла ниже (замените /path/to/public/website/ общедоступным каталогом вашего веб-сайта):- Файл: /etc/apache2/sites-available/example.com.conf или /etc/httpd/ conf.d/vhost. conf
1 2 3 4 5 6 7
<Виртуальный хост *:80> ... <Каталог /путь/к/общедоступному/веб-сайту/> Требовать все предоставленные Каталог> ...
Сохраните изменения.
Повторите шаги 1-3 для всех ваших виртуальных хостов.
Перезагрузите Apache.
Ubuntu и Debian:
служба перезагрузки apache2
CentOS:
/etc/init.d/httpd перезагрузка
Fedora:
systemctl перезагрузить httpd.service
ПримечаниеДополнительные сведения о том, как включить или ограничить доступ к веб-сайтам с помощью различных строк
Require
, см. на веб-сайте Apache. Большинство пользователей захотят использоватьТребовать все предоставленные строки
, но могут быть исключения.
Проверьте свои веб-сайты. Если вы выполнили эти шаги правильно, теперь они должны снова работать.
Виртуальный хост по умолчанию
Если ваш файл конфигурации Apache будет заменен во время обновления, расположение вашего виртуального хоста по умолчанию изменится с /var/www
на /var/www/html
. Возможно, вам придется снова отключить виртуальный хост по умолчанию, если вы этого не хотите.
Конфигурации модулей
Если в вашем основном файле конфигурации есть какие-либо конфигурации модулей Apache, несовместимые с Apache 2.4, это может помешать запуску или работе программного обеспечения. В Apache 2.4 конфигурации модулей больше не включаются в основной файл конфигурации Apache. Вместо этого каждый из них имеет свои собственные файлы конфигурации, расположенные в каталогах mods-available/
или mods-enabled/
и названные примерно так: module_name.conf
.
Страница обновления apache. org — хорошее место для начала проверки наличия несовместимых модулей.
Ошибки из-за необновленных параметров
Следующие симптомы могут указывать на необходимость внесения изменений в конфигурацию Apache 2.4, описанных в этой статье. Обратите внимание, что другие причины также могут вызывать эти симптомы, поэтому, если вы недавно не обновлялись с Apache 2.2 до 2.4, вам следует использовать дополнительные способы устранения неполадок.
Симптом: Когда вы пытаетесь зайти на свой сайт, вы видите значение по умолчанию Это работает! Веб-страница Apache.
Решение. Добавьте расширения .conf
в файлы конфигурации виртуального хоста и повторно добавьте свои сайты, как описано выше. Вы также можете внести любые необходимые изменения в поведение сайта Apache по умолчанию. Если вы хотите отключить сайт по умолчанию, вы должны сделать это снова.
Симптом: При использовании команды Apache a2ensite
появляется ошибка Сайт example. com не существует!
Решение: Убедитесь, что у вас есть расширение .conf
в конце имени файла конфигурации, и что вы также используете расширение .conf
с командой a2ensite
.
Симптом: Когда вы пытаетесь посетить свой веб-сайт, вы видите сообщение 403 Forbidden .
Решение: Добавьте строку Требовать все предоставленные
в каждый файл конфигурации вашего виртуального хоста, как описано выше.
Симптом: Apache не запускается или не работает.
Решение. Проверьте наличие несовместимых параметров и модулей в файлах конфигурации Apache.
Даты обновления Apache по дистрибутивам
Различные дистрибутивы делают Apache 2.4 нормой в разное время. При обновлении до одного из дистрибутивов в этой таблице вы также по умолчанию обновитесь до Apache 2.4.
Распространение | Версия | Дата выпуска |
---|---|---|
Ubuntu | 13. |