Веб-сервер "под ключ" на базе Ubuntu 14 - Часть 1

Обычно приходится работать с CentOS и Fedora, но вот дошли руки до дистрибутива из ЮАР. Попробуем развернуть веб-сервер "под ключ" на базе Ubuntu 14, установив Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot и ISPConfig.

В данной статье описывается процесс установки полноценного сервера (с Apache2, BIND, Dovecot) на базе Ubuntu 14 (Utopic Unicorn), ISPConfig 3. ISPConfig 3 представляет собой интерфейс, с помощью которого вы можете настраивать следующие службы из браузера: веб-сервер Apache или nginx, почтовый сервер Postfix, Courier или Dovecot (работа с IMAP/POP3), базы данных MySQL, сервера доменных имён BIND или MyDNS, PureFTPd, SpamAssassin, ClamAV и многое другое. В процессе установки мы будем использовать Apache (вместо nginx), BIND (вместо MyDNS) и Dovecot (вместо Courier).

1. Предварительные замечания

В данной статье будем использовать имя хоста test.drach.pro, IP адрес 10.4.0.10 и шлюз 10.4.0.1. В конкретном случае эти параметры могут отличаться, вам необходимо будет заменить их на свои там, где это требуется. Подразумевается, что у Вас должна быть установлена Ubuntu версии 14.04.

2. Редактирование /etc/apt/sources.list и обновление установки Linux

Отредактируем файл /etc/apt/sources.list. Удалим диск установки из файла и убедимся, что дополнительные и экстра репозитории включены:

mcedit /etc/apt/sources.list

#
# deb cdrom:[Ubuntu-Server 14.10 _Utopic Unicorn_ - Release amd64 (20141022.2)]/ utopic main restricted
#deb cdrom:[Ubuntu-Server 14.10 _Utopic Unicorn_ - Release amd64 (20141022.2)]/ utopic main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu/ utopic main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ utopic main restricted
## Major bug fix updates produced after the final release of the ## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ utopic-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ utopic-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ utopic universe
deb-src http://de.archive.ubuntu.com/ubuntu/ utopic universe
deb http://de.archive.ubuntu.com/ubuntu/ utopic-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ utopic-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ utopic multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ utopic multiverse
deb http://de.archive.ubuntu.com/ubuntu/ utopic-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ utopic-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ utopic-backports main restricted universe multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ utopic-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu utopic-security main restricted
deb-src http://security.ubuntu.com/ubuntu utopic-security main restricted
deb http://security.ubuntu.com/ubuntu utopic-security universe
deb-src http://security.ubuntu.com/ubuntu utopic-security universe
deb http://security.ubuntu.com/ubuntu utopic-security multiverse
deb-src http://security.ubuntu.com/ubuntu utopic-security multiverse
## Uncomment the following two lines to add software from Canonical's ## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu utopic partner
# deb-src http://archive.canonical.com/ubuntu utopic partner
## Uncomment the following two lines to add software from Ubuntu's ## 'extras' repository.
## This software is not part of Ubuntu, but is offered by third-party ## developers who want to ship their latest software.
# deb http://extras.ubuntu.com/ubuntu utopic main
# deb-src http://extras.ubuntu.com/ubuntu utopic main

Затем запустим

apt-get update

для обновления соответствующих баз данных и

apt-get upgrade

для установки последних обновлений (если они есть). Если вместе с обновлениями обновилось и само ядро, тогда потребуется перезагрузка системы:

reboot

3. Изменение стандартной оболочки

Как известно, /bin/sh это симлинк на /bin/dash, однако нам потребуется именно /bin/bash, а не /bin/dash.

Мы вынуждены выполнить команду:

dpkg-reconfigure dash
Use dash as the default system shell (/bin/sh)? N

Если этого не сделать, то затем невозможно будет установить ISPConfig.

4. Отключение AppArmor

AppArmor является расширением безопасности (схожим с SELinux), которое предоставляет расширенную безопасность. В нашем случае данное расширение нам не потребуется, поэтому отключим его следующим:

service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

5. Синхронизация времени системы

Наиболее удобным является синхронизация времени системы с NTP (протокол времени интернета), для этого выполним следующее:

apt-get install ntp ntpdate

После этого системное время всегда будет синхронизировано.

6. Установка Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils

Для установки postfix потребуется установить и удалить sendmail

service sendmail stop; update-rc.d -f sendmail remove

Затем установим Postfix, Dovecot, MySQL, rkhunter и binutils при помощи одной лишь команды:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudo

В процессе установки потребуется ответить на следующие вопросы:

New password for the MySQL "root" user:
Repeat password for the MySQL "root" user:
Create a self-signed SSL certificate?:
Host name:
Local only:
General type of mail configuration:
System mail name:

Затем откроем TLS/SSL и порты в Postfix:

nano /etc/postfix/master.cf

Раскомментируйте секции "submission" и "smtps", - добавим строку -o smtpd_client_restrictions=permit_sasl_authenticated в обе секции, остальное ниже оставим закомментированным:

