Как сделать свой маленький сервер?

Короткий гайд по установке всего необходимого для работы маленького SOHO сервера.

 

Одна из самых распространненых, пожалуй, задач - это наладить веб-сервер и почту. Сделать это, при наличии шустрого интеренета, задача на пару часов, не более. Ставить станем iRedMail - замечательный комбайн, в который входят:

  • Postfix: SMTP сервер;
  • Dovecot: POP3/POP3S — IMAP/IMAPS;
  • Apache: веб-сервер;
  • PHP - интерпретатор языка php;
  • MySQL: базы данных;
  • phpMyAdmin: веб-морда для управления базами данных
  • OpenLDAP: служит для хранения пользовательских учетных записей;
  • Policyd: служба политик сервера Postfix;
  • ClamAV: антивирус;
  • SpamAssassin: спамфильтр;
  • Amavisd: используется в качестве интерфейса между Postfix и SpamAssassin, ClamAV;
  • iRedAdmin: администратор почтовых аккаунтов.
  • Roundcube: веб-интерфейс для почтовой системы;
  • Awstats: Анализатор лог-файлов для Apache и Postfix;
  • Fail2ban: программа для сканирования лог-файлов, находящихся (как правило) в каталоге /var/log/maillog и блокирующая попытки подбора паролей к разнообразным службам.

 Т.о. мы установкой одного пакета закрываем все надобности. Останется только сделать еще несколько несложных движений и все!

Единственное НО: нужна MX запись в DNS, без этого в рабочем режиме не взлетит! И еще: ставить нужно на чистую систему, iRedMail снесет конфигурацию Apache, лучше все поставить и существующие хосты перенести, если они есть. Приступим помолясь!

Итак, нужно сделать три простых вещи: поставить сам Линукс, я выбираю Ubuntu LTS 64-бита, поставить пакет iRedMail и немножко поводить напильником вокруг этого.

Первым делом скачиваем с Ubuntu актуальную версию серверного Линукса под свое железо, пишем на диск или USB-Flash, по вкусу, кто с чего привык ставить. В процессе установки советую везде использовать английский язык, американско-английскую локаль и т.д., что бы в дальнейшем не напороться на неожиданные кразябры. Спокойно и внимательно отвечаем на вопросы и оно само произойдет правильно, только внимательно нужно вколотить нужные данные. Когда спросит какие службы устанавливать отмечаем только OpenSSH, все остальное поставим позже. Еще раз обращаю внимание, что запись MX в DNS уже должна быть готова и Hostname и Domain нужно вколотить правильные!

 

Все, поставили Линукс, перезагрузились, идем по SSH, сразу делаем, sudo su что бы не набивать пароль после каждой команды. Проверяем, что унас получилось, правильно ли все забили во время установки.

Если в процессе установки что то наколбасилось не так с установками сети, то посмотреть текущую конфигурацию можно командой
ifconfig
Если что то не правильно, то изменить можно в файле /etc/network/interfaces примерное его содержание должно быть таким:
# The primary network interface
auto eth0
iface eth0 inet static
        address 10.10.10.10
        netmask 255.255.255.0
        network 10.10.10.0
        broadcast 10.0.0.255
        gateway 10.10.10.1
        dns-nameservers 7.7.7.7 8.8.8.8 9.9.9.9
        dns-search example.com

DNS - серверы указываются через пробел и не более трех, остальное, думаю, понятно без пояснений. Если вносились изменения, то применить их можно командой /etc/init.d/networking restart Да, имя хоста лежит в /etc/hostname.

 

 После того, как Линукс встал нужно обновить список пакетов и установить текущие:

apt-get update
apt-get upgrade

 

Если предпологается, что сервер будет в локалке, то хорошо бы сделать доступ по NFS хотя бы в несколько нужных директорий, для этого поставим NFS сервер:

