Создание сайта на бесплатном хостинге
До этого времени мы занимались подготовительной работой: знакомились с "Денвером" и CMS-движками, выбирали хостинг. Но вот серия статей "Создание сайта…" (см. КГ №№13, 16, 19) подходит к логическому концу. Нам осталось совершить "последний рывок" — разместить сайт в Сети. Это конечная цель. Видимо, она и самая главная.
Часть IV. Публикация сайта в Интернете
О "Денвере", кстати, было рассказано совсем не зря, ведь принципы работы на локальном и удаленном серверах во многом схожи. В чем подобие, а в чем отличия, вы узнаете из статьи. Но прежде, чем приступать непосредственно к делу, нужно кое в чем определиться. Смотрите, у нас есть два варианта дальнейших действий:
1. Установка CMS-движка на удаленном сервере.
2. Перенос готового сайта с локального сервера на сервер удаленный.
Ни первый, ни второй варианты, разумеется, не останутся без внимания. Оба они могут быть оптимальными решениями — все зависит от поставленной цели. Проще и быстрее осуществить "чистую" установку движка (т.е. 1-й вариант), но уж если вы долгое время разрабатывали проект на локальном сервере и желаете перенести в Интернет уже готовый сайт, следует выбирать вариант 2. Начнем с "чистой установки". В чем заключается легкость данного решения? Дело в том, что здесь совсем не обязательно затрагивать БД. По крайней мере, на этапе установки CMS. Перенос файлов движка на сервер, инсталляция — вот и все.
Единственный "темный" момент: закачка файлов не обходится без "общения" с FTP. Знания об этом протоколе будут совсем не лишними — они просто необходимы. Готовы к теории:)?
Введение в FTP.
FTP-менеджеры
FTP (File Transfer Protocol) — один из старейших протоколов передачи данных. Появился он в 1971 году (публике впервые представлен в 1973) и за 30 лет претерпел существенные изменения, в основном, в параметрах безопасности. Окончательный вид стандарт обрел в 1985 году. С FTP мы сталкиваемся довольно часто. Так, ни для кого не открытие, что программное обеспечение в своем большинстве хранится именно на FTP-серверах. Яркий тому пример — свободно распространяемое программное обеспечение под Linux или, скажем, приватные FTP-серверы в LAN-сетях. Огромнейшие залежи информации! По крайней мере, по этой причине заявить, будто "FTP утратил популярность", нельзя.
Как и HTTP (Hypertext Transfer Protocol), он активно используется. Впрочем, между HTTP и FTP — этими маститыми стандартами WWW — отличия существенные. Так, если при HTTP задействован один канал данных, то у FTP их два: канал данных и управляющий (информационный). По первому передаются файлы, а по второму, управляющему, осуществляется связь между компьютером пользователя и удаленным сервером — по стандартам протокола Telnet. Конечно же, никто не вынуждает нас вводить telnet-команды (POST, LIST, PASV, PASS, CWD и др.) через консоль: для упрощения работы предназначены FTP-клиенты (менеджеры) с графическим интерфейсом. Приведу неполный перечень самых известных:
FtpVoyager (www.ftpvoyager.com)
CuteFtp (www.cuteftp.com)
SmartFTP (www.smartftp.com)
LeechFTP (www.stud.fh-heilbronn.de/~jdebis/leechftp)
FtpRush (www.ftprush.com)
FlashFxp (www.flashfxp.com)
Кроме того, для закачки файлов по FTP неплохие возможности имеются и у Total Commander'а (www.ghisler. com). Но пускай как FTP-менеджер он вполне сгодится, я не советовал бы активно им пользоваться — довольно небезопасно и неудобно. В плане FTP Total Commander малофункционален, не знаком с технологией SSL и вдобавок ко всему хранит данные для FTP-доступа в отдельном файле (wcx_ftp.ini). Пароли зашифрованы в MD5-хэше, однако сейчас MD5 — не очень эффективная защита от злоумышленника. Для минимального обеспечения безопасности пароль рекомендовано указывать не в настройках FTP-соединения, а при каждом подключении к серверу. Кстати, к Total'у существует несколько plug-in'ов, которые в значительной степени расширяют возможности встроенного клиента и делают работу по FTP более безопасной (защита данных, SSL-шифрование и т.п.). Парадокс:). Штатные средства ОС Windows 98-XP нам не помощники. Проводник использовать нет смысла, а консольная утилита Ftp (Пуск > Выполнить > ftp) пригодна только для ознакомления с базовыми функциями работы используемого протокола (команда help). А вот обладателям Linux'а повезло: практически в любом дистрибутиве этой ОС присутствует несколько FTP-клиентов — как консольных, так и с GUI-интерфейсом, и для KDE, и для Gnome. Ну, а пользователям "Окон" советую остановиться на FTP-клиенте из упомянутого списка, благо есть возможность выбора. Практически любой из вышеназванных обладает такими достойными качествами, как функциональность, безопасность, удобство работы и интерфейса. Я не стану проводить обзор программ, а рассмотрю одну — CuteFtp 7 — на мой взгляд, одно из самых популярных решений. Приступая к работе в Сети, мы шаг за шагом настроим FTP-клиент и посмотрим, как с ним следует обходиться. Итак, открыв CuteFtp и создав новое FTP-соединение (Ctrl+N), вы увидите диалог с 4 вкладками: General, Type, Actions и Op-tions.
Вкладка General
Label: Имя FTP-соединения. Любая ассоциативная метка.
Host address: Адрес FTP-сервера, на который будут закачиваться файлы.
Username/Password: Логин/пароль для доступа к FTP-серверу.
Login method: Оставим Normal. При выборе Anony-mous логин должен быть ano-nymous, а пароль — любой e-mail.
Вкладка Type
Protocol type: Предложены неплохие возможности. По умолчанию указано просто "FTP", но вы, конечно, поэкспериментируйте с настройками. Шифрование данных для этого протокола в любом случае не помешает.
Server type: ОС удаленного сервера.
Data connection type: Тип подключения. Чаще всего используется пассивный режим (PASV).
Transfer type: FTP различает в основном два типа передачи данных: двоичный (Binary, Image) — графические изображения, архивы, исполняемые файлы и т.д. и текстовый (ASCII) — файлы текстового формата (config-, *.txt-файлы, скрипты, и т.п.). FTP-клиент умеет сам определять тип данных и на лету чередовать ASCII c Binary (опция Auto-detect). Из типов предачи еще отметим Ebcdic, но он, похоже, утратил актуальность.
Password protection: Шифрование пароля для доступа к серверу. Замечено, что редкий хостер поддерживает шифровку пароля. Так что выставить по выбору MD5, MD4 или Auto-detect OTP (One Time Password) может и не получиться: опция зависит напрямую от серверных технологий хостера. У меня, например, ни одна из вышеназванных не сработала (не считая Not Encrypted).
Вкладка Actions
When...remote folder: После соединения с сервером идет переход в определенную вами директорию. Эту строчку можно оставить пустой или вписать слэш (/). Если файлы сайта содержатся в определенном каталоге, пропишите его путь — например: www/, htdocs/, public/.
When...local folder: Для удобства выберите ту директорию, из которой закачиваете файлы на сервер.
For navigation…options: Использовать ли функцию кэширования при навигации по серверу и, исходя из этого, другие настройки.
Вкладку Options мы пропустили, поскольку она нас интересует в малой степени. Ну, а для заполнения вышеперечисленных пригодятся данные, добытые у хостера. Что ж, программа настроена и ждет, когда вы подключитесь к Сети. Соединившись с FTP-сервером (комбинация <Ctrl+T>), сразу после авторизации и перехода в домашнюю директорию закачивайте туда устанавливаемый движок. Делается это либо методом перетаскивания (drag & drop), либо посредством контекстного меню. Конфигурационный файл, разумеется, уже заранее должен быть приведен в соответствующий вид.
В описанном мною случае рассматривается типичный вариант FTP-соединения: "пользователь-сервер". Однако не стоит сбрасывать со счетов другую весьма интересную опцию некоторых FTP-клиентов — FXP (кроссерверное соединение). Благодаря FXP можно осуществить передачу данных с одного хоста на другой, т.е. соединение типа "сервер-сервер". Между ними организуется канал данных, пользователь же "заведует" управляющим каналом. Представьте себе, какая высокая скорость передачи может быть достигнута! Но учтите, что сервер далеко не каждого хостера поддерживает описанную технологию.
Настройка прав доступа для файлов (CHMOD)
После закачки движка на удаленный FTP-сервер требуется установить права доступа (далее — ПД) к файлам и каталогам согласно руководству CMS (но если там не оговорено — значит, не надо). Очень ответственный момент для безопасности вашего сайта. Как мы знаем, в Windows есть понятие "атрибуты" (Только чтение, Скрытый, Архивный). В UNIX (а большинство серверов в Интернете функционирует под *nix) применяется более совершенная и надежная система присвоения ПД (см. таблицу 1).
Необходимо сделать пояснения, что означают символы в первой колонке:
[r] (read) — чтение;
[x] (eXecute) — исполнение, запуск;
[w] (write) — чтение;
[-] — запись запрещена;
[-] (вначале) — признак файла;
[d] (вначале) — признак директории.
Кроме буквенного, CHMOD имеет и цифровое обозначение (второй столбик). Оно присваивается по особому механизму, о котором, наверное, не стоит рассказывать (особо любопытным могу разъяснить на форуме). Проанализировав таблицу, можно сделать такой вывод: чем больше букв и чем выше цифра, тем выше уровень доступа к файлам/каталогам у владельца, группы и остальных. Владелец (user) — это хозяин FTP-ресурса; группа (group) — пользователи, подключенные к FTP-ресурсу; остальные (world) — взаимодействующие с сайтом через HTTP. Заметно, что разница в правах между 600 и 777 очень большая. Отсюда второй вывод: нужно быть осторожным и внимательным при выставлении ПД. CHMOD'ом не стоит особо увлекаться, поскольку чрезмерное ограничение/разрешение прав по отношению к определенному файлу (папке) может принести нежелательный эффект:). Как, собственно, выставлять права доступа? В FTP-клиенте, выделив требуемые папку/файл, выберите опцию Properties из контекстного меню. Появится окошко, где можно будет ввести "заветные" цифры. Не первый раз, просматривая форумы веб-мастерской направленности, я удивляюсь: почему многие не пользуются таким простым и быстрым методом? Кто в FAR-manager'е права выставляет, кто в Total Cmd, кто в Putty и т.д. Дело привычки?..
Завершение установки
В остальном размещение сайта в Сети аналогично "локальному". После закачки файлов и настройки прав доступа запускаем мастер установки движка и вводим запрашиваемые данные. Понятно, что они будут несколько отличаться от "локальных". В частности, адрес сервера баз данных ($dbhost) у хостера не всегда localhost. Возможно, другие и логин/пароль БД. Префикс таблиц следует указать тот, что и на вашем домашнем сервере — для совместимости между двумя SQL-базами. Рассчитывайте на то, что в дальнейшем вы будете импортировать/экспортировать как саму БД, так и некоторые ее таблицы — обмениваться данными, в общем. В данном направлении отлично поможет PhpMyAdmin.
Инсталляция панели PhpMyAdmin
Почти у каждого хостера, с которым вам доведется или довелось встретиться, панель управления MySQL под названием PhpMyAdmin установлена — сегодня это своеобразное правило хорошего тона. Сразу напрашивается вопрос: а что, если отсутствует? На самом деле ничего страшного — установим сами! Дело несложное. Итак, будем считать, что один из новейших дистрибутивов PhpMyAdmin'а вы уже скачали. Я нашел у себя сентябрьский релиз версии 2.6.4. Распакуйте файлы из архива в отдельную папку.
Давайте хорошенько разберемся в содержимом, ведь кое-что здесь в дальнейшем совершенно не понадобится. Можно удалить, например, *.txt, *.html, Readme и файлы без расширения в корне папки. Поддержка многих языков (каталог lang) также вряд ли пригодится. Короче, оставляем все самое необходимое на собственное усмотрение. Скомпилированный дистрибутив важно проверить на работоспособность. Здесь, как всегда, поможет виртуальный сервер "Денвер". В домашнем каталоге (/home/localhost/www/) создадим папку, где будет располагаться новый PhpMyAdmin, и копируем туда файлы дистрибутива.
Ну вот, все готово, даже конфигурационный файл необязательно править. Тестирование PhpMyAdmin'а производится по адресу: "localhost/имя созданного каталога" (не забывайте: сервер должен быть запущен). Работает — ОК. Но подумайте, что будет, если перенести данный дистрибутив на удаленный сервер без изменений?
Любой посторонний, зная путь к PhpMyAdmin'у, сможет свободно воспользоваться его услугами. Поэтому мы примем необходимые меры предохранения, отредактировав config-файл комплекса PhpMyAdmin — сonfig.inc.php. Как и раньше, советую использовать текстовый редактор с подсветкой синтаксиса и нумерацией строк — что-то типа GridinSoft Notepad (www.note-pad.gridinsoft.com). В конфигурационном файле нас интересуют следующие строки:
$cfg['Servers'][$i]['auth_type'] = 'http'; // метод аутентификации (основанный на config, http или cookie)
$cfg['Servers'][$i]['user'] = 'user'; // пользователь MySQL
$cfg['Servers'][$i]['password'] = 'password'; // пароль для MySQL-БД (только для config-доступа)
Метод аутентификации (удостоверения) выставляется строго 'http' в целях защиты доступа к базе данных. Метод http избавляет от необходимости хранения личных данных ('user', 'password') в конфигурационном файле. Логин/пароль вводятся при каждом соединении с PMA. А вот для локального сервера лучше использовать метод удостоверения по умолчанию — config. При config-аутентификации обязательно задействуйте имя пользователя и пароль — только тогда вы получите доступ к БД. Еще отмечу интересную опцию: вписав пользователем 'user', вы получите доступ ко всем имеющимся на хосте (на локальном сервере — localhost) базам. Значение ['password'] для БД в данном случае необходимо оставить пустым… Почти все. Осталось в строке $cfg['Servers'] [$i]['host'] = 'localhost' изменить или оставить как есть адрес хоста. Хост, разумеется, указывает хостер. Настройка PhpMyAdmin'а закончена, комплект готов к отправлению на сервер. Далее пойдет обзор базовых возможностей PMA.
Работа с БД через PhpMyAdmin
Как театр начинается с вешалки, так и программа — с интерфейса. Интерфейс PhpMyAdmin'a несложен — он делится на боковую панель с возможностью выбора БД и основное поле, содержащее несколько вкладок. Ознакомимся с первыми тремя — на мой взгляд, самыми важными. Структура — содержимое вкладки наглядно демонстрирует содержимое базы: количество таблиц, кодировка, размер каждой и т.п. С таблицами можно совершать различные действия: как по отдельности (просмотреть содержимое, выполнить запрос, создать и уничтожить), так и массово (то же удаление, очистка, проверка, оптимизация). Последняя, кстати, весьма полезная функция — рекомендую. Пример: в БД содержится ~60 таблиц, общий размер — 320 Kb. После десятисекундных действий база "худеет" до 266,5 Kb. Оптимизация! SQL — уже знакомая нам вкладка. Наряду с соседней — Экспорт — она очень важна. По этому адресу пользователю доступны импорт таблиц в базу данных и выполнение запроса. От его составителя, натурально, требуется уверенное знание основ SQL-синтаксиса. К сожалению, формат статьи не позволяет изложить тему составления запроса в подробностях, "на пальцах" же объяснить тоже не удастся. Тот, кто заинтересуется языком SQL, пусть обратится к старым номерам КГ — 3 года назад публиковались замечательные статьи Д. Мигачева, в частности, о SQL. Масса толкового материала есть и в Интернете (см. "Ссылки в помощь"). В любом случае, кое-что прояснится, если вы откроете SQL-файл и хотя бы поверхностно изучите его код. Импорт SQL-дампа — тоже запрос. Экспорт — создание дампа таблиц БД. Данная функция нужна, например, для того, чтобы получить резервную копию базы. Процесс этот несложный. В колонке под надписью "Экспорт" выделите таблицы, тип — SQL. В опциях SQL выберите дополнительные условия (по надобности). В опции SQL export compatibility обычно выставляется none, но если нужно обеспечить совместимость таблиц с MSSQL, ORACLE, MySQL 3.x — 4.x и т. п., выбирайте желаемое из списка. Тип экспорта — Insert (вставка), Update (обновление) или Replace (замена). Insert используется в том случае, если импортируемых впоследствии таблиц в другой базе нет. В случае, если таблица с таковым именем уже имеется, PhpMyAdmin выдает предупреждение, что "table is exists". Для желаемого результата попробуйте параметры Update или Replace. "Последний штрих" — выбор сжатия. Однозначно ставим Gzip (жаль, что 7z нету:)). После нажатия на кнопку Go! (рус. "Пошел") дамп базы сохраняется на компьютере. Советую делать резервную копию базы как можно чаще: не только перед обновлением CMS, но и без особых причин. Поинтересуйтесь у своего хостера, делает ли он backup пользовательских баз данных, и если да, то как часто. Возможно, вопрос резервирования БД с вашей стороны отодвинется на задний план.
Альтернативный вариант
Мы еще не рассмотрели второй вариант публикации сайта. Итак, как же произвести перенос CMS и базы данных на сайт? Процесс состоит из двух-трех этапов. Сначала вы должны закачать на удаленный хост все файлы движка, опять же, с измененным конфигом. Второй шаг — импорт таблиц локальной базы данных в базу "интернетовского" сервера. Для этого посредством PhpMyAdmin'а сделайте полный дамп таблиц вашей БД с "Денвера", а затем, открыв PMA на удаленном сервере, выполните запрос (вкладка SQL) из ранее экспортированного файла.
Если вы не уверены, что ваша база данных существует в Сети, советую сделать проверку. А поможет в этом маленький php-скрипт:
<?$link = mysql_connect("dbhost", "login", "pass")or die("Невозможно подключиться…");mysql_close($link);?>
где dbhost — адрес сервера БД, login — имя пользователя БД, а pass — пароль. При неудачном соединении выдается строка "Невозможно подключиться…"
После импорта данных необходимо зайти в админ-панель движка и навести порядок. Чаще всего приходится изменять пути каталогов (был, скажем, "localhost/forum" — станет "httр://site_name/forum"), какие-никакие настройки. Если вам повезет, то после указанных действий сайт заработает. Однако не всегда все складывается удачно. К сожалению, иногда (и довольно часто) возникает проблема несовместимости. Наиболее распространенная связана с конфликтом разных версий MySQL. База данных, экспортируемая с MySQL <4.1, вряд ли будет корректно распознана в более поздних релизах СУБД. Виной тому — проблема с кодировками windows-1251 и UTF8. Частичное решение конфликта нашли разработчики Денвера (www.faq.dklab.ru), но — по своему опыту знаю — действует оно не всегда. Еще более остро обстоят дела с MySQL 5, где SQL-запросы из старых версий и вовсе не выполнишь. Проблем много, и одним из рациональных решений с вашей стороны будет обновление СУБД "Денвера" до MySQL 5. Или смена хостера:). Вообще проблема несовместимости возникает и при "чистой" инсталляции CMS на сервере. Приятно заметить, что многие разработчики CMS своевременно предоставляют свежие заплатки под новые версии MySQL, а также возможность выбора типа установки. Бывает и наоборот: пользователи CMS раньше самих разработчиков устраняют недостатки любимого движка. Возьмем Subdreamer. Меня спрашивали, как установить движок на сервере ho.com.ua. Ответ был найден на форуме сайта Sabdrimer.com. Оказывается, ошибка крылась в коде SQL-запроса в инсталляционном файле (install.php в папке /install). Его-то и следует подправить. За подробностями следуйте на форум по адресу www.sabdrimer.com/forum/index.php?showtopic=313. Правленый файл доступен на моем сайте (ilyuha.ho.com.ua/downloads/install_sbd.rar).
Узнать о серверном ПО вашего хостера можно не только через сайт поддержки, но и с помощью нижеследующего php-запроса:
<? phpinfo() ?>
Введение в SSH
Одним из минусов стандарта Telnet является его незащищенность. При определенных навыках "выловить" данные между двумя источниками, использующими уязвимый, без шифрования, протокол, не составит большого труда. Но сравнительно недавно (в 1995 г.) ему на смену прибыл протокол SSH (Secure Shell), по функциям очень cхожий c Telnet'ом, но намного более безопасный и… интересный. Отличают две версии протокола: SSH1 и SSH2 (1998 г.). На серверах чаще всего используется более поздняя версия, поскольку она обладает значительным преимуществом по сравнению с первой. С получением услуг SSH открываются без преувеличения очень большие возможности. Кто имеет опыт работы с любой из ОС семейства Unix, оценит по достоинству. Ну, а тем, кто с "униксоподобными" и вовсе не знаком, сначала придется поучиться. Тяжело в учении — легко в бою:). Протокол SSH, скажу, не из легких для освоения, но теперь все больше хостеров предлагают его использование. Например, на Holm'е (www.holm.ru) работать с базами данных возможно только по SSH2. (Я, думаю, привел не лучший пример: мало кто разместит свой сайт у упомянутого хостера:)). А на хостинге www.host.sk shell-доступ уже используется по умолчанию, хотя совсем недавно "просил" отдельной регистрации. Жаль, что по качеству эта услуга уступает аналогичной на Holm'е… Так вот, протокол SSH замечателен тем, что обеспечивает выполнение команд на удаленном сервере (вам выделяется shell-аккаунт с сильно ограниченными правами) и копирование файлов без необходимости FTP. Все это дополняется мощным шифрованием и сжатием передаваемых данных. Какие программы мы задействуем? Традиционно используются две: Putty и/или WinSCP3. Обе бесплатны и доступны на www.chiark.greenend.org.uk/~sgtatham/putty/ и www.winscp.net соответственно. С моей пользовательской точки зрения WinSCP как нельзя более подходящий для различных операций с файлами, а Putty — для командной работы (хотя у WinSCP тоже есть терминал).
Приведу один пример. Представьте: есть директория /forum в корне сайта. Как она удаляется через FTP-клиент? Каждый файл "уходит" по отдельности. В WinSCP, который использует не FTP, а SCP, папка /forum удалится мгновенно. Еще вариант. Архивируем сконфигурированный движок в формат gz и копируем архив на сервер, там его и распаковываем (команда gunzip). Таким образом мы существенно сократим время. Это мелочи, конечно, но мелочи приятные. Добавьте сюда безопасность SCP/SSH-канала — и WinSCP однозначно можно считать лучше любого FTP-клиента. Касательно работы с MySQL. PhpMyAdmin, упоминаемый выше, все-таки удобнее. Но ввиду того, что на серверах скрипт работает не всегда, SSH-вариант не станем исключать. Нам понадобятся Putty и прочные знания о MySQL. Если со знаниями проблема, начинайте изучать СУБД — в теории и на практике. Как известно, MySQL — продукт мультиплатформенный, поэтому запросы из командной строки в Windows должны совпасть с таковыми в *nix. Cmd.exe к вашим услугам!:) В "Денвере" exe-файл MySQL расположен по адресу: /usr/local/mysql4(5)/bin/mysql.exe (не забудьте запустить сервер). Заходим под своим именем и паролем: mysql -u<user> p<password>; выбираем БД: use <dbname> и изучаем! Но мы говорим о shell-доступе, не так ли? Сейчас я покажу, как произвести импорт/экспорт SQL-дампа по протоколу SSH. Итак, вы авторизовались на сервере (кстати, пароль в Putty при наборе не показывается) и, скорее всего, попали в Bash (это один из "униксовых" терминалов).
Собственно, экспорт таблиц производится запросом:
mysqldump --add_drop -u<user> -P<port> -h<dbhost> -p<password> <dbname> | gzip -c >file.sql;
импорт из файла: mysql -<user> -p<password> -h<dbhost> -P<port> <dbname> < file.sql
Пояснения: <user> — пользователь БД, <port> — порт для подключения к серверу (на HOLM'е — 3306), <dbhost> — хост БД, <password> — пароль к БД, <dbname> — имя БД.
Полезные утилиты и команды в Unix:
help — справка;
get/put — закачка/получение данных;
ls -al — показать содержимое текущего каталога;
cd — выбор/смена директории;
cp — копировать;
mkdir — создать директорию;
mysqldump — получение резервной копии баз данных;
man — справочная информация по команде (напр., man mysqldump);
ftp — FTP-клиент;
gzip — популярный gz-архиватор;
gunzip — разархивировать gz-архив;
chmod — установка прав доступа;
mc — файловый менеджер наподобие Norton Cmd.
Настройка директивы .htaccess
Напоследок, когда все более-менее важные вопросы уже рассмотрены, расскажу вам о волшебном файле .htaccess. Изменение его содержимого повлияет на работу сервера Apache. Каждый такой файл должен находиться в директории, к которой применяются настройки.
## Файлы индексного документа (загружаются в первую очередь при входе на сайт)
DirectoryIndex index.shtml index. html index.htm index.php3 index. php
## Документы в кодировке windows-1251
AddDefaultCharset windows-1251
## Воспринимать файлы *.html как SSI
AddHandler server-parsed .html
## Разрешение показа содержимого каталога
Options +Indexes
## Не выдавать сообщение об ошибках при обработке РНР-скриптов
php_value error_reporting 7
## Запрет всем пользователям посещать сайт (раздел)
deny from all
## Запрет пользователю с означенным IP-адресом посещать сайт/раздел
deny from ххх.ххх.ххх.ххх
## Нахождение файла с информацией об ошибочном запросе, где error404.html — страница с сообщением
ErrorDocument 404 /error404.html
## Запрет входа через прокси
RewriteEngine On
RewriteCond %{HTTP:VIA} .+
RewriteRule (.+) httр://sitename.com/
Я перечислил лишь некоторые из многочисленных опций директивы. На самом деле .htaccess умеет защищать определенные каталоги паролем, преобразовывать динамические адреса в статические и др. Единственное НО: в редких случаях некоторые "особо заботливые" хостеры htaccess-директивы отключают.
Термины и их пояснения
Кэш (англ. cache) — это промежуточный буфер с быстрым доступом, который хранит в себе ту информацию, которая с наибольшей вероятностью может быть запрошена (из Википедии).
SSL — (англ. Secure Sockets Layer — протокол защищенных сокетов) — криптографическая технология, обеспечивающая безопасную передачу данных в сети Интернет.
Дамп (англ. dump — выбрасывать, выгружать) — здесь: снимок таблиц БД.
SQL-запрос — набор специфических команд, составленных по правилам языка SQL.
Вот и все, что мне хотелось вам рассказать про создание сайта на бесплатном хостинге. Если последняя статья вызвала затруднения, обращайтесь на форум ilyuha.ho.com.ua/forum. Постараюсь ответить. Также пишите, рассказывайте про собственные работы — обсудим вместе. Успехов вам!
Ссылки в помощь
сайт — русскоязычный сайт поддержки PhpMyAdmin'a. В документации (/doc) подробно рассказано об установке и настройке панели, а также о http-, config- и cookie-аутентификации.
сайт — статья "Основы SQL: запросы к базе данных".
сайт — список некоторых "униксовых" команд.
сайт — Ssh FAQ (русская редакция).
Илья Муравьев, iamm@tut.by
Часть IV. Публикация сайта в Интернете
О "Денвере", кстати, было рассказано совсем не зря, ведь принципы работы на локальном и удаленном серверах во многом схожи. В чем подобие, а в чем отличия, вы узнаете из статьи. Но прежде, чем приступать непосредственно к делу, нужно кое в чем определиться. Смотрите, у нас есть два варианта дальнейших действий:
1. Установка CMS-движка на удаленном сервере.
2. Перенос готового сайта с локального сервера на сервер удаленный.
Ни первый, ни второй варианты, разумеется, не останутся без внимания. Оба они могут быть оптимальными решениями — все зависит от поставленной цели. Проще и быстрее осуществить "чистую" установку движка (т.е. 1-й вариант), но уж если вы долгое время разрабатывали проект на локальном сервере и желаете перенести в Интернет уже готовый сайт, следует выбирать вариант 2. Начнем с "чистой установки". В чем заключается легкость данного решения? Дело в том, что здесь совсем не обязательно затрагивать БД. По крайней мере, на этапе установки CMS. Перенос файлов движка на сервер, инсталляция — вот и все.
Единственный "темный" момент: закачка файлов не обходится без "общения" с FTP. Знания об этом протоколе будут совсем не лишними — они просто необходимы. Готовы к теории:)?
Введение в FTP.
FTP-менеджеры
FTP (File Transfer Protocol) — один из старейших протоколов передачи данных. Появился он в 1971 году (публике впервые представлен в 1973) и за 30 лет претерпел существенные изменения, в основном, в параметрах безопасности. Окончательный вид стандарт обрел в 1985 году. С FTP мы сталкиваемся довольно часто. Так, ни для кого не открытие, что программное обеспечение в своем большинстве хранится именно на FTP-серверах. Яркий тому пример — свободно распространяемое программное обеспечение под Linux или, скажем, приватные FTP-серверы в LAN-сетях. Огромнейшие залежи информации! По крайней мере, по этой причине заявить, будто "FTP утратил популярность", нельзя.
Как и HTTP (Hypertext Transfer Protocol), он активно используется. Впрочем, между HTTP и FTP — этими маститыми стандартами WWW — отличия существенные. Так, если при HTTP задействован один канал данных, то у FTP их два: канал данных и управляющий (информационный). По первому передаются файлы, а по второму, управляющему, осуществляется связь между компьютером пользователя и удаленным сервером — по стандартам протокола Telnet. Конечно же, никто не вынуждает нас вводить telnet-команды (POST, LIST, PASV, PASS, CWD и др.) через консоль: для упрощения работы предназначены FTP-клиенты (менеджеры) с графическим интерфейсом. Приведу неполный перечень самых известных:
FtpVoyager (www.ftpvoyager.com)
CuteFtp (www.cuteftp.com)
SmartFTP (www.smartftp.com)
LeechFTP (www.stud.fh-heilbronn.de/~jdebis/leechftp)
FtpRush (www.ftprush.com)
FlashFxp (www.flashfxp.com)
Кроме того, для закачки файлов по FTP неплохие возможности имеются и у Total Commander'а (www.ghisler. com). Но пускай как FTP-менеджер он вполне сгодится, я не советовал бы активно им пользоваться — довольно небезопасно и неудобно. В плане FTP Total Commander малофункционален, не знаком с технологией SSL и вдобавок ко всему хранит данные для FTP-доступа в отдельном файле (wcx_ftp.ini). Пароли зашифрованы в MD5-хэше, однако сейчас MD5 — не очень эффективная защита от злоумышленника. Для минимального обеспечения безопасности пароль рекомендовано указывать не в настройках FTP-соединения, а при каждом подключении к серверу. Кстати, к Total'у существует несколько plug-in'ов, которые в значительной степени расширяют возможности встроенного клиента и делают работу по FTP более безопасной (защита данных, SSL-шифрование и т.п.). Парадокс:). Штатные средства ОС Windows 98-XP нам не помощники. Проводник использовать нет смысла, а консольная утилита Ftp (Пуск > Выполнить > ftp) пригодна только для ознакомления с базовыми функциями работы используемого протокола (команда help). А вот обладателям Linux'а повезло: практически в любом дистрибутиве этой ОС присутствует несколько FTP-клиентов — как консольных, так и с GUI-интерфейсом, и для KDE, и для Gnome. Ну, а пользователям "Окон" советую остановиться на FTP-клиенте из упомянутого списка, благо есть возможность выбора. Практически любой из вышеназванных обладает такими достойными качествами, как функциональность, безопасность, удобство работы и интерфейса. Я не стану проводить обзор программ, а рассмотрю одну — CuteFtp 7 — на мой взгляд, одно из самых популярных решений. Приступая к работе в Сети, мы шаг за шагом настроим FTP-клиент и посмотрим, как с ним следует обходиться. Итак, открыв CuteFtp и создав новое FTP-соединение (Ctrl+N), вы увидите диалог с 4 вкладками: General, Type, Actions и Op-tions.
Вкладка General
Label: Имя FTP-соединения. Любая ассоциативная метка.
Host address: Адрес FTP-сервера, на который будут закачиваться файлы.
Username/Password: Логин/пароль для доступа к FTP-серверу.
Login method: Оставим Normal. При выборе Anony-mous логин должен быть ano-nymous, а пароль — любой e-mail.
Вкладка Type
Protocol type: Предложены неплохие возможности. По умолчанию указано просто "FTP", но вы, конечно, поэкспериментируйте с настройками. Шифрование данных для этого протокола в любом случае не помешает.
Server type: ОС удаленного сервера.
Data connection type: Тип подключения. Чаще всего используется пассивный режим (PASV).
Transfer type: FTP различает в основном два типа передачи данных: двоичный (Binary, Image) — графические изображения, архивы, исполняемые файлы и т.д. и текстовый (ASCII) — файлы текстового формата (config-, *.txt-файлы, скрипты, и т.п.). FTP-клиент умеет сам определять тип данных и на лету чередовать ASCII c Binary (опция Auto-detect). Из типов предачи еще отметим Ebcdic, но он, похоже, утратил актуальность.
Password protection: Шифрование пароля для доступа к серверу. Замечено, что редкий хостер поддерживает шифровку пароля. Так что выставить по выбору MD5, MD4 или Auto-detect OTP (One Time Password) может и не получиться: опция зависит напрямую от серверных технологий хостера. У меня, например, ни одна из вышеназванных не сработала (не считая Not Encrypted).
Вкладка Actions
When...remote folder: После соединения с сервером идет переход в определенную вами директорию. Эту строчку можно оставить пустой или вписать слэш (/). Если файлы сайта содержатся в определенном каталоге, пропишите его путь — например: www/, htdocs/, public/.
When...local folder: Для удобства выберите ту директорию, из которой закачиваете файлы на сервер.
For navigation…options: Использовать ли функцию кэширования при навигации по серверу и, исходя из этого, другие настройки.
Вкладку Options мы пропустили, поскольку она нас интересует в малой степени. Ну, а для заполнения вышеперечисленных пригодятся данные, добытые у хостера. Что ж, программа настроена и ждет, когда вы подключитесь к Сети. Соединившись с FTP-сервером (комбинация <Ctrl+T>), сразу после авторизации и перехода в домашнюю директорию закачивайте туда устанавливаемый движок. Делается это либо методом перетаскивания (drag & drop), либо посредством контекстного меню. Конфигурационный файл, разумеется, уже заранее должен быть приведен в соответствующий вид.
В описанном мною случае рассматривается типичный вариант FTP-соединения: "пользователь-сервер". Однако не стоит сбрасывать со счетов другую весьма интересную опцию некоторых FTP-клиентов — FXP (кроссерверное соединение). Благодаря FXP можно осуществить передачу данных с одного хоста на другой, т.е. соединение типа "сервер-сервер". Между ними организуется канал данных, пользователь же "заведует" управляющим каналом. Представьте себе, какая высокая скорость передачи может быть достигнута! Но учтите, что сервер далеко не каждого хостера поддерживает описанную технологию.
Настройка прав доступа для файлов (CHMOD)
После закачки движка на удаленный FTP-сервер требуется установить права доступа (далее — ПД) к файлам и каталогам согласно руководству CMS (но если там не оговорено — значит, не надо). Очень ответственный момент для безопасности вашего сайта. Как мы знаем, в Windows есть понятие "атрибуты" (Только чтение, Скрытый, Архивный). В UNIX (а большинство серверов в Интернете функционирует под *nix) применяется более совершенная и надежная система присвоения ПД (см. таблицу 1).
Для файлов | ||
-rw------- | (600) | чтение и запись доступны только владельцу |
-rw-r--r-- | (644) | владелец имеет разрешение на чтение и запись; группа и все остальные — только на чтение |
-rwx------ | (700) | только владелец имеет разрешение на чтение, запись и исполнение |
-rwxr-xr-x | (755) | владелец имеет разрешение на чтение, запись и исполнение; группа и остальные — только на чтение и исполнение |
-rwx--x--x | (711) | владелец имеет разрешение на чтение, запись и исполнение; группа и остальные — только на исполнение |
-wxrwxrwx | (777) | всем разрешены чтение, запись и исполнение |
Для директорий | ||
drwx------ | (700) | только владелец имеет доступ к чтению и записи в директории |
drwxr-xr-x | (755) | владелец имеет полный доступ к директории, остальные имеют права на чтение содержимого директории и на исполнение |
Необходимо сделать пояснения, что означают символы в первой колонке:
[r] (read) — чтение;
[x] (eXecute) — исполнение, запуск;
[w] (write) — чтение;
[-] — запись запрещена;
[-] (вначале) — признак файла;
[d] (вначале) — признак директории.
Кроме буквенного, CHMOD имеет и цифровое обозначение (второй столбик). Оно присваивается по особому механизму, о котором, наверное, не стоит рассказывать (особо любопытным могу разъяснить на форуме). Проанализировав таблицу, можно сделать такой вывод: чем больше букв и чем выше цифра, тем выше уровень доступа к файлам/каталогам у владельца, группы и остальных. Владелец (user) — это хозяин FTP-ресурса; группа (group) — пользователи, подключенные к FTP-ресурсу; остальные (world) — взаимодействующие с сайтом через HTTP. Заметно, что разница в правах между 600 и 777 очень большая. Отсюда второй вывод: нужно быть осторожным и внимательным при выставлении ПД. CHMOD'ом не стоит особо увлекаться, поскольку чрезмерное ограничение/разрешение прав по отношению к определенному файлу (папке) может принести нежелательный эффект:). Как, собственно, выставлять права доступа? В FTP-клиенте, выделив требуемые папку/файл, выберите опцию Properties из контекстного меню. Появится окошко, где можно будет ввести "заветные" цифры. Не первый раз, просматривая форумы веб-мастерской направленности, я удивляюсь: почему многие не пользуются таким простым и быстрым методом? Кто в FAR-manager'е права выставляет, кто в Total Cmd, кто в Putty и т.д. Дело привычки?..
Завершение установки
В остальном размещение сайта в Сети аналогично "локальному". После закачки файлов и настройки прав доступа запускаем мастер установки движка и вводим запрашиваемые данные. Понятно, что они будут несколько отличаться от "локальных". В частности, адрес сервера баз данных ($dbhost) у хостера не всегда localhost. Возможно, другие и логин/пароль БД. Префикс таблиц следует указать тот, что и на вашем домашнем сервере — для совместимости между двумя SQL-базами. Рассчитывайте на то, что в дальнейшем вы будете импортировать/экспортировать как саму БД, так и некоторые ее таблицы — обмениваться данными, в общем. В данном направлении отлично поможет PhpMyAdmin.
Инсталляция панели PhpMyAdmin
Почти у каждого хостера, с которым вам доведется или довелось встретиться, панель управления MySQL под названием PhpMyAdmin установлена — сегодня это своеобразное правило хорошего тона. Сразу напрашивается вопрос: а что, если отсутствует? На самом деле ничего страшного — установим сами! Дело несложное. Итак, будем считать, что один из новейших дистрибутивов PhpMyAdmin'а вы уже скачали. Я нашел у себя сентябрьский релиз версии 2.6.4. Распакуйте файлы из архива в отдельную папку.
Давайте хорошенько разберемся в содержимом, ведь кое-что здесь в дальнейшем совершенно не понадобится. Можно удалить, например, *.txt, *.html, Readme и файлы без расширения в корне папки. Поддержка многих языков (каталог lang) также вряд ли пригодится. Короче, оставляем все самое необходимое на собственное усмотрение. Скомпилированный дистрибутив важно проверить на работоспособность. Здесь, как всегда, поможет виртуальный сервер "Денвер". В домашнем каталоге (/home/localhost/www/) создадим папку, где будет располагаться новый PhpMyAdmin, и копируем туда файлы дистрибутива.
Ну вот, все готово, даже конфигурационный файл необязательно править. Тестирование PhpMyAdmin'а производится по адресу: "localhost/имя созданного каталога" (не забывайте: сервер должен быть запущен). Работает — ОК. Но подумайте, что будет, если перенести данный дистрибутив на удаленный сервер без изменений?
Любой посторонний, зная путь к PhpMyAdmin'у, сможет свободно воспользоваться его услугами. Поэтому мы примем необходимые меры предохранения, отредактировав config-файл комплекса PhpMyAdmin — сonfig.inc.php. Как и раньше, советую использовать текстовый редактор с подсветкой синтаксиса и нумерацией строк — что-то типа GridinSoft Notepad (www.note-pad.gridinsoft.com). В конфигурационном файле нас интересуют следующие строки:
$cfg['Servers'][$i]['auth_type'] = 'http'; // метод аутентификации (основанный на config, http или cookie)
$cfg['Servers'][$i]['user'] = 'user'; // пользователь MySQL
$cfg['Servers'][$i]['password'] = 'password'; // пароль для MySQL-БД (только для config-доступа)
Метод аутентификации (удостоверения) выставляется строго 'http' в целях защиты доступа к базе данных. Метод http избавляет от необходимости хранения личных данных ('user', 'password') в конфигурационном файле. Логин/пароль вводятся при каждом соединении с PMA. А вот для локального сервера лучше использовать метод удостоверения по умолчанию — config. При config-аутентификации обязательно задействуйте имя пользователя и пароль — только тогда вы получите доступ к БД. Еще отмечу интересную опцию: вписав пользователем 'user', вы получите доступ ко всем имеющимся на хосте (на локальном сервере — localhost) базам. Значение ['password'] для БД в данном случае необходимо оставить пустым… Почти все. Осталось в строке $cfg['Servers'] [$i]['host'] = 'localhost' изменить или оставить как есть адрес хоста. Хост, разумеется, указывает хостер. Настройка PhpMyAdmin'а закончена, комплект готов к отправлению на сервер. Далее пойдет обзор базовых возможностей PMA.
Работа с БД через PhpMyAdmin
Как театр начинается с вешалки, так и программа — с интерфейса. Интерфейс PhpMyAdmin'a несложен — он делится на боковую панель с возможностью выбора БД и основное поле, содержащее несколько вкладок. Ознакомимся с первыми тремя — на мой взгляд, самыми важными. Структура — содержимое вкладки наглядно демонстрирует содержимое базы: количество таблиц, кодировка, размер каждой и т.п. С таблицами можно совершать различные действия: как по отдельности (просмотреть содержимое, выполнить запрос, создать и уничтожить), так и массово (то же удаление, очистка, проверка, оптимизация). Последняя, кстати, весьма полезная функция — рекомендую. Пример: в БД содержится ~60 таблиц, общий размер — 320 Kb. После десятисекундных действий база "худеет" до 266,5 Kb. Оптимизация! SQL — уже знакомая нам вкладка. Наряду с соседней — Экспорт — она очень важна. По этому адресу пользователю доступны импорт таблиц в базу данных и выполнение запроса. От его составителя, натурально, требуется уверенное знание основ SQL-синтаксиса. К сожалению, формат статьи не позволяет изложить тему составления запроса в подробностях, "на пальцах" же объяснить тоже не удастся. Тот, кто заинтересуется языком SQL, пусть обратится к старым номерам КГ — 3 года назад публиковались замечательные статьи Д. Мигачева, в частности, о SQL. Масса толкового материала есть и в Интернете (см. "Ссылки в помощь"). В любом случае, кое-что прояснится, если вы откроете SQL-файл и хотя бы поверхностно изучите его код. Импорт SQL-дампа — тоже запрос. Экспорт — создание дампа таблиц БД. Данная функция нужна, например, для того, чтобы получить резервную копию базы. Процесс этот несложный. В колонке под надписью "Экспорт" выделите таблицы, тип — SQL. В опциях SQL выберите дополнительные условия (по надобности). В опции SQL export compatibility обычно выставляется none, но если нужно обеспечить совместимость таблиц с MSSQL, ORACLE, MySQL 3.x — 4.x и т. п., выбирайте желаемое из списка. Тип экспорта — Insert (вставка), Update (обновление) или Replace (замена). Insert используется в том случае, если импортируемых впоследствии таблиц в другой базе нет. В случае, если таблица с таковым именем уже имеется, PhpMyAdmin выдает предупреждение, что "table is exists". Для желаемого результата попробуйте параметры Update или Replace. "Последний штрих" — выбор сжатия. Однозначно ставим Gzip (жаль, что 7z нету:)). После нажатия на кнопку Go! (рус. "Пошел") дамп базы сохраняется на компьютере. Советую делать резервную копию базы как можно чаще: не только перед обновлением CMS, но и без особых причин. Поинтересуйтесь у своего хостера, делает ли он backup пользовательских баз данных, и если да, то как часто. Возможно, вопрос резервирования БД с вашей стороны отодвинется на задний план.
Альтернативный вариант
Мы еще не рассмотрели второй вариант публикации сайта. Итак, как же произвести перенос CMS и базы данных на сайт? Процесс состоит из двух-трех этапов. Сначала вы должны закачать на удаленный хост все файлы движка, опять же, с измененным конфигом. Второй шаг — импорт таблиц локальной базы данных в базу "интернетовского" сервера. Для этого посредством PhpMyAdmin'а сделайте полный дамп таблиц вашей БД с "Денвера", а затем, открыв PMA на удаленном сервере, выполните запрос (вкладка SQL) из ранее экспортированного файла.
Если вы не уверены, что ваша база данных существует в Сети, советую сделать проверку. А поможет в этом маленький php-скрипт:
<?$link = mysql_connect("dbhost", "login", "pass")or die("Невозможно подключиться…");mysql_close($link);?>
где dbhost — адрес сервера БД, login — имя пользователя БД, а pass — пароль. При неудачном соединении выдается строка "Невозможно подключиться…"
После импорта данных необходимо зайти в админ-панель движка и навести порядок. Чаще всего приходится изменять пути каталогов (был, скажем, "localhost/forum" — станет "httр://site_name/forum"), какие-никакие настройки. Если вам повезет, то после указанных действий сайт заработает. Однако не всегда все складывается удачно. К сожалению, иногда (и довольно часто) возникает проблема несовместимости. Наиболее распространенная связана с конфликтом разных версий MySQL. База данных, экспортируемая с MySQL <4.1, вряд ли будет корректно распознана в более поздних релизах СУБД. Виной тому — проблема с кодировками windows-1251 и UTF8. Частичное решение конфликта нашли разработчики Денвера (www.faq.dklab.ru), но — по своему опыту знаю — действует оно не всегда. Еще более остро обстоят дела с MySQL 5, где SQL-запросы из старых версий и вовсе не выполнишь. Проблем много, и одним из рациональных решений с вашей стороны будет обновление СУБД "Денвера" до MySQL 5. Или смена хостера:). Вообще проблема несовместимости возникает и при "чистой" инсталляции CMS на сервере. Приятно заметить, что многие разработчики CMS своевременно предоставляют свежие заплатки под новые версии MySQL, а также возможность выбора типа установки. Бывает и наоборот: пользователи CMS раньше самих разработчиков устраняют недостатки любимого движка. Возьмем Subdreamer. Меня спрашивали, как установить движок на сервере ho.com.ua. Ответ был найден на форуме сайта Sabdrimer.com. Оказывается, ошибка крылась в коде SQL-запроса в инсталляционном файле (install.php в папке /install). Его-то и следует подправить. За подробностями следуйте на форум по адресу www.sabdrimer.com/forum/index.php?showtopic=313. Правленый файл доступен на моем сайте (ilyuha.ho.com.ua/downloads/install_sbd.rar).
Узнать о серверном ПО вашего хостера можно не только через сайт поддержки, но и с помощью нижеследующего php-запроса:
<? phpinfo() ?>
Введение в SSH
Одним из минусов стандарта Telnet является его незащищенность. При определенных навыках "выловить" данные между двумя источниками, использующими уязвимый, без шифрования, протокол, не составит большого труда. Но сравнительно недавно (в 1995 г.) ему на смену прибыл протокол SSH (Secure Shell), по функциям очень cхожий c Telnet'ом, но намного более безопасный и… интересный. Отличают две версии протокола: SSH1 и SSH2 (1998 г.). На серверах чаще всего используется более поздняя версия, поскольку она обладает значительным преимуществом по сравнению с первой. С получением услуг SSH открываются без преувеличения очень большие возможности. Кто имеет опыт работы с любой из ОС семейства Unix, оценит по достоинству. Ну, а тем, кто с "униксоподобными" и вовсе не знаком, сначала придется поучиться. Тяжело в учении — легко в бою:). Протокол SSH, скажу, не из легких для освоения, но теперь все больше хостеров предлагают его использование. Например, на Holm'е (www.holm.ru) работать с базами данных возможно только по SSH2. (Я, думаю, привел не лучший пример: мало кто разместит свой сайт у упомянутого хостера:)). А на хостинге www.host.sk shell-доступ уже используется по умолчанию, хотя совсем недавно "просил" отдельной регистрации. Жаль, что по качеству эта услуга уступает аналогичной на Holm'е… Так вот, протокол SSH замечателен тем, что обеспечивает выполнение команд на удаленном сервере (вам выделяется shell-аккаунт с сильно ограниченными правами) и копирование файлов без необходимости FTP. Все это дополняется мощным шифрованием и сжатием передаваемых данных. Какие программы мы задействуем? Традиционно используются две: Putty и/или WinSCP3. Обе бесплатны и доступны на www.chiark.greenend.org.uk/~sgtatham/putty/ и www.winscp.net соответственно. С моей пользовательской точки зрения WinSCP как нельзя более подходящий для различных операций с файлами, а Putty — для командной работы (хотя у WinSCP тоже есть терминал).
Приведу один пример. Представьте: есть директория /forum в корне сайта. Как она удаляется через FTP-клиент? Каждый файл "уходит" по отдельности. В WinSCP, который использует не FTP, а SCP, папка /forum удалится мгновенно. Еще вариант. Архивируем сконфигурированный движок в формат gz и копируем архив на сервер, там его и распаковываем (команда gunzip). Таким образом мы существенно сократим время. Это мелочи, конечно, но мелочи приятные. Добавьте сюда безопасность SCP/SSH-канала — и WinSCP однозначно можно считать лучше любого FTP-клиента. Касательно работы с MySQL. PhpMyAdmin, упоминаемый выше, все-таки удобнее. Но ввиду того, что на серверах скрипт работает не всегда, SSH-вариант не станем исключать. Нам понадобятся Putty и прочные знания о MySQL. Если со знаниями проблема, начинайте изучать СУБД — в теории и на практике. Как известно, MySQL — продукт мультиплатформенный, поэтому запросы из командной строки в Windows должны совпасть с таковыми в *nix. Cmd.exe к вашим услугам!:) В "Денвере" exe-файл MySQL расположен по адресу: /usr/local/mysql4(5)/bin/mysql.exe (не забудьте запустить сервер). Заходим под своим именем и паролем: mysql -u<user> p<password>; выбираем БД: use <dbname> и изучаем! Но мы говорим о shell-доступе, не так ли? Сейчас я покажу, как произвести импорт/экспорт SQL-дампа по протоколу SSH. Итак, вы авторизовались на сервере (кстати, пароль в Putty при наборе не показывается) и, скорее всего, попали в Bash (это один из "униксовых" терминалов).
Собственно, экспорт таблиц производится запросом:
mysqldump --add_drop -u<user> -P<port> -h<dbhost> -p<password> <dbname> | gzip -c >file.sql;
импорт из файла: mysql -<user> -p<password> -h<dbhost> -P<port> <dbname> < file.sql
Пояснения: <user> — пользователь БД, <port> — порт для подключения к серверу (на HOLM'е — 3306), <dbhost> — хост БД, <password> — пароль к БД, <dbname> — имя БД.
Полезные утилиты и команды в Unix:
help — справка;
get/put — закачка/получение данных;
ls -al — показать содержимое текущего каталога;
cd — выбор/смена директории;
cp — копировать;
mkdir — создать директорию;
mysqldump — получение резервной копии баз данных;
man — справочная информация по команде (напр., man mysqldump);
ftp — FTP-клиент;
gzip — популярный gz-архиватор;
gunzip — разархивировать gz-архив;
chmod — установка прав доступа;
mc — файловый менеджер наподобие Norton Cmd.
Настройка директивы .htaccess
Напоследок, когда все более-менее важные вопросы уже рассмотрены, расскажу вам о волшебном файле .htaccess. Изменение его содержимого повлияет на работу сервера Apache. Каждый такой файл должен находиться в директории, к которой применяются настройки.
## Файлы индексного документа (загружаются в первую очередь при входе на сайт)
DirectoryIndex index.shtml index. html index.htm index.php3 index. php
## Документы в кодировке windows-1251
AddDefaultCharset windows-1251
## Воспринимать файлы *.html как SSI
AddHandler server-parsed .html
## Разрешение показа содержимого каталога
Options +Indexes
## Не выдавать сообщение об ошибках при обработке РНР-скриптов
php_value error_reporting 7
## Запрет всем пользователям посещать сайт (раздел)
deny from all
## Запрет пользователю с означенным IP-адресом посещать сайт/раздел
deny from ххх.ххх.ххх.ххх
## Нахождение файла с информацией об ошибочном запросе, где error404.html — страница с сообщением
ErrorDocument 404 /error404.html
## Запрет входа через прокси
RewriteEngine On
RewriteCond %{HTTP:VIA} .+
RewriteRule (.+) httр://sitename.com/
Я перечислил лишь некоторые из многочисленных опций директивы. На самом деле .htaccess умеет защищать определенные каталоги паролем, преобразовывать динамические адреса в статические и др. Единственное НО: в редких случаях некоторые "особо заботливые" хостеры htaccess-директивы отключают.
Термины и их пояснения
Кэш (англ. cache) — это промежуточный буфер с быстрым доступом, который хранит в себе ту информацию, которая с наибольшей вероятностью может быть запрошена (из Википедии).
SSL — (англ. Secure Sockets Layer — протокол защищенных сокетов) — криптографическая технология, обеспечивающая безопасную передачу данных в сети Интернет.
Дамп (англ. dump — выбрасывать, выгружать) — здесь: снимок таблиц БД.
SQL-запрос — набор специфических команд, составленных по правилам языка SQL.
Вот и все, что мне хотелось вам рассказать про создание сайта на бесплатном хостинге. Если последняя статья вызвала затруднения, обращайтесь на форум ilyuha.ho.com.ua/forum. Постараюсь ответить. Также пишите, рассказывайте про собственные работы — обсудим вместе. Успехов вам!
Ссылки в помощь
сайт — русскоязычный сайт поддержки PhpMyAdmin'a. В документации (/doc) подробно рассказано об установке и настройке панели, а также о http-, config- и cookie-аутентификации.
сайт — статья "Основы SQL: запросы к базе данных".
сайт — список некоторых "униксовых" команд.
сайт — Ssh FAQ (русская редакция).
Илья Муравьев, iamm@tut.by
Компьютерная газета. Статья была опубликована в номере 25 за 2006 год в рубрике интернет