Настройка сайта на
Ubuntu Server

Данная статья посвящена основам настройки и администрирования веб-сервера. В качестве платформы выбрана Ubuntu server как наиболее простая в настройке для начинающих. В статье рассмотрены следующие вопросы:

Постановка задачи

Дано:
  • 1 или более ip адресов
  • 1 или более сайтов
  • 1 выделенный сервер
Требуется:
  • развернуть сайты
  • обеспечить доступ к ним для разработчиков (используя ftp)
  • обеспечить для руководителей проекта доступ через ssh для администрирования базы данных и добавления заданий в cron
  • реализовать доступ к ресурсам через nginx (использовать его в качестве frontend-а)
  • обеспечить интеграцию сервера сервлетов tomcat с nginx

1. Установка системы

Первоначально необходимо установить систему. Для этого нам потребуется установочный образ, который можно загрузить с официального сайта и сервер. Если сервера под рукой нет, но вы бы хотели освоить основы, то можно воспользоваться установкой на виртуальную машину (данный способ используется для иллюстрации в данной статье). Желательно, чтобы сервер во время установки имел доступ в интернет.

При использовании выделенного сервера нужно учитывать, что для работы сайта и повышения надежности системы в целом, желательно иметь отдельный накопитель под операционную систему (высокая надежность, среднее время доступа) и под веб-ресурсы (высокая надежность и минимальное время доступа).

После запуска нас встретит экран приветствия:
Экран выбора языка в Ubuntu server
Экран выбора языка в Ubuntu server
Выбираем русский язык.
Экран приветствия установки Ubuntu server
Экран приветствия установки Ubuntu server
Начинаем установку.
Экран выбора расположения в Ubuntu server
Экран выбора расположения в Ubuntu server
Выбираем расположение, обычно «Российская федерация».

Далее проходим меню настройки клавиатуры выбирая все пункты по умолчанию (если, конечно, у вас нет особенных клавиатур или предпочтений).

Экран выбора имени сервера в Ubuntu server
Экран выбора имени сервера в Ubuntu server
Выбираем имя компьютера. Выбираем имя пользователя для root, обычно его не заполняют.

Выше имя пользователя и пароль (с подтверждением).
Подтверждения шифрования домашних каталогов пользователей в Ubuntu server
Подтверждения шифрования домашних каталогов пользователей в Ubuntu server
Если очень хотим спрятать личные данные, то можно зашифровать домашний каталог.
Экран выбора часового пояса в Ubuntu server
Экран выбора часового пояса в Ubuntu server
Выбираем часовой пояс.
Экран выбора способа разметки в Ubuntu server
Экран выбора способа разметки в Ubuntu server
После этого мы подошли к первому важному пункту: разметка диска. Как было отмечено выше, желательно, чтобы система и сервисная часть были на различных физических дисках: причин тут множество, среди них стоит особо отметить безопасность (систему тогда можно будет смонтировать в readonly) и надежность (в случае выхода из строя одного или нескольких дисков из-за износа — система продолжит работать, сохранится возможность восстановить данные используя текущую конфигурацию).

Итак, выбираем настройку разделов вручную.