apt-get install nfs-kernel-server nfs-common
В файле /etc/exports указываем какие директории открываем и куда, запись для каждой директории должна быть похожа на что то типа этого:
/_директория_/_поддиректория_/_к_чему_открываем_доступ 10.10.10.20(rw,no_root_squash)
10.10.0.10.20 - адрес, которому разрешен доступ, можно указать подсеть, если не казывать, то всем. Ну и перезапускаем службу NFS:
/etc/init.d/nfs-kernel-server restart
Еще нужно не забыть открыть, если закрыт, порт 2049, правила фильтрования лежат в /etc/default/iptables что бы открыть порт нужно добавить:
-A INPUT -p tcp --dport 2049 -j ACCEPT
И перезагрузить файрволл:
/etc/init.d/iptables restart

Все, на стороне сервера все сделано, можно со стороны клиента подключаться.

 

 Теперь устанавливаем почту. Ставим iRedMail, это пакет - все в одном флаконе. Сделаем директорию в которую будут скачиваться пакеты:

 mkdir /home/_юзер_/tmp
 Идем на сайт и смотрим текущую стабильную версию, копируем линк.  Скачиваем, вставив линк:
cd /home/_юзер_/tmp && wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.8.6.tar.bz2
Распаковываем архив:
tar -xvjf iRedMail-0.8.6.tar.bz2
И запускаем:
cd /home/_юзер_/tmp/iRedMail-0.8.6
bash iRedMail.sh
По ходу установки внимательно отвечаем на вопросы и внимательно записываем пароли, скрипт все устанавливает молча и потом винить можно будет только себя. В конце будет подсказка как попасть в почтовый ящик админа, а там будет письмо от инсталлера, в котором указаны все пути, пользователи и пароли, созданные во время установки.

 

С почтой все, и по ходу движения у нас установилось все, что нужно для веб-сервера. Не работают только несколько фич, которые почти всегда нужны: curl()   и modrewrite. Если они нужны, то установить просто. Сначала modrewrite:

 a2enmod rewrite
 И перезапускаем краснокожего:
 service apache2 restart
Кроме этого нужно разрешить использовать moderewrite конкретным сайтам, для этого в файле, описывающем его конфигурацию нужно заменить директиву AllowOverride None на AllowOverride All для конкретной директории сайта. Если он один, то, как правило, конфигурация будет храниться в файле /etc/apache2/sites-avalaible/default если несколько виртуальных хостов, то в /etc/apache2/sites-avalaible/ВАШ-САЙТ.conf Исправить, сохранить, перезапустить Апач. Должно все заработать. Для проверки можно просто в корне сайта сделать файл .htaccess написать в первой строке какой нибудь мусор, сохранить и посмотреть, что произошло на сайте. Должен вернуть ошибку 500, если этого не происходит, то сайт игнорирует .htaccess и что то сделано не так. Возможно, что конфигурации виртуальных хостов лежат не в /etc/apache2/sites-avalaible/default а в /etc/apache2/conf.d Нужно просто внимательно посмотреть, найти где лежат настройки и исправить.
 Теперь curl () :
apt-get install php5-curl
/etc/init.d/apache2 restart

 

Еще может пригодиться WeBmin, по крайней мере можно в нем смотреть где лежат конфиги и потом уже править их в редакторе. Править что то серьезное в нем - не хорошее занятие, может наколбасить, лучше ручками. Установим:

Скачиваем ключ репозитария:

wget http://www.webmin.com/jcameron-key.asc
Добавляем ключ:
apt-key add jcameron-key.asc
Открываем файл с записаями репозитариев:
nano /etc/apt/sources.list
Вставляем эту строку:
deb http://download.webmin.com/download/repository sarge contrib
Обновляем список пакетов:
apt-get update
И устанавливаем:
sudo apt-get install webmin
После этого нужно открыть порт 10000, как мы уже делали для NFS.

 

Ну и последним штрихом неплохо бы поставить MidnightCommander, все же не только консолью жив красноглазик:

apt-get install mc

 

Вот и все, можно строить веб-сайты, посылать и принимать почту!

 

PS А вот еще видео - установка iRedMail  на CentOS.