Простой сервер для команды веб-разработчиков. Часть 1

Это будет цикл статей по установке и настройке простого сервера для команды веб-разработчиков. Сервер будет иметь Git, FTP, SSH, Apache 2, PHP 5.4, MySQL, cron, поддомены, memcached, Composer. Статьи будут применимы к Ubuntu 14.04. Полагаю, что сервер будет использоваться в корпоративных целях, а не для конечных проектов. Хотя, если допустимо проекту находиться на dev сервере, то почему бы и нет…

Сразу оговорюсь. Не имею достаточного опыта администрирования серверов, да и не занимаюсь этим профессионально, поэтому не гарантирую стопроцентной корректности нижеописанных действий. Инструкция представляет собой памятку для быстрого разворачивания сервера под мои нужды. Если вы видите явную ошибку или «так не положено делать в продакшне» (хотя оговорил, что проекты не следует держать на dev сервере), то буду благодарен, если опишите правильное решение в комментариях.

Подразумевается, что Ubuntu 14.04 уже установлен на сервере (на VPS/VDS, например) и имеется доступ к root консоли.

  1. Пользователи и SSH
  2. Веб-сервер с Apache 2, PHP 5.5, MySQL и настройка поддоменов в DNS
  3. Git-сервер, установка Composer и cron
  4. memcached и FTP-сервер

Приступим.

Пользователи сервера

Сперва краткий список команд для работы с пользователями.

Добавить нового пользователя

adduser имя_пользователя

Удалить пользователя

userdel -r имя_пользователя

Изменить пароль

passwd имя_пользователя

Авторизоваться под пользователем

su имя_пользователя

Вернуться к root:

exit

Изменить домашний каталог

usermod -d необходимый_каталог имя_пользователя

Установить владельца и группу каталогу (и всему его содержимому)

chown -R имя_пользователя:имя_группы каталог

Определимся с пользователями

Будем считать, что мы создали следующих пользователей на сервере, которых будем использовать соответствующим образом:

  • mygit — для демонстрации работы с Git репозиториями;
  • myftp — для демонстрации работы с FTP;
  • myssh — для демонстрации работы с SSH.

Если с myssh понятно, то, на первый взгляд, SSH доступ mygit и тем более myftp не нужен. Запретить доступ к SSH конкретным пользователям (или разрешить только определённым) можно в /etc/ssh/sshd_config, но mygit использует SSH для авторизации Git. Поэтому далее будет рассмотрен другой способ, не требующий перезагрузки SSH и, с одной стороны, не дающий возможность получить доступ к консоли через SSH mygit, но с другой стороны, разрешающий использовать SSH для работы с Git.

SSH

Подготовка

Установка OpenSSH клиента и сервера осуществляется командой:

apt-get install ssh

 Конфигурация

С помощью редактора mcedit (или nano, в случае mcedit требуется сперва установить mc) откроем файл /etc/ssh/sshd_config:

mcedit /etc/ssh/sshd_config

Убедитесь, что следующий параметр имеет указанное значение:

PermitEmptyPasswords no

Здесь можно указать другой порт для SSH, но в этом случае, при последующем подключении клиентами, команда подключения должна будет иметь подобный вид:

ssh -p ПОРТ логин@сервер

Перезапустить SSH сервер можно командой:

service ssh restart

Клиенты

У пользователей, которые будут подключаться к серверу через SSH или Git (по SSH), должен быть установлен SSH клиент и сгенерированы ключи. Проверить, сгенерирован ли ключ, можно по наличию файла ~/.ssh/id_rsa.pub . В случае отсутствия, необходимо его сгенерировать, например, с помощью следующей команды:

ssh-keygen -t rsa -C "email@сервер"

Пароль можно не устанавливать.

Затем добавьте ключ в ssh-agent:

ssh-add ~/.ssh/id_rsa

Авторизация по ключу

Чтобы при каждом соединении с SSH и Git (он будет у нас работать тоже через SSH) не вводить пароль, нужно создать файл ~/.ssh/authorized_keys у тех пользователей на сервере, к которым будут осуществляться соединения.

Обратите внимание: для создания каталога .ssh (если таковой отсутствует) и файла authorized_keys необходимо быть авторизованным под самым тем пользователем, в домашнем каталоге которого осуществляются действия. Либо после установить соответствующие права, группу и владельца. В будущем при изменении файла authorized_keys это тоже нужно иметь ввиду.

В этом файле на каждой строке должно быть содержимое публичного ключа (~/.ssh/id_rsa.pub) клиентов этого пользователя. В конце файла authorized_keys должна быть пустая строка.

Иными словами, если у нас имеется server_user_1, к которому будет осуществляться доступ через ssh клиентами client_user_1 и client_user_2, то в домашнем каталоге пользователя server_user_1 файл ~/.ssh/authorized_keys должен иметь три строки:

содержимое id_rsa.pub client_user_1
содержимое id_rsa.pub client_user_2
(пустая строка)

Продолжение здесь.

Использованные материалы (полезные ссылки)

  1. http://help.ubuntu.ru/wiki/ssh
  2. https://help.github.com/articles/generating-ssh-keys

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *