- 07, Feb 2014
- #1
Поднимаем сервер на localhost-е
Наш путь в хакинге
В хакерстве есть два пути: веб-хакинг и крэкинг.
Крекинг - это взлом и изучение софта, приложений: написание кряков, кейгенов и т.п. Этот путь довольно сложный, ибо нужно обладать хорошими знаниями языков программирования.
Лично я пошёл сначала по пути веб-хакинга, так как он намного интереснее (на мой взгляд), и только недавно начал смотреть в сторону крэкинга (мало что в этом понимая xD). Веб-хакинг подразумевает взлом в интернете (что и понимается под словом "хакерство" чаще всего): это взлом почты, сайтов, форумов, соц.
сетей, и т.д. Как вы уже могли догадаться, сначала я поведу вас именно путём веб-хакинга! Но сперва нам необходимо узнать и понять принципы работы всего Интернета: где находятся все эти веб-странички и что из себя представляет "Всемирная паутина".
Как работает Интернет
"Всемирная паутина" (она же World-Wide-Web и WWW) содержит множество серверов, имеющих свой IP и URL.
Пользователи интернета могут подключаться к серверам и скачивать те файлы, к которым разрешён доступ из сети.
Любая веб-страница - это файл, который скачивается с удалённого сервера и открывается браузером пользователя.
Это упрощённая схема.
На самом деле информация с одной страницы может содержаться на различных серверах, данные могут многократно проходить через прокси и скокс сервера (о них чуть позже) и огибать земной шарик пару раз, прежде чем достигнуть пользователя.
Поднимаем сервер на localhost-е
Внимание! Все, кто по каким-либо неведомым причинам не хочет пытаться разобраться в принципе работы и устройстве полноценного веб-сервера, могут скачать и в два щелчка установить localhost-сервер, а точнее платформу для веб-разработчиков Denwer.
Прочитав урок далее, вы поймёте, как проверить работоспособность locahost сервера и как добавлять на него файлы.
Забегая вперёд, скажу, что в случае с дэнвером вместо папки htdocs будет использоваться папка www.
Когда установите Denver, он создаст свой виртуальный диск в "Мой компьютер". На этом диске в папке home -> localhost и найдёте папку www.
Даю ссылку на упрощённый аналог только потому, что пользоваться им на самом деле в разы удобнее, и при установке и настройке проблем не возникает.
Но тем не менее.
хочу акцентировать ваше внимание на том, что самое главное, что по моей задумке должно было быть извлечено из этого урока - это именно детальное понимание принципа работы сервера любого сайта.
Для того чтобы лучше понять как работает сервер, мы с вами поднимем (установим то есть =) локальный сервер на своём компьютере! Он не будет доступен из Интернета, только из локальной сети и будет носить скромное имя localhost-сервер.
Делаем мы это не для баловства и не чтобы сказать другу: "А у меня свой сервер!", а чтобы мы в дальнейшем имели возможность запускать у себя на тачке php-скрипты.
Дело в том, что php (он же пых-пых) - серверный язык программирования (то есть выполняется на сервере, а не у пользователя в броузере) и просто так запустить php-скрипт не получится.
Нужно запускать его на сервере, который мы и установим!
Итак, нам нужно установить связку Apache+PHP+MySQL (Апач - сервер, пых пых - интерпретатор языка php, MySQL - базы данных). Всё это безобразие качаем с официальных сайтов:
Apache (httpd). В списке выбираем последнюю (по номеру) версию no_ssl. Нас интересуют установочники с расширением .msi
PHP. Качаем Installer последней версии.
MySQL. Уносим MSI Installer, соответствующей архитектуре вашей ОС: 32 или 64 bit.
В первую очередь запускаем установочник апача (Apache.msi), пропускаем лицензионное соглашение и список нововведений и видим окно, где нам предлагают ввести Network Domain, Server name и мыло.
Вводим везде localhost (мыло: admin@localhost), выбираем опцию установки для всех, через 80 порт, как сервис.
После установки стоит убрать апач из автозагрузки, куда он залазит без спроса (он ведь нам не каждый день нужен будет)! Проверим как всё работает.
в адресной строке вбацаем localhost.
Если всё будет работать - сразу сами поймёте
Теперь будем ставить php.
Для этого просто папку PHP копируем в папку, куда установили апач.
Теперь из этой папки (php) нужно файл php.ini-development скопировать в папку WINDOWS и переименовать в php.ini.
Затем в нём (php.ini) найдите строку extension_dir и измените указанное там "C:/php5/ext" на путь_к_папке_с_апачом\php\ext (то есть адрес на вашем жёстком диске к папке ext, которая в папке php). Далее в папке с апачом откроем папку conf и в ней найдём файл httpd.conf.
Открываем его блокнотом и ищем строку
AddType application/x-gzip .gz .tgz
После неё на новой строке пишем:
AddType application/x-httpd-php phtml php
Теперь почти в начале документа находим целый блок строчек, начинающихся с LoadModule. В конец этого блока с новой строки дописываем:
LoadModule php5_module путь_к_папке_с_апачом\php\php5apache2_2.dll
Осталось только настроить параметр DirectoryIndex. Найдём её и отредактируем:
DirectoryIndex index.html index.htm index.html.var index.php
Пора устанавливать MySQL! Запускаем установочник, выбираем полную установку (complete), по окончании установки ставим флажок "Configure the MySQL Server now". Выбираем расширенную конфигурацию, а затем ничего не меняем, а просто нажимаем кнопку далее, пока не дойдём до этапа выбора набора символов (character set). На этом этапе нам необходимо выбрать последний пункт и в выпадающем списке character set установить набор cp1251 (кириллица). Жмём далее и видим в следующем окне 3 флажка.
Тут нам нужно снять второй и установить третий флажки (отключить автозапуск сервиса и добавить видимость bin-дирректории для виндосовской cmd). Далее нам предлагают установить пароль доступа к управлению MySQL.
Обязательно ставим и запоминаем(!) этот пароль (не желательно оставлять поле пустым). Последний этап: тыкаем "Execute". Теперь нам надо отредактировать файл my.ini (он находится в папке, куда вы установили MySQL).
Сначала находим строку port=3306 (в разделе [client]) и после неё на новой строке пишем такое:
Code
character-sets-dir="путь_к_папке_куда_установили_MySQL\share\charsets"
Чуть ниже в документе у нас есть блок "[mysqld]". Вот в нём после строки port=3306 с новой строки (а точнее с двух строк) пишем текст:
character-sets-dir="путь_к_папке_куда_установили_MySQL\share\charsets"
init-connect="SET NAMES cp1251"
Далее ищем строку default-storage-engine=INNODB и меняем в ней INNODB на MYISAM. Сохраняем изменения, закрываем документик.
Установка закончена!
Теперь выясним зачем мы всё это сваяли, как оно работает и работает-ли вообще.
Зайдите в папку с апачом и найдите там папку htdocs.
Это корневая директория, куда вы будете кидать все файлы, которые захотите открыть на локальном сервере (кстати, советую сразу сделать ярлык этой папки в каком-нибудь более доступном месте, потому что каждый раз лазить туда через "Мой компьютер" не очень удобно). Первым всегда открывается файл с именем index, если ничего другого не указано (файлом .htacces). Вот мы и создадим сейчас там файл index.php, содержимое которого будет таким:
Code
<?php
print "Current PHP version: ". phpversion() ."";
$link = mysql_connect("localhost", "root","YOURPASSWORD") or die("Could not connect"); //В этой строчке измените пароль доступа к mysql НА ТОТ, КОТОРЫЙ ВЫ ВВОДИЛИ ПРИ УСТАНОВКЕ MYSQL!!!
if( !$link ) die( mysql_error() );
$db_list = mysql_list_dbs($link);
while ($row = mysql_fetch_object($db_list))
{
echo "
Database \"".$row->Database."\"
\n";
$result = mysql_list_tables($row->Database);
if(!$result) die( "DB Error, could not list tables\n MySQL Error: ".mysql_error() );
else {
while ($row = mysql_fetch_row($result))
print "Table: $row[0]
";
mysql_free_result($result);
}
}
?>
Теперь нужно запустить всё это хозяйство.
Для этого в папке с апачом есть папка bin, а в ней файл ApacheMonitor.exe.
Его тоже советую вынести ярлыком куда-нибудь, куда вы вынесли ярлык к папке htdocs.
Запускайте эту программу.
Вы увидите строку Apache 2.2 в списке сервисов (а у нас больше ничего и нет ). Жмём Start, а после того как сервер запустится нажимаем Services.
В появившемся списке находим сервис MySQL и запускаем его.
Если хотите, можете настроить его на автоматический запуск.
Наш localhost-сервер запущен! Впишите в адресную строку: "localhost", и перед вами окажется результат работы скрипта. Выглядеть всё должно примерно так:
Current PHP version: 5.3.0
Database "information_schema"
Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19
Table: CHARACTER_SETS
Table: COLLATIONS
Table: COLLATION_CHARACTER_SET_APPLICABILITY
Table: COLUMNS
Table: COLUMN_PRIVILEGES
Table: ENGINES
Table: EVENTS
Table: FILES
Table: GLOBAL_STATUS
Table: GLOBAL_VARIABLES
Table: KEY_COLUMN_USAGE
Table: PARTITIONS
Table: PLUGINS
Table: PROCESSLIST
Table: PROFILING
Table: REFERENTIAL_CONSTRAINTS
Table: ROUTINES
Table: SCHEMATA
Table: SCHEMA_PRIVILEGES
Table: SESSION_STATUS
Table: SESSION_VARIABLES
Table: STATISTICS
Table: TABLES
Table: TABLE_CONSTRAINTS
Table: TABLE_PRIVILEGES
Table: TRIGGERS
Table: USER_PRIVILEGES
Table: VIEWS
Database "mysql"
Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19
Table: columns_priv
Table: db
Table: event
Table: func
Table: general_log
Table: help_category
Table: help_keyword
Table: help_relation
Table: help_topic
Table: host
Table: ndb_binlog_index
Table: plugin
Table: proc
Table: procs_priv
Table: servers
Table: slow_log
Table: tables_priv
Table: time_zone
Table: time_zone_leap_second
Table: time_zone_name
Table: time_zone_transition
Table: time_zone_transition_type
Table: user
Database "test"
Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19
Если бы мы не установили пых-пых, то наш php-скрипт не выполнялся бы, и мы увидели бы не результат его работы, а сам скрипт.
Так же при неправильно установленном или настроенном MySQL сервере, скрипт вывел бы сообщение об ошибке.
Если это случилось, переустановите сервер заново! Итак, мы, наконец, имеем в своём распоряжении собственный (хоть и только локальный) сервер, на котором сможем тестировать php-скрипты, фейки и многое другое.
Но самое главное - теперь у нас есть возможность лекго изучать php, используя наш сервер как тренировочную площадку!