УрокПеренос сайта с локального сервера Denwer на рабочий сервер
Наверняка многие веб-разработчики, особенно использующих для своих нужд ОС Windows, сталкивались с таким джентельменстким набором как Denwer. Штука действительно очень полезная - за пару минут можно поставить себе на компьютер локальный сервер с базой данных (mysql) и настроенными php и apache. И сервис отправки почты в нагрузку. В общем, получается отличная имитация не сильно заурядного боевого сервера. Тут и памяти можно дать чуть больше для ускорения работы, и отлаживать удобнее, и прочие полезности.
Соответственно, если сайт был сделан целиком на локальном сервере, неплохо было бы показать его людям - а значит, перенести его на рабочий сервер в Интернете. И тут для людей не сильно опытных в этом вопросе может возникнуть затык - а с чего начинать, собсна?) Рассказываю.
Чтобы создать на рабочем сервере полную копию локального, вам необходимо перетащить туда следующие вещи:
- базу данных
- друпал
- файловую систему (папку с файлами)
- модули
- темы
Больше ничего перетаскивать не придётся, т.к. если вы выбрали правильный хостинг, то там уже будет все необходимые инструменты для работы с сайтом.
По большому счёту, чтобы перенести все пункты, кроме 1го, достаточно банальнейшим образом скопировать содержимое папки C:\WebServers\home\ваш_сайт\www\ в папку с названием вашего сайта на сервере. Таким образом на сервере у нас окажутся все данные о сайте указанные в базе данных (модули, темы, пути файловой системы и т.п.).
Теперь поговорим о том, как перенести базу данных. Существует немалое количество скриптов(программ, сервисов), позволяющих сделать это. Я расскажу о двух, которыми я пользуюсь чаще всего.
1 способ перенести базу данных - phpmyadmin
Если ваш хостер выдал вам доступ в phpmyadmin, то второй способ вам вряд ли понадобится. Но начнём по порядку.
Первым делом включаем наш Денвер и переходим на страницу http://localhost/Tools/phpMyAdmin/. Выбираем из списка слева название базы, которую будем импортировать. Далее сверху находим вкладку Export и нажимаем её: 
Теперь вы находитесь на странице настроек экспорта базы данных. Если вам нужен обычный импорт, без извращений, то ничего тут трогать и не надо, кроме сжатия базы - его надо поменять на gzip, а то база будет занимать раз так в 8-10 больше места. 
Жмём Go. Получаем базу данных в архиве. Далее переходим в phpdyadmin уже рабочего сайта. Тут действия совсем простые - выбираем базу, куда будем экспортировать, находим вкладочку IMPORT, заходим туда, указываем сохранённую недавно базу, жмём GO. И всё, база перенесена. А вместе с ней и полностью сайт. Поздравляю :)
2 способ перенести базу данных - sypex
Есть такой полезный скрипт, скачать который можно . С ним не нужен доступ в phpmyadmin - достаточно доступа на ftp. Я обычно пользуюсь Lite версией - мне хватает. Однако были случаи, что приходилось использовать полную версию - когда облегчённая не справлялась с задачей переноса тяжёлой базы данных.
Кстати, для друпала там даже есть готовый модуль с этим скриптом. Но у меня был не сильно приятный опыт работы с ним - я его скачал, поставил, а модуль не заработал :) После того как я нашёл всё же ошибку в модуле и отправил баг репорт автору модуля, автор через несколько дней лишь заявил, что у него всё работает, и модуль так и не поправил. Хотя, возможно, на сегодняшний день этот косяк уже решён, но я уже не пользуюсь им из принципа :)
О работе скрипта можно рассказать вкратце (на примере Lite версии): закидываете скрипт dumper.php на сервер, в корень сайта. Потом обращаетесь к нему через браузер по адресу http://имясайта.ру/dumper.php. Откроется страница с логином и паролем (их можно посмотреть в файле /sites/default/settings.php) - дальше разберётесь, там всё предельно просто. Выглядит оно вот так: 
И ещё один нюанс для импорта базы данных: дампы (архивы) баз, которые вы будете импортировать, надо складывать в папку backup, которую надо создать (или она автоматически будет создана) в корне сайта.
Существуют ещё способы и хитрости при переносе сайтов, но им несложно обучиться самому, в процессе. А если не получится что-то - то задавайте вопросы, буду отвечать :)
А ещё, как подсказали, есть модуль, который позволяет быстро переехать с одного сервера на другой - тут
- SplasH
- 07.12.2010
- 5583
Комментарии
Спасибо.
1.Для копирования файлов на сервер их луште перед этим заархивировать. Тогда копирование занимает в разы меньше времени.
согласен, архивировать надо. Но я отнёс это к "хитростям" переноса, которым можно научиться самому
Ну это уже здравый смыл должен людям подсказать, но копирование быстрее пройдет если у вас много мелких файлов, если же файл один и большой, то огромной выгоды вы не получите.
а что за иллюстрация? какой-то фронт-енд к денверу? можно подробнее об этом узнать?
или это мифический 4-ый денвер? ;)
а так да. проще залить архив и распаковать уже на сервере. паковать надо без сжатия.
backup_migrate тоже полезная вещь. достаточно поставить друпал на хостинге, залить тему и модули и впаять БД через backup_migrate.
вы кстати не написали что при простом копировании друпли — нужно ещё и settings.php править.
http://pograncom.ru/index.php?set=pages&mc=0
где в файле settings.php найти ацц и пароль ?
- искать сложно, у меня фаил открываеться одной строкой
через поиск нашёл следующее:
pgsql://username:password@localhost/databasename';
*/
$db_url = 'mysqli://root@localhost/webshop_db';
поидеи отсюда получаеться что ацц root а пароля нет. Но такой вариант не прокатывает. Помоги разобраться плз.
Вы правильно нашли строчку : $db_url = 'mysql://username:password@localhost/databasename' просто вы наверное на локальном хостинге сайт разрабатываете, а у меня например на локалке тоже нету пароля, та что все правильно.
Ладно. Привёл к нормальному виду. попытался задать через сеттингс новый пароль - ничего не вышло. Попытка 2:скопировал сеттингс с другого моего проекта, где пасс был указан при установке - ничего не вышло. Кст, когды я пытался запустить базу не через денвер, было тоже самое - никак не мог написать ацц и пасс...
не ацц, а акк. строка 114
$db_url = 'mysql://youname:youpass@localhost/basename';
$db_prefix = 'prefix_';
Через phpmyadmin можешь зайти?
Комментировать