Всем добрый день.

Многие хотели иметь свой домашний хостинг, не просто запущенный apache и доступ к сайту по localhost и тому подобным путям, а что бы еще и друзья могли зайти и насладится вашим домашним сайтом.

Ну что же начнем.

Система у меня Ubuntu, для Windows порядок манипуляций похож.

Для начала нам нужно иметь внешний IP, в моем случае это 46.98.112.249, так как у меня оптика и она подключена к моему ПК.

Проверим настройки нашего сервера, он должен слушать все IP или определенные которые мы укажем. Настроить порты и IP для прослушки можно в файле /etc/apache2/ports.conf
LISTEN *:80 #слушаем все ip на 80 порту
LISTEN 46.98.112.249:80 #или слушаем только определенный ip

В настройках VirtualHost так же можно указать на каком порту и на каком ip должен работать хост, конфиги локал хостов находятся в /etc/apache2/site-avalible

<VirtualHost *:80>  # все ip (наш вариант)
<VirtualHost 127.0.0.1:80>   # только с локального ПК

Если вам все же пришлось что то менять в конфигах то надо перезапустить apache, что бы изменения вступили в силу:

$ sudo service apache2 restart

После рестарта сервера по нашему внешнему IP мы можем видеть результат работы apache:

Мы видим наш http://localhost, теперь и другие его видят.

Но это всего лишь виртуал-хост по умолчанию, а мы хотим несколько сайтов, и что бы с нормальными доменами!

Продолжим. Я покажу пример как на домашний хостинг прикрутить субдомен. Для этого у вас должен быть хоть какой-нибудь домен. В админ панели хостинга (или регистратора) создаем поддомен, у каждого хостинга своя админ панель и кнопка создать поддомен находится в разных местах но суть остается та же, мы получаем поддомен).

создаем поддомен site.my_domain.com


Домен мы зарегистрировали, теперь укажем домену где находится наш сайт, для этого нам у провайдера нужно изменить ресурсную запись DNS и указать наш IP

Теперь домен знает где живет сайт и как его зовут.

Но наш домашний сервер не знает ничего про домен, какой сайт отдать при обращении и т.д.. Расскажем сейчас ему, что делать при обращении из вне.

Для этого необходимо в конфиге виртуал хоста указать домен /etc/apache2/site-avalible/you_file_name.conf

<VirtualHost *:80> # хост для всех ip но для 80 порта
ServerAdmin webmaster@localhost
DocumentRoot /home/user_name/project/site # папка с сайтом
ServerName site.my_domain.com  #наш домен
ServerAlias www.site.my_domain.com #тоже наш домен
ServerAlias my_site.local # для локального доступа на всякий случай)
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /home/user_name/project/site> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>

Далее перезапустить сервер

$ sudo service apache2 restart

И вуаля!!)

Но не тут то было, записи DNS еще не обновились и мы не можем по нашему url пройти на наш сайт. Записи DNS обновляются до 72 часов. Но есть выход воспользоваться DNS гугла. Укажите DNS 8.8.8.8 он достаточно быстро обновляется, что даже через несколько минут вы увидите результат.

Остальным придется ждать пока их DNS обновятся.

Ну если вашим друзьям совсем не в терпеж, то они могут прописать у себя в файле hosts ваш IP и ваш домен и сразу перейти на ваш сайт.

По аналогии вы можете сколько угодно сайтов запустить на вашем ПК.

Удачи!

Так же вам может быть интересно: Домашний web сервер на динамическом IP