[...]
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - - - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
[...]

Перезапустим Postfix:

service postfix restart

Нам необходимо, чтобы MySQL работал со всеми интерфейсами, а не только с локальным хостом, для этого отредактируем файл /etc/mysql/my.cnf и удалим строку bind-address = 127.0.0.1:

nano /etc/mysql/my.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
[...]

Затем перезапустим MySQL:

service mysql restart

Теперь проверим, разрешена ли работа в интернете:

netstat -tap | grep mysql

Выходные данные должны выглядеть следующим образом:

root@test:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 24603/mysqld

В случае возникновения проблем, исправим конфигурацию:

default_transport = smtp
relay_transport = relay
inet_interfaces = all

7. Установка Amavisd-new, SpamAssassin и Clamav

Для установки amavisd-new, SpamAssassin и ClamAV, выполним следующее:

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Установка ISPConfig 3 использует amavisd, который загружает библиотеку фильтров SpamAssassin, поэтому остановим SpamAssassin, для того, чтобы освободить оперативную память:

service spamassassin stop
update-rc.d -f spamassassin remove

Для запуска clamav введём следующее:

freshclam
service clamav-daemon start

8. Установка Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt устанавливаются следующим образом:

apt-get install apache2 apache2-doc apache2-utils libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached

Далее потребуется ответить на следующие вопросы:

Web server to reconfigure automatically: 
Configure database for phpmyadmin with dbconfig-common?

Затем нам потребуется включить модули Apache suexec, rewrite, ssl, actions и include (дополнительно dav, dav_fs, and auth_digest, если вам требуется WebDAV):

a2enmod suexec rewrite ssl actions include cgi
a2enmod dav_fs dav auth_digest

Далее откроем /etc/apache2/mods-available/suphp.conf...

nano /etc/apache2/mods-available/suphp.conf

... и удалим секцию <FilesMatch "\.ph(p3?|tml)$"> и добавим строку AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml – в противном случае файлы PHP будут запускаться с помощью SuPHP:


#<FilesMatch "\.ph(p3?|tml)$">
# SetHandler application/x-httpd-suphp
#
AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-suphp

suPHP_Engine on

# By default, disable suPHP for debian packaged web applications as files # are owned by root and cannot be executed by suPHP because of min_uid.
suPHP_Engine off

# # Use a specific php config file (a dir which contains a php.ini file)
# suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type
# suPHP_RemoveHandler

Затем перезапустим Apache:

service apache2 restart

Если вы хотите использовать файлы Ruby с расширением .rb на вашем сайте, созданным ISPConfig, потребуется удалить строку application/x-ruby rb in /etc/mime.types:

nano /etc/mime.types
[...]
#application/x-ruby rb
[...]

(Это требуется только для файлов с расширением .rb; файлы Ruby с расширением.rbx все равно будут действительны.)

Далее перезапустим Apache:

service apache2 restart

8.1 Xcache

Xcache представляет собой бесплатный PHP opcode-кэшер, предназначенный для кэширования и оптимизации промежуточного кода PHP. Он схож с другими opcode кэшерами, например eAccelerator или APC. Настоятельно рекомендуется установить один из этих кэшеров, если вы хотите ускорить интерпретацию страниц PHP.

Xcache устанавливается следующим образом:

apt-get install php5-xcache

Перезапустим Apache:

service apache2 restart

8.2 PHP-FPM

Начиная с ISPConfig 3.0.5, дополнительным режим PHP, который можно выбрать для использования совместно с Apache: PHP-FPM.

Для использования PHP-FPM совместно Apache, нам потребуется модуль mod_fastcgi. Установим PHP-FPM и mod_fastcgi следующим образом:

apt-get install libapache2-mod-fastcgi php5-fpm

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

a2enmod actions fastcgi alias
service apache2 restart

8.3 Дополнительные версии PHP

Начиная с ISPConfig 3.0.5, стало возможным иметь несколько версий PHP на одном сервере (версия выбирается с помощью ISPConfig), которые могут быть запущены через FastCGI и PHP-FPM.

Продолжение статьи: читать далее...

2 комментарии

  • Дмитрий Морозов

    написал Дмитрий Морозов

    Суббота, 07 Март 2015 23:12

    Здравствуйте! Установил по Вашей инструкции сервер, настроил, работает уже месяц. Хотелось бы узнать про тонкую настройку jaillkit, через ISPConfig попробовал добавить unzip, не получилось, пока не добавил его и библиотеку вручную, думаю должен быть способ проще. Спасибо за проделанный труд.

    Пожаловаться
  • Владимир Драч

    написал Владимир Драч

    Воскресенье, 08 Март 2015 13:59

    Добрый день!
    Дмитрий, спасибо за отзыв! Очень приятно читать такие комментарии. Что касается JailKit, не совсем понятно, что подразумевается под "тонкой настройкой"? Мне обычно хватало описаний на сайте разработчика.

    Пожаловаться
Авторизуйтесь, чтобы получить возможность оставлять комментарии
Go to top