Пример заметки дисков в Ubuntu server
Пример заметки дисков в Ubuntu server
Разметка разделов может быть выполнена следующим образом.
Экран подтверждения разметки дисков в Ubuntu server
Экран подтверждения разметки дисков в Ubuntu server
Записываем изменения на диск.
Процесс установки Ubuntu server
Процесс установки Ubuntu server
Далее идет процесс установки системы (желательно наличие интернета — тогда будут загружены и установлены все критически важные обновления).
Экран выбора настроек прокси в Ubuntu server
Экран выбора настроек прокси в Ubuntu server
Если вы используете прокси, то указываем его параметры (если нет — игнорируем).
Экран установки обновлений в Ubuntu server
Экран установки обновлений в Ubuntu server
Система тихо-мирно обновляется.
Экран выбора способа обновления в Ubuntu server
Экран выбора способа обновления в Ubuntu server
Способ обновления лучше всего выбрать «вручную» — ничего страшного от автоматического обновления Ubuntu не случится (это я сужу по своему опыту), но лучше не терять контроля над системой, да и надпись о необходимости перезагрузки тоже спокойствия не добавляет.
Экран выбора устанавливаемых приложений в Ubuntu server
Экран выбора устанавливаемых приложений в Ubuntu server
Теперь указываем, какой софт необходимо установить. Все понятно из снимка экрана. Мы не выбрали почтовый сервер: поскольку нам нужно только отправлять почту, а свой почтовый сервер нам пока не нужен.
Экран выбора пароля для пользователя root при установке MySQL в Ubuntu server
Экран выбора пароля для пользователя root при установке MySQL в Ubuntu server
Во время установки указываем пароль для пользователя MySQL (по умолчанию — root).
Экран подтверждения изменения загрузочной записи диска в Ubuntu server
Экран подтверждения изменения загрузочной записи диска в Ubuntu server
Прописываем загрузочную запись для GRUB.
Сообщение о завершении установки Ubuntu server
Сообщение о завершении установки Ubuntu server
Установка завершена, можно перезагрузиться (не забываем извлечь загрузочный диск).
Экран приветствия в Ubuntu server
Экран приветствия в Ubuntu server
После перезагрузки окажемся перед экраном приветствия. Базовая настройка системы закончена и теперь мы приступим к настройке остальных её частей.

Настройка сайта на Ubuntu Server – доступ через SSH

После установки системы мы можем воспользоваться физическим доступом к системе (с помощью подключенной к серверу клавиатуры или IKVM). Но для повседневной работы это слишком громоздкий способ: мы либо лишаемся мобильности (необходимо подойти к серверу), либо требует терпения (поскольку IKVM не всегда работает быстро и часто бывает доступен не для всех платформ).
Поэтому рассмотрим вопрос с настройкой терминального доступа посредством ssh. Во время установки системы мы уже поставили необходимое приложение — осталось только подключиться. В стандартной поставке Ubuntu и большинства других Linux дистрибутивов ssh клиент уже установлен и потребуется лишь запустить терминал:

ssh server-name -l user-name
где server-name — это имя или ip адрес сервера, а user-name — имя пользователя, созданного при установке.
Для пользователей Windows есть замечательная программа Putty, которая не только обеспечит терминальный доступ к вашему серверу, но и позволит легко управлять подключениями, пробросом портов и многое другое.
Теперь рассмотрим вопрос безопасности. Можно (и даже нужно) ограничить количество ip адресов, с которых возможно подключение к серверу. Для этого необходимо отредактировать файл /etc/ssh/sshd_config и прописать там жестко биндинг на один ip адрес:

...
ListenAddress ваш-ip-адрес
...
после чего необходимо перезапустить сервис:

sudo /etc/init.d/ssh restart
После перезапуска сервиса служба ssh поднимется только на одном интерфейсе, и подключиться с других ip адресов к вашему серверу будет невозможно.
Среди прочих возможностей, которые нам потребуется — возможность проброса портов с сервера на локальную машину (все сервисы, кроме ssh и nginx, из соображений безопасности, будут биндиться только на localhost, а для их отладки часто будет необходимо настроить тоннель)

ssh -L локальный-порт:удаленный-хост:удаленный-порт user-name@server-name
где локальный-порт — целевой порт тоннеля на локальной машине, удаленный-хост — хост, с которого будет перенаправлен порт, удаленный-порт — порт удаленной машины, который будет биндится на локальный-порт.
Для демонстрации воможностей, подключимся к MySQL, который по умолчанию биндится на localhost (если мне не изменяет память):

ssh -L 3309:localhost:3306 user-name@server-name
После выполнения данной команды, мы сможем подключиться к базе данных каким-либо полноценным клиентом, например mysql workbench
Подключения клиента MySQL через туннель
Подключения клиента MySQL через туннель
Для создания тоннеля в Windows необходимо в настройках Putty в разделе connection => ssh => tunnels задать параметры тоннеля:
Настройка проброса портов в Putty
Настройка проброса портов в Putty