ВСЕ ЗАПИСИ
Статьи,заметки
Хостинг с PHP на домашнем компьютере с динамическим IP
Обновлено: март 2016
В свою сборку HomServ добавил ещё одну полезную программу, - AGuard.
Она отслеживает состояние сервера Apache, и в случае, если возникает окно Прекращена работа Apache HTTP Server - искать решение проблемы в интернете, или закрыть программу, из-за сбоя в работе какого-либо скрипта на сервере, - программа закрывает это окно. Иначе Apache остановится и весь сайт на локальной машине будет недоступен. Рекомендую держать AGuard постоянно запущенным во время работы HomServ.
Ранее в сборку был добавлен рабочий SMTP-клиент. CourierMS полностью удалён, заменил на Mailer, теперь можно отправлять письма прямо из скриптов, возможна также отправка письма с вложенными файлами. Прежде чем использвать сервер, читаем файл "ПРОЧЕСТЬ!!!.txt" в папке HomServ, внутри архива.
А тем, кто использует Денвер-3 в качестве сервера, предлагаю скачать рабочий sendmail Архив распаковываем в папку tools в директории Денвера, старую папку sendmail, где находится sendmail-заглушка, предварительно переименовываем, или удаляем. Настройки SMTP в файле sendmail.ini для учетной записи pupkin@mail.ru заменяем своими.
Здесь я расскажу о своём опыте установки веб-сервера с полной поддержкой php и MySQL на компьютер с Windows 7.
Задача заключалась в том, что мне нужно было поднять у себя на компе вебсервер, чтобы он был доступен извне, а конкретно, - по ссылке с моего сайта. Подобным образом я уже когда-то устанавливал у себя на компьютере фтп сервер, смотреть в этом посте, в течение некоторого времени он у меня успешно работал, пока необходимость в нём не отпала. В качестве сервера использовалась лайт-версия программы Golden FTP Server,в которой достаточно указать порт, выбрать директорию на жёстком диске, которая будет корнем сервера, выставить разрешения на чтение и запись, и всё сразу же начинало работать, - вводим ip компа и сразу попадаем на фтп.
Было решено поступить аналогичным образом, взять проверенную готовую сборку PHP+MySQLи настроить её для доступа из интернета.
Так как провайдер выдаёт мне динамический адрес, то для начала нужен роутер, в котором должна присутствовать функция "виртуальный сервер". У меня - ASUS DSL-N10 , опция "включить виртуальный сервер" находится на вкладке "расширенные настройки".
Денвер-3, пожалуй, самая известная сборка готового сервера, я познакомился с ним ещё в те времена, когда на хостингах использовался PHP3, а PHP4 был новинкой, и сейчас я им часто пользуюсь для отладки скриптов, решил попробовать запустить на нём свой домашний хостинг. Но потратив порядочно времени, многократно меняя настройки apache и файла hosts, ничего хорошего не добился, внешний доступ был только в том случае, если разместить сайт в папке с названием , которое совпадает со значением текущего ip адреса на данный момент, который естественно изменяется после перезагрузки. Всё правильно, только о таком варианте доступа в случае динамического ip говорят на сайте разработчики Денвера, не знаю, как они это замутили, но с Денвером у меня ничего не получилось. Я больше чем с Денвером рассчитывал, на вариант на сборку, известную как OpenServer, я тоже ею неоднократно пользовался, но хотя там не особо-то и запутанные конфиги, заставить её коннектиться с внешним миром не получилось вообще никак.
Но спустя некоторое время мне встретилась программа HomServ, тоже сборка веб сервера с 7zip инсталлятором. HomServ. - проект уже не новый, автор, судя по всему, забросил его, но судя по отзывам людей, которые им пользовались, ничем не хуже того же Денвера. Вот его возможности:
* Apache 2.2.11 |
Установил, попробовал, действительно, скрипты, которые у меня работали на Денвере, так же работают и в HomServ.
А в корне сервера лежит файл Readme, где среди прочего можно увидеть такие строки
ДОСТУП
По умолчанию все компоненты не доступны из сети. Это сделано, потому что HomServ используется в основном для отладки сайтов. Изменение этих параметров может привести к серьезным проблемам в безопасности! Если вы все же хотите открыть доступ к серверам из сети, то вам необходимо изменить следующие параметры:
Замените `Listen 127.0.0.1:80` на `Listen *:80` в файле apache\conf\httpd.conf. Обратите внимание, что при обращении по ip-адресу вызывается хост по умолчанию (home\default). Внешний доступ в панель управления и phpMyAdmin заблокирован отдельно (tools\web\.htaccess и pma\.htaccess)
Вот это мне и было нужно. Я прописал эти настройки, и сервер сразу же стал открываться по внешнему ip без разных там танцев с бубном, не надо даже трогать файл hosts, что лежит в папке windows/system32. Позже я удалил виртуальные хосты first и second, в папке home которые сервер создал при установке автоматически,создал папку www в директории home, чтобы было как по стандарту и в файл /tools/vhost.conf прописал такую строку
DocumentRoot "C:/HomServ/home/www"
директория home/www теперь по умолчанию - корневая директория сайта, куда и ставим наши скрипты , при внешнем запросе обращение идёт к документам в этой директории. Другие виртуальные хосты: default и localhost оставляем, эти папки удалять не надо. Для тех, кто захочет попробовать поставить себе HomServ есть ссылка на архив конце статьи, в архиве, кроме инсталлятора, прилагаются также файлы с настройками, которые здесь описаны, файлы лежат с сохранением структуры папок, просто скопируйте их в корень сервера после установки, согласившись на замену. Также не забудьте создать в директории home папку www, впрочем она уже есть в архиве. Также прилагается изменённый php.ini , там увеличил максимальный размер загружаемых файлов до 100Мб, количество оперативной памяти, выделяемой для скриптов, увеличено до 256 Мб, максимальное время выполнения скрипта - 60 секунд, я думаю, что в отличие от стороннего хостинга, можно позволить у себя на компе такие параметры ;-) И ещё, по умолчанию на сервере не запрещён листинг директорий, поэтому следует изменить этот параметр в настройках апача, либо в папки, содержание которых должно быть скрыто, помещать индексный файл-заглушку.
В общем, HomServ - программа достаточно функциональная и несложная в настройке. Но если сравнить с Денвером, то здесь например, отсутствует расширение pdo_mysql поэтому если у вас будет скрипт с базой данных использующей драйвер pdo, он не запустится. И ещё, в Денвере, для отправки почты существует заглушка sendmail, которую без хитрых манипуляций можно заменить на настоящий, работающий sendmail, который успешно отправляет почту из скриптов установленных на localhost на реальные адреса (полезная функция, например при тестировании движка скрипта, если забыть пароль от админки, то скрипт вышлет его на внешний почтовый ящик, если он был указан при регистрации, конечно) А в HomServ для почтовых функций задействован CourierMS, но несмотря ни на что, мне так и не удалось заставить её работать с внешними SMTP. Пришлось решить эту проблему другим способом, - я написал собственный SMTP клиент, который прекрасно справляется с задачей отправки электронной почты через внешний почтовый ящик. Его следует поместить в каталог HomServ/email и запустить. Courier MS ни в коем случае запускать нельзя, чтобы он не заблокировал 25-й порт. В будущем, возможно получится полностью интегрировать свой SMTP клиент в дистрибутив HomServ, чтобы заменить Courier MS. Загрузить Mailer - SMTP клиент можно на этой странице.
Забыл сказать, что в HomServ php-функция exec работает во всех скриптах, их необязательно помещать для этого в директорию cgi/bin, это значит, что написав батник, запускающий какую-либо программу, и положив его рядом со скриптом, который будет этот батник запускать, можно управлять внешними программами просто переходя по нужным ссылкам:) Только не забывайте о мерах безопасности;)
скачать архив с программой можно по этой ссылке
Полную последнюю сборку HomeServ с настроенными конфигами и дополнительными программами (AGuard, Mailer) загружаем здесь
Добавлено: сентябрь 2013
©Veterock