Virtualhost apache2: Apache — HTTP Apache 2.2

Виртуальные хосты 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!«). Вот тут-то мы и начинаем.

Для начала, апачу нужно сказать, какие порты слушать и на каких интерфейсах (он же не телепат, правильно?). Открываем файл

/etc/apache2/listen.conf и видим там нечто следующее (исключая коммментарии, конечно):

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

Начнем с самого простого. 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, чтобы ваши сайты снова заработали.

  1. Используйте команду mv , чтобы переименовать каждый файл виртуального хоста в вашем каталоге /etc/apache2/sites-available/, чтобы включить расширение .conf :

     mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf
     
  2. Используйте команду a2ensite для добавления виртуального хоста. Убедитесь, что вы включили расширение .conf :

     a2ensite example. com.conf
     
  3. Используйте команду a2dissite , чтобы отключить старый виртуальный хост. Убедитесь, что вы не включили расширение .conf :

     a2dissite example.com
     
  4. Повторите шаги 1-3 для всех ваших виртуальных хостов.

  5. Перезагрузить Apache:

     служба apache2 перезагрузить
     

Теперь ваши сайты добавлены в Apache. Теперь следуйте инструкциям в следующем разделе, чтобы сделать ваши сайты доступными.

Все дистрибутивы: Разрешения

Если вы используете правила управления доступом в файлах виртуального хоста, вам нужно будет следовать этим инструкциям, чтобы обновить свои разрешения для Apache 2.4. Вы не можете добавить Требовать всю предоставленную строку в Apache 2.2, иначе вы получите 500 Internal Server Error. Внесите это изменение сразу после обновления до Apache 2.4.

  1. Откройте файл конфигурации виртуального хоста вашего веб-сайта в вашем любимом текстовом редакторе. Для 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
     
  2. В блоке 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>
      ...
      <Каталог /путь/к/общедоступному/веб-сайту/>
         Требовать все предоставленные
      
      ...
     
  3. Сохраните изменения.

  4. Повторите шаги 1-3 для всех ваших виртуальных хостов.

  5. Перезагрузите 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © 2023
Дропшиппинг в России.
Сообщество поставщиков дропшипперов и интернет предпринимателей.
Все права защищены.
ИП Калмыков Семен Алексеевич. ОГРНИП: 313695209500032.
Адрес: ООО «Борец», г. Москва, ул. Складочная 6 к.4.
E-mail: [email protected] Телефон: +7 (499) 348-21-17