В статье собраны примеры использования ssh в работе web-разработчика. Каждая консольная команда, которая описана в статье, мне хотя бы один раз, но использовалась в реальных условиях. Возможно, я не правильный программист, но работать с консолью мне не нравится – это неудобно и сложно: нужно запоминать кучу разных команд, которые зачастую состоят всего из нескольких букв и ни каких ассоциаций не вызывают, поэтому и не запоминаются. Если у вас такие же чувства по отношению к консольным командам или вы только начинаете разбираться с ssh, то статья может быть полезна, в ней я собрал основные «фишки» для настройки и управления сервером, с которыми когда-либо сталкивался по работе.
Обновление операционной системы через ssh
Для обновления ОС, достаточно в консоле выполнить две команды:
sudo apt-get update sudo apt-get upgrade
Первая команда обновит данные о пакетах, а вторая выполнит обновление.
Работа с Apache через ssh
Команда для установки Apache:
sudo apt-get install apache2
Команда для запуска:
sudo invoke-rc.d apache2 start
Команда для остановки:
sudo invoke-rc.d apache2 stop
Команда для перезапуска:
sudo invoke-rc.d apache2 restart
Включение модуля mod_rewrite:
sudo a2enmod rewrite
Работа с PHP через ssh
Чтобы установить php на сервер можно выполнить команду:
sudo apt-get install php5 libapache2-mod-php5
Выполнить php скрипт:
php /path/script.php
Работа с MySql через ssh
Установка MySql на сервер:
sudo apt-get install mysql-server
Создать пароль для пользователя root:
sudo mysqladmin -u root password _пароль_
Через консоль можно выполнять sql-запросы, только сначала нужно авторизоваться в Mysql:
mysql -uПользователь -pПароль
Создание базы данных:
CREATE DATABASE название_базы_данных;
Создание пользователя для базы данных с локальными правами:
GRANT ALL PRIVILEGES ON название_базы_данных.* TO 'имя_пользователя'@'localhost' IDENTIFIED BY 'пароль' WITH GRANT OPTION;
Создание пользователя с возможностью удаленного подключения:
GRANT ALL PRIVILEGES ON название_базы_данных.* TO 'имя_пользователя'@'%' IDENTIFIED BY 'пароль' WITH GRANT OPTION;
Работа с планировщиком зада Cron через ssh
Установка Cron на сервер:
sudo apt-get install crontab
Для создания задачи, нужно отредактировать список задач:
sudo crontab -e
Пример задачи на выполнение php-скрипта каждые 30 минут:
*/30 * * * * /usr/local/bin/php /usr/local/apache/htdocs/path/script.php
Для просмотра списка задач:
sudo crontab -l
Работа с процессами через ssh
Для получения основных сведений о процессах, запущенных текущем пользователем:
ps -la
Для получения основных сведений о процессах для всех пользователей:
ps -ela
Базовая информация о процессах для текущего пользователя:
ps -a
Поиск процесса по куску имени:
ps ax | grep 'кусок_имени'
Управление SFTP-пользователями через ssh
Создание нового пользователя SFTP:
sudo passwd имя_пользователя
Удаление пользователя SFTP:
sudo userdel имя_пользователя
Создание нового пользователя SFTP с правами root`а:
sudo adduser имя_пользователя sudo
Создание «домашней» папки для пользователя:
sudo mkdir /home/username
Работа с архивами через ssh
Распаковать архив в текущую папку:
unzip arhiv.zip
Или так:
tar xvf arhiv.tar
Распаковать архив в конкретную папку:
unzip arhiv.tar -d ~/www/htdocs
Или так:
tar xvf arhiv.tar -C ~/www/htdocs
Создать zip-архив:
zip -r имя-архива.zip /путь-к-папке
Настройка прав на файлы и папки через ssh
Задать права на файл:
sudo chmod 777 file.php
Задать права на папку и всем вложенным папкам(без флага -R права применятся только на одну конкретную папку):
sudo chmod -R 777 folderName
Подробней про права на файлы и папки можно почитать тут: википедия.
Установка и настройка Memcached через ssh
Установка Memcached:
sudo apt-get install memcached cd /etc/ sudo touch memcached.conf sudo nano memcached.conf // открыть конфиг для редактирования
После установки нужно настроить конфиг:
#/etc/memcached.conf #Memcached будет работать, как демон -d #Лог будет складывать туда logfile /var/log/memcached.log #Отведём 256 мегабайт ОЗУ под хранилище -m 64 #Слушать будет этот порт -p 11211 #Впоследствии желательно поменять -u nobody #Слушаем localhost -l 127.0.0.1
После настройки конфига, нужно перезапустить Memcached:
service memcached restart
Далее необходимо установить и настроить модули для php:
sudo apt-get install php-pear apt-get install php5-dev libmemcache-dev pecl download memcache tar xzvf memcache-2.2.6.tgz cd memcache-2.2.6/ phpize && ./configure --enable-memcache && make cp modules/memcache.so /usr/lib/php5/20060613/ echo 'extension=memcache.so' >> /etc/php5/apache2/php.ini sudo service apache2 restart
Работа с редактором vim
Для перехода в режим редактирования нужно нажать insert или i.
Выхода из режима редактирования — нажать ESC.
Сохранения изменений: выйти из режима редактирования и ввести команду :wq
Выхода без сохранения — ввести команду :q!
Место на жестком диске сервера
Узнать место на жестком диске: полный объем/занято/свободно:
В гигабайтах:
df -h
В мегабайтах:
df -m
Назначение владельца на файлы и папки
Перед выполнением команды, необходимо войти в родительскую папку:
cd /var/www/sitename.ru/
Чтобы задать владельца www-data для папки public_html и всех вложенных в нее подпапок:
sudo find public_html -type d -exec chown www-data:www-data {} \;
Чтобы задать владельца www-data для всех файлов внутри папки public_html:
sudo find public_html -type f -exec chown www-data:www-data {} \;
Создание пользователя базы данных и саму БД PostgreSQL
Вход в psql под пользователем postgres(это аналог root для PostgreSQL):
sudo su - postgres psql
И теперь можно выполнить sql запросы для создания пользователя и самой базы данных:
CREATE USER имя_пользователя WITH PASSWORD 'пароль'; CREATE DATABASE имя_БД OWNER имя_пользователя;
Создание и восстановление бекапов базы PostgreSQL
Создание бекапа:
pg_dump -f путь/название_файла.sql имя_БД
Восстановление бекапа:
psql -h localhost -U пользователь_БД -d имя_БД -f путь/название_файла.sql
Путь до текущей папки
Получить путь до текущей директории:
pwd
Перенос файлов с сервера на сервер:
scp -r откуда куда
scp -r root@server_1.ru:/home/ root@server_2.ru:/home/
Послесловие
Статья будет дополняться, по мере возможности, когда буду сталкиваться с каким-либо еще проблемами в работе с ssh. Вы тоже можете поучаствовать в наполнении статьи – присылайте свои консольные команды в комментарии или мне на почту: admin@vk-book.ru