Работа по ssh
Возникают ситуации, когда необходимо отладить работу скрипта непосредственно на сервере хостинг-провайдера. Или сделать автоматический запуск определенного файла в определенное время, совершить манипуляции с базами данных MySQL.
Для всех этих и многих других действий пользователей хостинг-провайдеры предоставляют доступ по защищенному протоколу telnet (а не по ftp), так называемый shell-доступ (ssh-доступ).
Работа с shell - это работа с командной строкой Unix. Если кто не знает, поясним, что Unix - это операционная система, альтернативная Windows. А так как это другая операционная система, то в ней существуют другие законы, команды и т.п.
Что нужно для работы с ssh? Существует множество программ для работы из Windows.
Рассмотрим подключение на примере работы с программой Putty.
Все очень просто. Запускаете файл putty.exe
В поле "Host name" прописываете доменное имя вашего сайта или IP адрес сервера как показано на рисунке. К примеру, my-site.ru
Выбираете протокол доступа - Protocol SSH.
Нажимаете "Open". Все, сессия началась. Программа запросит ввести вас логин, вводите тот же логин и пароль что у вас для доступа по FTP. В целях безопасности вводимый пароль не будет отображаться.
Внимание! Первое, что необходимо запомнить при работе с командной строкой unix - cистема различает регистр букв. То есть файлы типа File.pl, file.pl и file.Pl -- это совершенно разные файлы. Также и пароли passw и PassW - разные пароли!
Правильно выполнив выше описанные действия Вы успешно подключитесь.
Рассмотрим несколько основных команд, которые могут понадобиться при работе с в консоле.
pwd - получить имя текущей папки, где вы находитесь.
cd - изменить текущую директорию
Например, Вы находитесь в директории /home, а Вам нужно попасть в /www. Для этого Вам нужно просто набрать команду:
cd /usr/sbin.
Вот что при этом Вы увидите на экране:
/ $ cd /www
/www $
ls - вывести информацию о файлах или папках
При этом список может быть довольно большой.
Поэтому существуют ключи для этой команды, вот некоторые из них:
- -a - вывести все файлы (даже те, имена которых начинаются с точки);
- -x - вывод в 4 колонки;
- -t - имена файлов сортируются не по алфавиту, а по времени последнего изменения (сначала идут самые свежие, только что измененные файлы);
- -R - рекурсивно пройти по всем подкаталогам
- -CF - оглавление каталога в несколько столбиков
- -al - оглавление в полном формате
Эти ключи нужно подставлять сразу после команды ls.
Вот еще несколько команд:
cat -- слить или вывести файлы-аргументы на стандартный вывод
cp -- копировать файлы
mv -- переместить (переименовать) файлы
ln -- создать ссылку на файл
rm -- удалить файлы
Формат команды:
rm [-fri] файл ...
-i - просить подтверждения на каждое удаление
-r - рекурсивно удалить вместе с подкаталогами
-f - не просить подтверждения, а сразу удалить
rmdir - удалить директорию
mkdir - создать директорию
echo - вывести аргументы командной строки на стандартный вывод
ps - узнать номера выполняемых процессов, т.е. какие программы выполняются.
Формат команды:
ps - запущенные только с этого терминала
ps -e - все
ps -f - в "полном" формате
kill - "убить" выполняемый процес по его номеру
man - выдать справку об использовании и ключах команды
Теперь о том, как запускать файлы автоматически в определенное время.
Для этого существует механизм, называемый cron.
Для каждого пользователя создается конфигурационный файл, куда записывается расписание запуска программ. Данный конфигурационный файл каждую минуту просматривается cron'ом и запускаются те программы, время запуска которых подошло. Редактируется конфигурационный файл с помощью программы crontab.
Вот основные команды:
crontab -e : войти в режим редактирования
crontab -l : вывести все задания крона
crontab -r : удалить все задания
Команда crontab file заменят текущие настройки cron на те, которые содержатся в файле 'file'. Для этого вам нужно закачать сначала на сервер этот самый файл (например, через ftp), а затем в команде указать полный путь к нему. Пути для вашего сайта можно узнать у своего хостинг-провайдера, он их обычно указывает в инструкциях. В результате, если вы закачали файл raspisanie.txt в папку /user/public_html/mydirectory/raspisanie.txt, то команда будет выглядеть так:
crontab /user/public_html/mydirectory/raspisanie.txt,
Когда вы задаете команду "вывести все задания крона", вы увидите нечто вида:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=user
HOME=/home/user
# run-parts
01 * * * * command
02 4 * * * command
Первые четыре строки просто обозначают настройку технических параметров, и на них не стоит обращать внимание (как впрочем и менять тоже).
А вот на следующие строки внимание уже стоит обратить... Формат этих строк выглядит следующим образом:
- Нужная минута часа для запуска (0-59)
- Нужный час дня для запуска (0-23)
- Нужный день месяца (0-30)
- Нужный месяц года (1-12)
- Нужный день недели (0-6)
- Выполняемая команда.
Значок * обозначает слово каждый (день, год, месяц, час).
Например, строка 01 * * * * command будет обозначать запуск программы каждый час в одну минуту.
А строка 02 4 * * * command означает запуск программы каждый день в 4 часа утра в две минуты.
Вы можете как создать отдельный файл со строками запуска программ, просто в столбик написав
01 * * * * command
02 4 * * * command
где command - ваша команда (запуска определенного скрипта или еще что-то), а затем просто командой "crontab file" перенести все задания из файла в крон, либо вручную все ввести в крон. Первое, на мой взгляд, удобнее.
Вот и все премудрости крона:)
Некоторые команды для работы с MySQL.
mysqldump - позволяет сохранить копию базы данных в текстовой файл, представляющий из себя команды SQL (о способе это сделать через phpmyadmin мы уже писали). Может быть использована при переносе базы данных с одного сервера на другой или для резервного копирования.
Формат команды:
mysqldump -u -p -h mysql.<доменное_имя_сайта> > backup-file-base.sql
- вместо подставьте имя субпользователя MySQL, которому присвоены права на базу dbname (без <>)
- вместо подставьте имя своей базы данных MySQL (без <>)
- вместо 'backup-file-base.sql' подставьте имя файла, в который будут выведены данные
- перед началом работы будет спрошен пароль доступа к базе данных.
Информация, полученная с помощью mysqldump может быть занесена в базу данных командой:
mysql -u -p -D -h mysql.<доменное_имя_сайта> < backup-file-base.sql
Подробности о запуске этой программы можно получить командой man mysqldump
Другая полезная программа для работы с базами данных - mysql
Запускается из командной строки следующим образом
mysql -u -p -D -h mysql.<доменное_имя_сайта>
Подробности о запуске этой программы можно получить командой man mysql
Перенос баз данных MySQL
Если вам нужно перенести базу данных к себе на компьютер или с одного сервера на другой, рекомендуем проделать следующее:
1. Создание копии базы на сервере
mysqldump -p -u -h mysql.<доменное_имя_сайта> --add-drop-table >
Тут - имя файла, где будет храниться база данных.
В процессе выполнения команды mysqldump спросит пароль пользователя MySql - нужно будет ввести его в ответ на соответствующее приглашение и нажать "Enter" - при этом набираемый пароль на терминале не отображается.
2. Содание базы данных из файла на сервере
Закачиваете на сервер по ftp файл
Затем, соединившись по ssh
mysqldump -p -u -D -h mysql.<доменное_имя_сайта> <
Здесь, обратите внимание, dbuser, dbname и пароль могут быть другими.
Все, Ваша база перенесена.