Как сделать домашний хостинг за 15 минут с нуля. Установка и настройка локального сервера. Apache + PHP + MySql + windows 7/2008r2
Всем привет сегодня расскажу как сделать домашний хостинг за 15 минут с нуля. Установка и настройка локального сервера. Apache + PHP + MySql + windows 7/Windows server 2008r2.
Список программ.
httpd-2.2.25-win32-x86-openssl-0.9.8y.msi
mysql-5.5.9-win32.msi
php-5.3.5-Win32-VC6-x86.msi
дополнительно \ imageMagick \ ImageMagick-6.7.0-6-Q16-windows-dll.exe
дополнительно \ imageMagick \ php_imagick_dyn-Q16.dll
дополнительно \ pspad \ pspad454inst_en.exe
дополнительно \ pspad \ ru_dic.cab
дополнительно \ HeidiSQL_6.0_Setup.exe
дополнительно \ phpMyAdmin-3.5.8.2-all-languages.7z
Все программы бесплатны и скачаны с официальных сайтов:
Не скачивайте сверхновые программы с пометкой Альфа (Alpha), Бета (Beta) и т.д. - это не стабильные версии которые могут содержать ошибки. Скачивайте только стабильные (Stable) версии.
http://httpd.apache.org/download.cgi
http://windows.php.net/download/ (скачиваем "installer", только "VC6 x86 Thread Safe". VC9 - устанавливать с Apache нельзя)
http://www.mysql.com/downloads/mysql/ (нажать "Looking for previous GA versions?", "essential" = необходимый минимум)
http://www.imagemagick.org/script/index.php
программы для работы с базой данных MySql:
http://www.heidisql.com/download.php
http://www.devart.com/ru/dbforge/
http://www.phpmyadmin.net/home_page/downloads.php
текстовые редакторы:
http://notepad-plus.sourceforge.net/ru/site.htm
http://www.pspad.com/ru/
Принцип работы сервера:
Сервер - это компьютер на котором лежат файлы сайта. На нем запущена и постоянно работает специальная программа Apache. Если через браузер обратиться к этому серверу (послать запрос на 80 порт), Apache выдаст обратно HTML и графические файлы лежащие на сервере. Браузер получив обратно эту информацию сформирует из них на экране привычную нам страницу сайта.
Это принцип.
Для надежности и большей совместимости реальные сервера у хостинговых компаний обычно делают на связках Unix + Apache (самая распространенная в мире связка) или на Windows Server 200X + Internet Information Server (IIS). Для экспериментов и тестирования сайтов вполне подойдет Windows 7, Vista или XP + Apache.
Ниже рассказывается как создать локальный (не видимый в интернете) виртуальный сервер для тестирования сайтов, скриптов и т.д.
Настроить видимость в интернете, т.е. сделать свой реальный хостинг можно, но опасно, ибо велик шанс, что будет много "дыр" для взлома.
* посчитайте сколько стоит за год выделенный IP адрес
* посчитайте сколько стоит за год электричество для постоянно работающего компьютера
* посчитайте стоимость замены выходящего из строя железа (год в включеном состоянии не каждая железка выдержит)
* уверены, что интернет у Вас никогда не пропадает и скорости отдачи хватит для всех посетителей?
* как будете делать резервные копии сервера, где хранить? При сбое или взломе как быстро Вы сможете все восстановить?
Ответив на вопросы выше подумайте, может надежнее, проще и дешевле купить хостинг и не мучиться.
__________________________________________________________________________
1) Cоздаем папки
c:/work/test.ru/www/
c:/work/bebebe/www/
(желательно сразу залить туда предлагаемые PHP файлы, для тестирования хостинга)
Это папки для двух сайтов и их мы будем указывать в настройках Apache. Сайтов может быть много. Папки нужно создавать заранее. Если хотя бы одна папка или подпапка указанная в настройках Apache физически не существует, то Apache не запустится.
Общая папка для всех виртуальных сайтов:
c:/work/
Название может быть любое, не обязательно work.
Место положение любое, не обязательно диск c:
Папки конкретных двух сайтов:
c:/work/test.ru/
c:/work/bebebe/
Название может быть любое. На этом уровне располагают файлы сайта которые не видны в интернете, например служебные файлы, пароли, логи, статистику сервера и т.д.
Видны в браузере:
c:/work/test.ru/www/
c:/work/bebebe/www/
Здесь размещаются непосредственно файлы сайта (картинки, HTML, файлы для скачивания и т.д.) Грубо говоря, если в браузере набрать test.ru, то будет "видно" содержимое именно этой папки. Поэтому в браузере невозможно отобразить родительскую папку c:/work/test.ru/ и c:/work/ и диск c:/ то же. 🙂
папка
c:/work/_/sendmail/
не обязательна. Нужна для работы "заглушки" отправки e-mail.
______________________________________________________________________________
2) Устанавливаем Apache
Apache - это программа, которая принимает запросы от браузера (Internet Explorer, FireFox, Opera ...) и выдает ему обратно HTML, картинки, результаты работы скриптов и т.д. (выдает страницы сайта). Запущена она один раз и работает постоянно. Значок запущенной программы будет внизу, справа экрана.
Настройки Apache в файле:
c://Program Files (x86)/Apache Software Foundation/Apache2.2/conf/httpd.conf
Для применения изменений в этом файле нужно перезагружать Apache.
----------
Чтобы Apache принимал запросы только с локального компьютера, указываем его неизменный IP адрес и порт: 127.0.0.1:80
Т.е. скачать или запустить что-то на вашем хостинге можете только Вы.
Заменяем
Listen 80
на
Listen 127.0.0.1:80
----------
Модуль mod_rewrite.so нужен для реализации человеку понятных адресов (ЧПУ)
Применяется для создания ссылок на страницы вида: test.ru/news/2010/03/
Убрать знак комментария "#":
LoadModule rewrite_module modules/mod_rewrite.so
----------
Что бы не было предупреждения в логах Apache убрать знак комментария "#":
ServerName localhost:80
----------
Для того, что бы можно было использовать файлы .htaccess
После кода:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
Изменяем
AllowOverride None
на
AllowOverride All
----------
При указании в адресной строке браузера папки на сервере, сервер автоматически будет искать и запускать указанные здесь файлы
Заменяем
DirectoryIndex index.html
на
DirectoryIndex index.html index.htm index.php
----------
Указываем путь файла ошибок в удобное нам место:
ErrorLog "c:/work/_/apache_error.log"
----------
Даем доступ к папке "work" и создаем настройки.
После кода:
<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Добавляем:
<Directory "C:/work">
AllowOverride All
Options Indexes FollowSymLinks Includes
Order allow,deny
Allow from all
</Directory>
Indexes - возвращает клиенту листинг каталога, если в нем нет индексных файлов
FollowSymLinks - Позволяет использовать символические ссылки (нужно для работы mod_rewrite)
Includes - Разрешает выполнение SSI директив в файлах
----------
Указываем расширения файлов для SSI
После кода :
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
Вставить:
AddType text/html .shtml .html. .htm
AddOutputFilter INCLUDES .shtml .html .htm
----------
Присоединение к основному конфигурационному файлу, файл httpd-vhosts.conf
Тогда при запуске Apache прочитает оба файла.
Убрать знак комментария "#":
Include conf/extra/httpd-vhosts.conf
----------
Далее изменяем в файле
C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf
Даем понять Apache, что:
Есть виртуальный хост, т.е. сайт.
Его файлы лежат здесь "DocumentRoot"
Показывать именно этот сайт если запрашивают домен "ServerName" или "ServerAlias"
Логи писать сюда "ErrorLog" и сюда "CustomLog"
Для этого удаляем старые записи
<virtualhost>
.......
</virtualhost>
и добавляем новые:
<VirtualHost *:80>
DocumentRoot c:/work/test.ru/www
ServerName test.ru
ServerAlias www.test.ru
ErrorLog c:/work/test.ru/error.log
CustomLog c:/work/test.ru/access.log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot c:/work/bebebe/www
ServerName bebebe
ErrorLog c:/work/bebebe/error.log
CustomLog c:/work/bebebe/access.log common
</VirtualHost>
________________________________________________________________________________
3) Устанавливаем PHP
PHP - это популярный язык программирования применяемый для создания сайтов.
В установке выбираем все модули, кроме этих:
Oracle (10)
PDO - Oracle10g
PDO - Oracle8i\Oracle9i
PDO - SQLite (External Driver)
Pspell
Sybase
т.к. для них нет файлов-билиотек (.dll) и это приведет к ошибке.
Настройки PHP в файле:
C:\Program Files (x86)\PHP\php.ini
позволит выполнять код PHP в контейнере <? ... ?>
по умолчанию кодом PHP считается все в контейнере <?php ... ?>
short_open_tag = On
максимальное время выполнения программы в секундах
(на реальных хостингах обычно 30)
max_execution_time = 3600
максимальное время получения данных (например загрузки файла) в секундах
(на реальных хостингах обычно 60)
max_input_time = 3600
максимальный объем памяти который может занять Ваш PHP скрипт
(на реальных хостингах обычно 32М)
memory_limit = 256M
выводить на экран ошибки PHP
(на реальных хостингах всегда OFF в целях безопасности)
display_errors = On
выводить на экран ошибки в момент запуска PHP
display_startup_errors = On
если надо подкрасить все ошибки красным разкомментируем эти строки:
error_prepend_string = "<font color=#ff0000>"
error_append_string = "</font>"
максимальный объем, который можно передать PHP скрипту методом POST
(на реальных хостингах обычно 4М)
post_max_size = 1000M
максимальный объем файла, который можно передать PHP скрипту
(на реальных хостингах обычно 2М)
upload_max_filesize = 1000M
Заменяем пути папок для временных файлов, сессий и файла ошибок:
upload_tmp_dir="C:\work\_\php_temp"
session.save_path="C:\work\_\php_session"
error_log="C:\work\_\php-errors.log"
Требуется установка времени сервера иначе PHP постоянно будет выдавать предупреждения
изменяем
;date.timezone =
например, на
date.timezone ='Europe/Moscow'
Что бы работала "заглушка" для отправки e-mail после строки
;sendmail_path =
заменяем
sendmail_path = php.exe c:\work\_\sendmail\sendmail.php
тогда при выполнении функции PHP - mail(); письмо будет сохранено в виде файла в папке
c:\work\_\sendmail\
(куда сохранять письма прописано в самом скрипте sendmail.php)
-------
ВНИМАНИЕ:
инсталлятор PHP может не прописывать в файле httpd.conf пути к PHP:
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir ""
LoadModule php5_module "php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
дописываем вручную:
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:/Program Files (x86)/PHP"
LoadModule php5_module "C:/Program Files (x86)/PHP/php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
-------
ВНИМАНИЕ:
при повторном запуске инсталлятора PHP будет снова изменен файл httpd.conf
причем все старые пути к PHP будут закомментированы знаком #,
а новые не пропишутся (см. выше).
В результате Apache запустится без PHP и при попытке выполнить скрипт PHP
например так: http://test.php/index.php будет предложено скачать файл!
Пропишите в файл httpd.conf пути к PHP (см.выше) и все заработает.
Если Apache не запустился то закоментируйте следующие библиотеки в php.ini
;extension=php_pdo_pgsql.dll
;extension=php_pgsql.dll
;extension=php_sybase_ct.dll
;extension=php_oci8_11g.dll
;extension=php_oci8.dll
;extension=php_intl.dll
_________________________________________________________________________________
4) Устанавливаем ImageMagick
ImageMagick - программа для работы с изображениями. Схожа со стандартной библиотекой PHP GD2, но более профессиональная и главное выдает картинки с лучшим качеством, что заметно не вооруженным глазом (после обработки GD2 картинки слегка мутноваты и это не лечится).
После установки самой программы, копируем в папку с модулями, модуль для ImageMagick
C:/Program Files (x86)/PHP/ext/php_imagick_dyn-Q16.dll
В конце php.ini добавляем строчку подключения модуля:
extension=php_imagick_dyn-Q16.dll
Может требовать перезагрузки компьютера (перезагрузим позже)
_______________________________________________________________________________
5) Устанавливаем MySQL
MySQL - это база данных. Т.к. далеко не всю информацию удобно хранить в файлах, наличие базы данных очень часто является необходимостью. При установке обязательно поставьте галочку Include Bin Directory in Windows PATH иначе PHP не сможет найти нужные ему файлы mysql.
(в тестовых файлах PHP, с сайта sysbox.ru, для подключения к базе данных указаны
логин: root
пароль: root
изменить их можно в файле config.php)
Кодировки MySQL это отдельный рассказ, т.к. нюансов множество.
При установке MySQL желательно указать именно UTF-8 (инсталлятор так и рекомендует сделать). Это универсальная, многобайтовая кодировка.
Обычно возникает путаница с кодировками: ошибки при записи в базу данных, читаются иероглифы, появляются вопросики вместо букв и т.д. MySql имеет массу настроек кодировок. Важные для PHP:
character_set_client = кодировка данных отправляемых от PHP
character_set_connection = кодировка, в которую преобразуется информация пришедшая от PHP, перед выполнением запроса на сервере
character_set_results = кодировка данных отправляемых к PHP
collation_connection = кодировка в которой производится сопоставление в базе данных. Используется для сортировки и выборки.
В помощь: если база данных в UTF-8, а на сайте работаете в кодировке windows-1251, то после подключения к базе данных надо выполнить запрос:
SET NAMES cp1251
который равносилен этим трём:
SET character_set_client = cp1251
SET character_set_results = cp1251
SET character_set_connection = cp1251
Настройки MySQL лежат в файле:
c:\Program Files (x86)\MySQL\MySQL Server 5.1\my.ini
Если сам MySQL использует UTF-8 по умолчанию, то лезть в файл настроек как правило не нужно и все проблемы с кодировками можно решить с помощью MySQL менеджера (например программы HeidiSQL) и запросов SQL.
__________________________________________________________________________________
6) Настройка Windows
Что бы при наборе в браузере определенных сайтов браузер искал их не в интернете, а на локальном компьютере,
в файл:
C:\WINDOWS\system32\drivers\etc\hosts
добавляем:
127.0.0.1 localhost
127.0.0.1 test.ru
127.0.0.1 www.test.ru
127.0.0.1 bebebe
Запись "127.0.0.1 localhost" нужна для того, что бы можно было подключаться к MySQL из PHP указывая не IP адрес 127.0.0.1, а зарезервированное имя "localhost". Так правильнее и "localhost" часто используется на реальных хостингах.
______________________________________________________________________________
7) Перезапуск Apache
Для Windows Vista и Windows7:
остановить и снова запустить Apache
Для Windows XP:
сразу перезапустить Apache не получится - сначала надо обязательно перезагрузить компьютер
(перезагрузка закрепляет значения, автоматически сделанные Apache, PHP и MySQL, в переменной Windows - PATH)
______________________________________________________________________________
Настройка программы phpMyAdmin
phpMyAdmin - это программа для администрирования базы данных MySQL.
Написана на языке PHP, работает через браузер.
Примечательна тем, что на большинстве реальных хостингах она установлена и рекомендуется для работы с базой данных.
Распаковываем все файлы в какую-нибудь папку на сайте, например в "c:/work/bebebe/www/pma/"
В корне переименовать файл
config.sample.inc.php
в
config.inc.php
и редактируем всего одну строчку (надо указать любой код, например "xxx"):
$cfg['blowfish_secret']='xxx';
После чего запускаем phpMyAdmin, набрав в браузере:
bebebe/pma
Вводим логин и пароль которые указывали при установке MySQL
Остальные настройки менять НЕ нужно и по умолчанию они должны содержать:
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['nopassword'] = true;
Если в файле
C:\WINDOWS\system32\drivers\etc\hosts
нет строчки
127.0.0.1 localhost
то phpMyAdmin может не работать "зависать" и выдавать ошибки, например:
#2002 - Сервер не отвечает (либо сокет локального MySQL-сервера некорректно настроен)
Эти зависания можно вылечить изменив в настройке phpMyAdmin:
$cfg['Servers'][$i]['host'] = 'localhost';
на
$cfg['Servers'][$i]['host'] = '127.0.0.1';
но правильнее внести строчку
127.0.0.1 localhost
в файл hosts, т.к. на реальных хостингах, в скриптах PHP при подключении к MySQL указывается именно "localhost", а не конкретные IP адреса.
Вот так вот просто сделать домашний хостинг за 15 минут с нуля. Установка и настройка локального сервера. Apache + PHP + MySql + windows 7/2008r2. Тоже самое можно сделать с помощью Denwer.
Материал сайта pyatilistnik.org
Отличный обзор, спасибо за подробности.
Хорошо все по пунктикам
тоже думаю старый ноут поднять на линуксу для проекта Дизайн интерьера
С текущими ценами на хостинг, смысла я не вижу в, том чтобы у себя держать сервер, платить за электричество лишнее и думать об отказоустойчивости.
Хорошо расписано все.
А как создать видимый в интернете сервер? А то все пишут только о локальном.
У вас задача на кокой ос это провернуть?
Добрый день! Есть желание сделать хостинг из своего домашнего компьютера.
Для этого всё готово, а именно есть статический адрес, проброс портов выполнен.
Из интернета захожу на свой HTML-PHP сайт. Программное обеспечение: php 7.3.0
Windows 10, на Apache 2.4.37(Win64) OpenSSL запущен web-сервер.
Одного нет на моём сайте — работающей формы обратной связи, то есть нет возможности написать письмо с сайта мне на почту. Прошу помочь в этом вопросе.