Полноценный web сервер на ubuntu: нужны мануалы, советы и ответы на вопросы?
Всем привет, знаю, что вопросов насчет поднятия web сервера и настройки домашнего сервера задают много. Большую часть из них я читал и сам вполне неплохо справляюсь с тривиальными задачами по установке и настройки серверов, но возникла потребность настроить web сервер на котором будут работать несколько сайтов доступных через интернет. Сейчас он у меня работает под Debian но к сожалению первый мой опыт был не столь удачным, поэтому я планирую переставить систему на ubuntu server 14.04 и на этот раз сделать все правильно. Здесь я опишу задачи которые надо реализовать и проблемы с которыми я уже сталкивался и надеюсь что вы поможете мне составить пошаговый мануал для настройки и поднятия web сервера на ubuntu. Попрошу сразу, не кидать ссылки на статьи если вы не уверены в актуальности информации, потому как 95% статей сейчас не совсем актуальны, в связи с изменениями в работе apache2 сервера ftp клиента да и вообще системы прав в ubuntu.
Что имеется из оборудования и иерархии сети:
Есть белый IP адрес к которому привязаны 4 доменных имени.
Интернет приходит на роутер (белый IP) который все входящие по белому IP запросы передает на сервер в локальной сети со статическим IP 192.168.0.50, который ему выдает роутер по имени машины. В качестве сервера используется компьютер с 4х ядерным процессором AMD, жестким диском на 1тб и скоростью чтения и записи 6мб/с и оперативной памятью 8гб
Основные задачи:
1) Установить ubuntu server 14.04 (это не нуждается в описании)
2) Установить SSH сервер работающий через ключ доступа ssh (поставить сервер не проблема, а вот настроить сервер под работу с ключами я не знаю как)
3) Установить и настроить LAMP, FTP, MAIL сервера
4) Установить систему управления сервером через веб морду с удаленного компьютера
Казалось бы задачи вполне себе тривиальные, но есть пара но:
Необходимо сделать так, чтобы пользователь подключаясь через FTP попадал в папку с одним из виртуальных хостов привязанных к этому пользователю. Желательно, чтобы можно было делать отдельные настройки PHP для каждого виртуального хоста. Для каждого виртуального хоста необходимо обеспечить работу своего mail сервера с доменным именем этого хоста. Каждому хосту должна создаваться база данных с именем хоста. У пользователя владельца этой базы должны быть полные права (кроме удаления базы) на работу с этой базой, но при этом не должно быть прав на другие базы данных.
Соответственно стает вопрос как организовать подобную работу. В свое время я делал просто, создавал пользователей в системе LINUX а виртуальные хосту помещал в их домашние каталоги. Ставил FTP сервер, настраивал подключение через пользователей linux и запирал пользователей в своем домашнем каталоге, но этот способ по моему далек от совершенства, да и сейчас потерял актуальность, так как при размещении виртуального хоста в домашнем каталоге, сервер попросту возвращает ошибку что нет доступа, причем добавление пользователя в группу www-data или добавление пользователя www-data в группу user не приносят результатов. Сейчас точно не помню что я делал но помогло выставление прав 777 на домашний каталог пользователя, добавления пользователя в группу www-data и какое-то шаманство с конфигами виртуального хоста. После этих манипуляций сервер вроде как стал доступным но права 777 на все файлы сильно смущают, а если ставить другие права, то файл становится недоступным. Кроме этого появилась проблема с ftp сервером (по моему vsftpd), если мы запиарем пользователя в его домашнем каталоге, то к серверу становится невозможно подключиться, но как только мы разрешаем запирать пользователя в домашнем каталоге, то проблема сразу отпадает, вот только подключившись через ftp таким образом он получает полный доступ к всему серверу как минимум на закачку файлов.
В общем выслушаю ваши мнения, советы и почитаю предложенные вами мануалы. Еще раз прошу, перед тем как кидать статью, убедитесь что она актуальна, так как статей я прочитал много но очень мало что из этого реально работает так как описано в статье в связи с тем, что изменения в программных продуктах и безопасности линукс сильно поменялись за эти годы.
Кроме этого выслушаю в подробностях как нормально сделать работу сервера через доменные имена, а то я уже раз ошибся, и не указал адрес у провайдера список доменов привязанных к IP адресу в связи с чем мой IP занесли в черный список почтовые сервера. Сейчас вот как раз буду менять у провайдера белый IP на новый. В общем расскажите что еще надо сделать чтобы все сервисы нормально работали.
Не стоит вообще читать пошаговые мануалы. Надо читать документацию на конкретные программы и понимать, что делаешь и учиться...
2. "Из коробки" работает с ключами. Настройки не требует для этого, только ключи сгенерить (man ssh-keygen)
3. Документация и примеры есть на соответствующих сайтах, например для postfix www.postfix.org/docs.html, или apache www.apache.org/. Если вы не можете настроить соответствующие приложения используя такую информацию, вам просто не нужно в принципе этим заниматься.
4. Если у вас там будет несколько своих сайтов, панелька вам не нужна - будет только мешать. А если вы про всякие вебмины и прочие примочки для управления именно сервером, это не нужно в принципе.
5. У вас многое пропущено. Например, работу сервера надо мониторить. Логи надо, как минимум просматривать, но лучше анализировать. С простейшими атаками бороться автоматически, и многое другое. Подумайте 10 раз, стоит-ли вам настраивать сервер вообще, если у вас возникают вопросы даже по элементарным вещам?
вопросы как сделать не возникают, возникает вопрос как сделать так чтобы это было правильно. Единственное в чем я налажал это в адресом обратной петли. Просто сейчас есть возможность переставить сервак и мне бы хотелось настроить его получше чем сейчас, да и вообще узнать как эо делают другие. С логами я так же работать умею. Проектов будет 5 и они не все мои.
Да, я считаю и это действительно оказалось так. Сервера все работают отлично и весь функционал работает как надо. Правда в качестве серверной ОС я все же решил выбрать SuSe так как убунта слишком через одно место работает с веб серверами.
Для серверов обычно используются консервативные бинарные дистрибутивы, в основном это Debian и CentOS. И это весьма разумный выбор, во-первых позволяющий не наступать на лишние грабли, во-вторых использовать огромное количество документации, написанной именно под эти дистрибутивы.
Ubuntu также нередко используется, как менее консервативный вариант Debian, c более свежим софтом.
Ниша suse, это всё же рабочие станции прежде всего, да и там "на любителя".
То, что на ваш взгляд пока всё замечательно, не значит, что это действительно так. Хорошо, если всё удалось настроить так, как вам нужно. Но в процессе эксплуатации, вы наверняка мои комментарии ещё вспомните, и вероятно поймёте, причину их написания.
По поводу: "так как убунта слишком через одно место работает с веб серверами" поясните, что вы имеете в виду. Вероятно вы не поняли какую-то концепцию, или что-то настроили не так. И вполне возможно, вам будет полезна информация о том, что именно.
@kotomyava дело в том что у меня сейчас идет привязка пользователя системы к виртуальному хосту веб сервера, FTP папки и домашнему каталогу, а также к пользователю определенной базы MySQL. Суть в том что на сусе я это настроил без проблем а в убунте при попытке расположить виртуальные хосты в папках пользователей возникли проблемы с правами что вполне логично, но даже дав права для нужных груп проблема оставалась, да и процесс настройки был более геморройным чем на сусе. Кстати вы заблуждаетесь что суса это рабочая машина в первую очередь. OpenSuSe это тестовая ветка SuSe которая используется как серверная ос и как рабочая станция, причом очень мощная. Да и документации по SUSe ооочень много.
Занимаясь системным администрированием уже 10+лет, я сталкивался со многими ОС, и дистрибутивами Linux в частности, и довольно неплохо владею данным вопросом. И мне есть что сравнить. Ну и очень много, касательно документации, опять же познаётся в сравнении. =)
Как у вас сейчас настроены права доступа, кстати? Кто куда имеет доступ и от кого запускается веб сервер?
В сторону apache-mpm-itk, кстати, не смотрели? Вероятно, это решило бы вашу задачу правильно.
@kotomyava Ну я к сожалению больше по программированию нежели по работе серверов, так что спорить не стану. Права настроены таким образом, что веб сервер работает от имени пользователя www-data и помимо своей группы состоит в группе server-users. Каждый пользователь имеет доступ только в свой каталог и права на него вроде если ничего не путаю 750. Пользователи так же состоят в группе server-users. Ftp привязан к пользователю и закрыт в домашнем каталоге. SSH доступ пользователей так же ограничен правами на доступ в домашний каталог и набором команд.
По-моему, вы усложняете себе задачу.
Рассмотрите вариант с использованием ISPConfig, его может хватить для решения основных задач.
Вы получите веб-интерфейс, раздельный доступ по FTP, электронную почту для доменов, и т.д.
По поводу попадания в блеклист - не очень понял, что произошло. По электронной почте, рекомендую прописывать SPF записи в DNS.
посмотрю вечером насчет ISPConfig, честно говоря не слышал про это. А на счет черного листа все просто. у меня не была настроена обратная петля (Loopback). Я привязал к домену свой белый IP а когда обратился к провайдеру чтобы они прописали мой домен как Loopback, те сказали что это все автоматически делается, я по незнанию поверил, а оказалось что это делается через личный кабинет првоайдера. Из-за того что Loopback не был прописан когда мой сервер отсылал почту, почтовые сервера гугла, яндекса и т.д. пытались првоерить домен отправленной почты и не видели адрес обратной петли, в связи с чем попросту считали что почта отсылаемая с этого IP адреса спам и занесли IP в черный список в связи с чем почта исходящая с этого IP блокируется сторонними почтовыми серверами.
я пока бегло глянул, может если почитаю полностью мнение изменится, но по моему это не поможет в моем случае. Я забыл упомянуть один важный момент, системой пользоваться буду не один я, а следовательно общий веб интерфейс в качестве панели администрирования мне врятли поможет. Но я говорю, что могу ошибаться, почитаю получше, может увижу что-то что мне поможет.
Установка панельки, это очень малая часть настройки сервера... Ну и нужна панелька только там, где есть клиенты, которым нужен простой способ управления своими сайтами. А отнюдь не для настройки сервера.