Установка и настройка Apache, MySQL, PHP, Exim, Dovecot, Ruby on Rails и Redmine на CentOS 5.4
Установка и настройка Apache, MySQL, PHP, Exim, Dovecot, Ruby on Rails и Redmine на CentOS 5.4
Задача
Установка по ssh, иногда прибегая к помощи WinSCP as FAR Plugin следующего ПО на VDS:
Disclaimer
Благодарности
Сразу хотел бы выразить свою благодарность отличному программисту, линуксоиду и просто хорошему человеку NickLion за его постоянные советы, помощь и, не редко, непосредственное участие в описываемом процессе.
Спасибо авторам всех статей, на которые я опирался во время установки и настройки всего ПО.
Так же хотел бы поблагодарить поддержку своего провайдера за оперативность, самоотверженность и всяческую помощь с их стороны.
Скажу спасибо и читателю, который обратил свой взор на эту статью.
Установка и настройка
После установки date позволит проверить успешность:
Существуют и другие варианты установки timezone, поэтому каждый может найти удобный для себя.
Warning! Варинат с setuptool:
к сожалению, не сработал. Видимо, не у меня одного — описание причины.
У меня не было файла hosts, что в определенный момент даже вызвало проблему, я добавил его в /etc со следующим содержимым:
(Наверняка его не было так как на VDS минимальная конфигурация ОС, я взял файл с «полной сборки» CentOS 5.5)
Так же мне понадобился mc и screen. Последним рекомендую пользоваться, чтобы не испортить результат работы нескольких часов банальным дисконетом. Здесь можно быстро «научиться» им пользоваться.
Устанавливаем все очень просто:
В дальнейшем, любую нехватку пакета можно устранить с помощью yum по аналогии, главное чтобы таковой нашелся в репозиториях. Я использовал: Remi, Atrpms (адаптированно для CentOS) и endpoint RPM repository (для Ruby и Ruby on Rails).
Здесь я выполнил обновление установленных пакетов. Думаю, что это разумно поскольку еще не подключено ни одного стороннего репозитория, поэтому новым версиям, из базовых репов, можно доверять. Для обновления используем:
Проверяем, что не установлен Apache:
Усли команда ниже ничего не вернула — значит нет Apache, тогда ставим его:
Проверяем, что теперь он установлен:
При помощи следующей команды, можно добавить Apache в автозагрузку:
Удовлетворимся версией из репозитория. Настройка Apache описана ниже.
Проверим, что он установлен:
Настроим MySQL на автоматический запуск во время загрузки системы и запустим его уже сейчас. Аналогично Apache:
После установки MySQL пользователь root для него не имеет пароля и можно авторизоваться без пароля:
Очевидно, это является небезопасным, поэтому назначим пароль для root. Лучше всего для этого выполнить скрипт
Он позволит сделать следующее:
В репозиториях CentOS достаточно старый MySQL, подключим репозиторий Remi и выполним обновление.
Предварительно создадим директорию в home, например. Чем лучше tmp?:
Нижеследующие команды позиционируются для RHEL 5, но естественно, прекрасно работают на CentOS
Непосредственно загрузим и установим Remi:
Нужно включить репозиторий Remi, т.к. по умолчанию он выключен.
Для этого поправим файл /etc/yum.repos.d/remi.repo дабы у [remi] стало enabled=1
Проверяем какая версия MySQL установлена:
Проверяем какая последняя версия MySQL доступна для установки:
Если нужно, теперь можно обновить:
3. Установка PHP
Проверяем, был ли установлен PHP:
Устанавливаем MySQL модуль для PHP:
// Дополнительные модули можно установить при помощи команды:
// # yum install php-common php-mbstring php-mcrypt php-devel php-xml php-gd
Аналогично MySQL, обновляем PHP (из Remi).
Проверяем установленную версию PHP.
Проверяем последнюю доступную в резозитории версию PHP.
Обновляем PHP.
// Обновляем также любые дополнительные php модули, если они были установлены ранее:
// # yum check-update php-common php-mbstring php-mcrypt php-devel php-xml php-gd
// # yum update php-common php-mbstring php-mcrypt php-devel php-xml php-gd
Это касается и всех других конфигов, которые будут подвергаться изменениям.
Редактируем файл /etc/httpd/conf/httpd.conf удобным для Вас редактором, добавляем следующие строки:
Eсли не было, тогда:
И в любом случае добавляем, заменим {YOUR IP} на Ваш IP адрес.
После этого создаем domains.conf, со следующим содержимым, учитывая что нужен vhost для домена example.com:
Не забудьте изменить {YOUR IP} на Ваш IP.
Здесь предлагается следующая структура директорий для расположения файлов сайтов, следовательно эти директории должны существовать:
/var/www/{DOMAIN}/html
/var/www/{DOMAIN}/cgi-bin
{DOMAIN} — Ваш домен.
Запускаем Apache:
Если в будущем нужно будет его перезапустить, для этого выполните:
Проверить работает ли сервис можно так:
Если возникли проблемы, лучший помощник — логи, посмотреть нужный лог можно так:
Создаем пользователя со всеми привилегиями для нужной БД на localhost и иных хостах, если нужно. Не мешало бы использовать привилегии «по минимуму», но это не редко вызывает проблемы при развертывании backup, тогда начинаем подбирать и т.п. — тоже не очень хорошо. Может быть где-то есть список наиболее часто используемых привилегий?
В документации MySQL рекомендуется создать сначала пользователя, после чего установить привилегии для него. Хотя, на моей версии MySQL создание пользователя можно было пропустить, он создавался при установке привилегий. Установка прав и пароля пользователю для localhost:
Установка прав и пароля пользователю для всех иных хостов:
Примечание!
Имейте в виду, что пароль указанный в данной команде будет сохранен в истории команда MySQL, которая расположена ~/.mysql_history
Думаю, не лишним будет очистка этого файла, или некоторых его строк после выполнения всех административных операций.
Путь конфигурационного файла PHP: /etc/php.ini
Скорее всего придется, установить timezone для этого в этом файле найдите строку
и замените на
Без этой настройки у меня не правильную дату возвращали функции PHP, в частности date().
Понадобилась мне и установка ImageMagick, но он тянул за собой абсолютно не нужные на сервере иксы, поэтому решили совместно с NickLion собрать ImageMagick без иксов. Но ставить gcc и остальные необходимые пакеты на сервере не хотелось, поэтому собрали rpm, на другой машине и ее поставили на сервере.
Очевидный вывод: статья неизбежно в будущем потеряет актуальность, но не стоит впадать в панику, Вы всегда может смело обратиться на Установка и настройка почтовых систем под FreeBSD, там наверняка будет что-то актуальное и полезное. И не страшно, что FreeBSD, обладая минимальными знаниями в nix системах без труда можно руководствоваться приведенными там статьями.
«Слепой» способ. Читаем, как минимум первые комментарии, чтобы устранить некоторые неточности статьи. Наверняка, не самый лучший способ, т.к. вряд ли кто-то станет ставить ПО и конфиги, не понимаю что он делает.
«Полный» способ, которым я и воспользовался, в отличие от других пунктов, описывать полностью не буду, лишь приведу ссылки на статьи взятые за основу конфигурирования и опишу основные изменения, которые вносились.
Кто-то скажет, отвратительный способ описания и, возможно, будет прав. Но с другой стороны, кому нужно разобраться с установкой и конфигурированием (а не скопировать и удовлетвориться тем что есть, такой метод подачи — то что нужно, другим смотреть быстрый способ выше) надеюсь останутся довольны.
Если все же, будет большое число желающих увидеть собранную в одном месте информацию о решении поставленной задачи на CentOS, я буду очень рад и не поленюсь описать полностью, тогда уже и более новой версией Dovecot.
Отмечу, что Exim нужно устанавливать с поддержкой Dovecot и MySQL.
Проверяем, что установленный Exim поддерживает авторизацию через Dovecot
Такого Exim нет в репах CentOS 5.4, поэтому я просто искал по имени в сети нужные мне rpm и устанавливал их. Очень не хотелось собирать из исходников. Ставил последнюю версию, на текущий момент это 4.72, и MySQL lookup support (exim-mysql-4.72-41.el5.i386.rpm) для него. Нашел здесь как Exim так и MySQL lookup support.
Почему подключенный репозиторий ATrpms не позволяет найти и установить этот Exim с помощью yum?
Кстати, не стоит переживать, что установленный Exim не содержит в информации о себе поддержку MySQL.
Наверное потому что «поддержка» идет отдельно? Уж простите мою темноту.
Я полагаю, что если Exim собрать с поддержкой MySQL по идеи он (mysql) должен быть виден здесь:
Dovecot ставил из репозитория. Кому нужна более новая версия руководствуйтесь официальным Wiki.
Основная статья по установке и настройке Exim + Dovecot.
Warning! Ориентированная на FreeBSD, но никаких трудов не составляет адаптировать под CentOS:
Права на сокеты для аутентификации мне пришлось расширить, иначе сыпались ошибки в логи.
Установка postfixadmin.
Если Exim не собирался из исходников, следовательно uid и gid для его пользователя не менялись при сборке, как описано здесь. Возможно, при установке будет уже создан пользователь с требуемыми uid и gid, короче нужно поправить/проверить эти значения в /etc/passwd для пользователя под которым запускается Exim. Значения uid=26, gid=26.
Здесь можно почитать как решается проблема с блокировкой в этой ситуации.
В этом пункте присутствует некое недопонимание — зачем нужно менять uid, gid? Почему эти значения используются при получении пользователя из БД и т.п.
Wiki с модификациями, которые обязательно необходимо наложить для указанных версий.
Очень хорошее описание тестирования установленной связки здесь.
После пунктов с установкой Exim и Dovecot. Рекомендую пройти описанные тесты, они могут помочь в решении возникших проблем.
Warning! Статья ориентированна на FreeBSD.
Добавляем установленные и настроенные сервисы в автозагрузку:
В качестве альтернативы, встретил пометку о том, что «работоспособной» статей является так же — Installing Rails on CentOS 5.
Установим endpoint RPM repository (для Ruby и Ruby on Rails):
Установим ruby-enterprise и ruby-enterprise-rubygems:
Перед началом установки с помощью gem можно создать файл ~/.gemrc, если такого нет, и указать в нем:
Это заставит gem в последующем не устанавливать документацию. Зачем она на сервере!?
Дальше, Ruby on Rails но версии 2.3.5, такую как требует руководство Redmine. Сначала я поставил без указания версии, в следствии чего получил Rails 3.0.3 откуда, по моему возникла проблема с "{{value}}", "{{count}}" и т. п. на страницах Redmine.
Итак, для Redmine ставим версию 2.3.5:
Если возникла ошибка о том что требуется версия 1.3.6 или выше:
Ставим последнюю версию gems:
После чего установка rails отработала, напугав меня лишь последней строкой:
С gems вышла странность: при установке yum говорит что версия 1.3.6 (собственно она так именована в репозитории), а установленный gem говорит иначе:
Видимо в репах ошибка закралась.
Далее выбираем подходящий для себя способ получения Redmine, можно скачать и распаковать архив, кто-то рекомендует получить из svn хранилища или git репозитория. Я выбрал первый вариант:
Все же не удалось избежать установки компилятора. Явно, мы собирать ничего не будет, но а gem никак не обойдется без gcc и еще нескольких пакетов для дальнейшей установки:
Создаем БД и пользователя для Redmine, любым удобным для Вас способом:
Создаем копию конфикурационного файла Redmine
После чего редактируем его, меняя production для вновь созданной БД, подробности на официальной странице.
Далее, все как требует документация Redmine:
Теперь установим и сконфигурируем Passenger:
После установки passenger добавил следующие строки в конфиг Apache — /etc/httpd/conf/httpd.conf
Перезапустим httpd:
Теперь Redmine должен заработать успешно! Если возникли проблемы, читаем логи и мои пометки ниже.
Для справки.
Список загруженных модулей Apache можно увидеть при помощи команды:
Если у возникнет проблема, что повсеместно на страницах Redmine виден текст "{{value}}", "{{count}}" и подобные, нужно сделать downgrade для i18n до 0.4.2. У меня такая проблема была, думаю из-за того что я изначально поставить rails 3.0.3, а после откатился до требуемой в доках Redmine версии v2.3.5. Решение этой же проблемы.
Спасибо за Ваше внимание и уделенное для прочтения время.
Удачи в настройке и поисках решения проблем!
Задача
Установка по ssh, иногда прибегая к помощи WinSCP as FAR Plugin следующего ПО на VDS:
- CentOS 5.4 32bit (если у Вас x86_64, незабывайте делать поправку на архитектуру при установке rmp, в частности)
- Apache 2.2.3
- MySQL 5.1.53
- PHP 5.3.3
- Exim 4.72
- Dovecot 1.0.7
- Ruby 1.8.7
- Rails 2.3.5
- Redmine 1.0.4
Disclaimer
- Поскольку я программист, постигаю азы администрирования во время решения поставленной задачи, не имея никакой теоретической базы, лишь опыт, к сожалению;
- Крайне важным считаю отметить тот факт, что версии устанавливаемого Вами ПО должны совпадать перечисленным выше, особенно это касается mail-составляющей сервера (подробности ниже в п.7);
- Описание в большей степень создавалось для для себя (руководствуясь правилом №5), тем не менее решил поделиться с общественностью. Может быть, найдутся пожелания и замечания — буду очень рад;
- С одной стороны, старался сделать пункты независимыми, чтобы можно было не читать все, а обратиться лишь к интересующей информации, если есть такая необходимость. Но, поскольку, все же решается общая задача конфигурирования «от А до Я» то, с другой стороны, и связность пунктов присутствует;
- Не претендую? ни в коем случае, на истину в последней инстанции, более того, кое-где оставляю вопросы на которые сам не нашел ответа;
- Вряд ли Вы найдете здесь описание используемой команды или ее параметров, поскольку лучшее описание всегда будет в man.
Благодарности
Сразу хотел бы выразить свою благодарность отличному программисту, линуксоиду и просто хорошему человеку NickLion за его постоянные советы, помощь и, не редко, непосредственное участие в описываемом процессе.
Спасибо авторам всех статей, на которые я опирался во время установки и настройки всего ПО.
Так же хотел бы поблагодарить поддержку своего провайдера за оперативность, самоотверженность и всяческую помощь с их стороны.
Скажу спасибо и читателю, который обратил свой взор на эту статью.
Установка и настройка
0. Общая настройка системы
Установка Вашей timezone, осуществляется достаточно просто. Создается символическая ссылка /etc/localtime на timezone:# rm -rf /etc/localtime
# ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
После установки date позволит проверить успешность:
$ date
Thu Dec 5 16:59:03 MSD 2009
Существуют и другие варианты установки timezone, поэтому каждый может найти удобный для себя.
Warning! Варинат с setuptool:
# setup
к сожалению, не сработал. Видимо, не у меня одного — описание причины.
У меня не было файла hosts, что в определенный момент даже вызвало проблему, я добавил его в /etc со следующим содержимым:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
(Наверняка его не было так как на VDS минимальная конфигурация ОС, я взял файл с «полной сборки» CentOS 5.5)
Так же мне понадобился mc и screen. Последним рекомендую пользоваться, чтобы не испортить результат работы нескольких часов банальным дисконетом. Здесь можно быстро «научиться» им пользоваться.
Устанавливаем все очень просто:
# yum -y install mc screen
В дальнейшем, любую нехватку пакета можно устранить с помощью yum по аналогии, главное чтобы таковой нашелся в репозиториях. Я использовал: Remi, Atrpms (адаптированно для CentOS) и endpoint RPM repository (для Ruby и Ruby on Rails).
Здесь я выполнил обновление установленных пакетов. Думаю, что это разумно поскольку еще не подключено ни одного стороннего репозитория, поэтому новым версиям, из базовых репов, можно доверять. Для обновления используем:
# yum update
1. Установка Apache
Авторизуемся как root.Проверяем, что не установлен Apache:
# rpm -qa | grep httpd
Усли команда ниже ничего не вернула — значит нет Apache, тогда ставим его:
# yum install httpd
Проверяем, что теперь он установлен:
# rpm -qa | grep -i http
httpd-2.2.3-43.el5.centos.3
При помощи следующей команды, можно добавить Apache в автозагрузку:
# chkconfig httpd on
Удовлетворимся версией из репозитория. Настройка Apache описана ниже.
2. Устанавливаем MySQL
# yum install mysql-server
Проверим, что он установлен:
# rpm -qa | grep -i mysql
mysql-libs-5.0.51a-1.fc9.i386
mysql-server-5.0.51a-1.fc9.i386
perl-DBD-MySQL-4.005-8.fc9.i386
mysql-5.0.51a-1.fc9.i386
Настроим MySQL на автоматический запуск во время загрузки системы и запустим его уже сейчас. Аналогично Apache:
# chkconfig mysqld on
# service mysqld start
После установки MySQL пользователь root для него не имеет пароля и можно авторизоваться без пароля:
# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.51a Source distribution
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>
Очевидно, это является небезопасным, поэтому назначим пароль для root. Лучше всего для этого выполнить скрипт
# /usr/bin/mysql_secure_installation
Он позволит сделать следующее:
- Установить пароль root;
- Удалит пользователя anonymous;
- Запретит авторизоваться для root с удаленных машин;
- Удалит тестовую базу;
- и еще несколько операций, режим интерактивный у него — читайте внимательно.
# mysql -u root
ERROR 1045 (28000):Access denied for user ‘root’@'localhost’(using password:NO)
[Note: root access without password is denied]
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.0.51a Source distribution
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
+——————–+
2 rows in set (0.00 sec)
В репозиториях CentOS достаточно старый MySQL, подключим репозиторий Remi и выполним обновление.
Предварительно создадим директорию в home, например. Чем лучше tmp?:
# cd ~
# mkdir remi
# cd remi
Нижеследующие команды позиционируются для RHEL 5, но естественно, прекрасно работают на CentOS
Непосредственно загрузим и установим Remi:
# wget <a href="http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm">download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm</a>
# wget <a href="http://rpms.famillecollet.com/enterprise/remi-release-5.rpm">rpms.famillecollet.com/enterprise/remi-release-5.rpm</a>
# rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
Нужно включить репозиторий Remi, т.к. по умолчанию он выключен.
Для этого поправим файл /etc/yum.repos.d/remi.repo дабы у [remi] стало enabled=1
Проверяем какая версия MySQL установлена:
# rpm -qa | grep -i mysql
Проверяем какая последняя версия MySQL доступна для установки:
# yum check-update mysql-server
Если нужно, теперь можно обновить:
# yum update mysql-server
3. Установка PHP
# yum install php
Проверяем, был ли установлен PHP:
# rpm -qa | grep -i php
Устанавливаем MySQL модуль для PHP:
# yum search php-mysql
Loaded plugins: refresh-packagekit
=========== Matched: php-mysql =============
php-mysql.i386 : A module for PHP applications that use MySQL databases
# yum install php-mysql
// Дополнительные модули можно установить при помощи команды:
// # yum install php-common php-mbstring php-mcrypt php-devel php-xml php-gd
Аналогично MySQL, обновляем PHP (из Remi).
Проверяем установленную версию PHP.
# rpm -qa | grep -i php
Проверяем последнюю доступную в резозитории версию PHP.
# yum check-update php
Обновляем PHP.
# yum update php
// Обновляем также любые дополнительные php модули, если они были установлены ранее:
// # yum check-update php-common php-mbstring php-mcrypt php-devel php-xml php-gd
// # yum update php-common php-mbstring php-mcrypt php-devel php-xml php-gd
4. Настройка Apache, с виртуальными хостами
Предварительно не мешало бы сделать backup httpd.conf, чтобы можно было в любой момент откатиться:# cp httpd.conf httpd.conf.original
Это касается и всех других конфигов, которые будут подвергаться изменениям.
Редактируем файл /etc/httpd/conf/httpd.conf удобным для Вас редактором, добавляем следующие строки:
Eсли не было, тогда:
Listen 80
И в любом случае добавляем, заменим {YOUR IP} на Ваш IP адрес.
NameVirtualHost {YOUR IP}:80
Include /etc/httpd/conf/domains.conf
После этого создаем domains.conf, со следующим содержимым, учитывая что нужен vhost для домена example.com:
<VirtualHost {YOUR IP}:80>
ServerName <a href="http://www.example.com">www.example.com</a>
ServerAlias <a href="http://www.example.com">www.example.com</a> example.com
ServerAdmin admin@example.com
DocumentRoot /var/www/example.com/html
ScriptAlias /cgi-bin/ /var/www/example.com/cgi-bin/
UseCanonicalName OFF
CustomLog /var/log/httpd/example.com.log combined
ErrorLog /var/log/httpd/example.com.error.log
LogLevel info
<Directory /var/www/example.com>
Options +Includes -Indexes
AllowOverride ALL
php_admin_flag engine ON
Не забудьте изменить {YOUR IP} на Ваш IP.
Здесь предлагается следующая структура директорий для расположения файлов сайтов, следовательно эти директории должны существовать:
/var/www/{DOMAIN}/html
/var/www/{DOMAIN}/cgi-bin
{DOMAIN} — Ваш домен.
Запускаем Apache:
# service httpd start
Если в будущем нужно будет его перезапустить, для этого выполните:
# service httpd restart
Проверить работает ли сервис можно так:
# service httpd status
Если возникли проблемы, лучший помощник — логи, посмотреть нужный лог можно так:
# tail -f /var/log/httpd/{DOMAIN}.error.log
5. Настройка MySQL
Авторизуемся в shell MySQL как root:# mysql -u root -p
Создаем пользователя со всеми привилегиями для нужной БД на localhost и иных хостах, если нужно. Не мешало бы использовать привилегии «по минимуму», но это не редко вызывает проблемы при развертывании backup, тогда начинаем подбирать и т.п. — тоже не очень хорошо. Может быть где-то есть список наиболее часто используемых привилегий?
В документации MySQL рекомендуется создать сначала пользователя, после чего установить привилегии для него. Хотя, на моей версии MySQL создание пользователя можно было пропустить, он создавался при установке привилегий. Установка прав и пароля пользователю для localhost:
mysql> GRANT ALL PRIVILEGES ON needdb.* TO needuser@"localhost" IDENTIFIED BY '{PASSWORD}' WITH GRANT OPTION;
Установка прав и пароля пользователю для всех иных хостов:
mysql> GRANT ALL PRIVILEGES ON needdb.* TO needuser@"%" IDENTIFIED BY '{PASSWORD}' WITH GRANT OPTION;
Примечание!
Имейте в виду, что пароль указанный в данной команде будет сохранен в истории команда MySQL, которая расположена ~/.mysql_history
Думаю, не лишним будет очистка этого файла, или некоторых его строк после выполнения всех административных операций.
6. Настройка PHP
Здесь настройка зависит от задач, которые будут решаться с помощь php.Путь конфигурационного файла PHP: /etc/php.ini
Скорее всего придется, установить timezone для этого в этом файле найдите строку
;date.timezone =
и замените на
date.timezone = "Europe/Moscow"
Без этой настройки у меня не правильную дату возвращали функции PHP, в частности date().
Понадобилась мне и установка ImageMagick, но он тянул за собой абсолютно не нужные на сервере иксы, поэтому решили совместно с NickLion собрать ImageMagick без иксов. Но ставить gcc и остальные необходимые пакеты на сервере не хотелось, поэтому собрали rpm, на другой машине и ее поставили на сервере.
7. Настройка почтового сервера (MTA и IMAP/POP3 сервера)
Sub disclaimer
Важно понимать тот факт, что настройка связки достаточно сильно зависит от версий, которые Вы выбрали. По крайней мере для меня этот этап был наиболее долгим и проблемным в основном благодаря тому, что версии в статях различались с версиями устанавливаемого ПО. Тут два варианта — либо используются только те версии ПО что указаны выше и все с высокой долей вероятности сразу заработает, либо берутся другие версии и «гарантировать» работоспособность данного мануала уже не получиться.Очевидный вывод: статья неизбежно в будущем потеряет актуальность, но не стоит впадать в панику, Вы всегда может смело обратиться на Установка и настройка почтовых систем под FreeBSD, там наверняка будет что-то актуальное и полезное. И не страшно, что FreeBSD, обладая минимальными знаниями в nix системах без труда можно руководствоваться приведенными там статьями.
«Слепой» способ. Читаем, как минимум первые комментарии, чтобы устранить некоторые неточности статьи. Наверняка, не самый лучший способ, т.к. вряд ли кто-то станет ставить ПО и конфиги, не понимаю что он делает.
«Полный» способ, которым я и воспользовался, в отличие от других пунктов, описывать полностью не буду, лишь приведу ссылки на статьи взятые за основу конфигурирования и опишу основные изменения, которые вносились.
Кто-то скажет, отвратительный способ описания и, возможно, будет прав. Но с другой стороны, кому нужно разобраться с установкой и конфигурированием (а не скопировать и удовлетвориться тем что есть, такой метод подачи — то что нужно, другим смотреть быстрый способ выше) надеюсь останутся довольны.
Если все же, будет большое число желающих увидеть собранную в одном месте информацию о решении поставленной задачи на CentOS, я буду очень рад и не поленюсь описать полностью, тогда уже и более новой версией Dovecot.
Отмечу, что Exim нужно устанавливать с поддержкой Dovecot и MySQL.
Проверяем, что установленный Exim поддерживает авторизацию через Dovecot
#: exim -bV | grep dovecot
Authenticators: cram_md5 cyrus_sasl dovecot plaintext spa
Такого Exim нет в репах CentOS 5.4, поэтому я просто искал по имени в сети нужные мне rpm и устанавливал их. Очень не хотелось собирать из исходников. Ставил последнюю версию, на текущий момент это 4.72, и MySQL lookup support (exim-mysql-4.72-41.el5.i386.rpm) для него. Нашел здесь как Exim так и MySQL lookup support.
Почему подключенный репозиторий ATrpms не позволяет найти и установить этот Exim с помощью yum?
Кстати, не стоит переживать, что установленный Exim не содержит в информации о себе поддержку MySQL.
Наверное потому что «поддержка» идет отдельно? Уж простите мою темноту.
Я полагаю, что если Exim собрать с поддержкой MySQL по идеи он (mysql) должен быть виден здесь:
# exim -bV | grep Lookups
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm nis nis0 nisplus passwd sqlite
Dovecot ставил из репозитория. Кому нужна более новая версия руководствуйтесь официальным Wiki.
Основная статья по установке и настройке Exim + Dovecot.
Warning! Ориентированная на FreeBSD, но никаких трудов не составляет адаптировать под CentOS:
Права на сокеты для аутентификации мне пришлось расширить, иначе сыпались ошибки в логи.
Установка postfixadmin.
Если Exim не собирался из исходников, следовательно uid и gid для его пользователя не менялись при сборке, как описано здесь. Возможно, при установке будет уже создан пользователь с требуемыми uid и gid, короче нужно поправить/проверить эти значения в /etc/passwd для пользователя под которым запускается Exim. Значения uid=26, gid=26.
Здесь можно почитать как решается проблема с блокировкой в этой ситуации.
В этом пункте присутствует некое недопонимание — зачем нужно менять uid, gid? Почему эти значения используются при получении пользователя из БД и т.п.
Wiki с модификациями, которые обязательно необходимо наложить для указанных версий.
Очень хорошее описание тестирования установленной связки здесь.
После пунктов с установкой Exim и Dovecot. Рекомендую пройти описанные тесты, они могут помочь в решении возникших проблем.
Warning! Статья ориентированна на FreeBSD.
Добавляем установленные и настроенные сервисы в автозагрузку:
# chkconfig exim on
# chkconfig dovecot on
8. Установка Ruby on Rails и Redmine (Passenger)
За основу была взята статья из официального руководства и английский вариант how to для Passenger (mod_rails). Они, естественно, пересекаются.В качестве альтернативы, встретил пометку о том, что «работоспособной» статей является так же — Installing Rails on CentOS 5.
Установим endpoint RPM repository (для Ruby и Ruby on Rails):
# yum update
# cd /tmp
# wget <a href="https://packages.endpoint.com/endpoint-rpmsign.pub">packages.endpoint.com/endpoint-rpmsign.pub</a>
# rpm --import endpoint-rpmsign.pub
# wget <a href="https://packages.endpoint.com/rhel/5/os/i386/endpoint-repo-1.0-1.i386.rpm">packages.endpoint.com/rhel/5/os/i386/endpoint-repo-1.0-1.i386.rpm</a>
# yum localinstall endpoint-repo-1.0-1.i386.rpm
# yum clean all
Установим ruby-enterprise и ruby-enterprise-rubygems:
# yum install ruby-enterprise ruby-enterprise-rubygems
Перед началом установки с помощью gem можно создать файл ~/.gemrc, если такого нет, и указать в нем:
gem: --no-ri --no-rdoc
Это заставит gem в последующем не устанавливать документацию. Зачем она на сервере!?
Дальше, Ruby on Rails но версии 2.3.5, такую как требует руководство Redmine. Сначала я поставил без указания версии, в следствии чего получил Rails 3.0.3 откуда, по моему возникла проблема с "{{value}}", "{{count}}" и т. п. на страницах Redmine.
Итак, для Redmine ставим версию 2.3.5:
# gem install -v=2.3.5 rails
Если возникла ошибка о том что требуется версия 1.3.6 или выше:
bundler requires RubyGems version >= 1.3.6
Ставим последнюю версию gems:
# wget <a href="http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz">production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz</a>
# tar -zxvf rubygems-1.3.7.tgz
# cd rubygems-1.3.7
# ruby setup.rb config
# ruby setup.rb setup
# ruby setup.rb install
После чего установка rails отработала, напугав меня лишь последней строкой:
# gem install rails
Successfully installed thor-0.14.6
Successfully installed railties-3.0.3
Successfully installed bundler-1.0.7
Successfully installed rails-3.0.3
4 gems installed
Installing ri documentation for thor-0.14.6...
Installing ri documentation for railties-3.0.3...
Installing ri documentation for bundler-1.0.7...
Installing ri documentation for rails-3.0.3...
File not found: lib
С gems вышла странность: при установке yum говорит что версия 1.3.6 (собственно она так именована в репозитории), а установленный gem говорит иначе:
# gem -v
1.3.5
Видимо в репах ошибка закралась.
Далее выбираем подходящий для себя способ получения Redmine, можно скачать и распаковать архив, кто-то рекомендует получить из svn хранилища или git репозитория. Я выбрал первый вариант:
# cd /var/www
# wget <a href="http://rubyforge.org/frs/download.php/73457/redmine-1.0.4.tar.gz">rubyforge.org/frs/download.php/73457/redmine-1.0.4.tar.gz</a>
# tar -xvf redmine-1.0.4.tar.gz
# mv redmine-1.0.4 redmine
# cd redmine
Все же не удалось избежать установки компилятора. Явно, мы собирать ничего не будет, но а gem никак не обойдется без gcc и еще нескольких пакетов для дальнейшей установки:
# yum install mysql-devel
# yum install make gcc gcc-c++
# gem install mysql
Создаем БД и пользователя для Redmine, любым удобным для Вас способом:
# mysql -u root -p
mysql> CREATE DATABASE redmine CHARACTER SET UTF8;
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY '{PASSWORD}' WITH GRANT OPTION;
mysql> quit
Создаем копию конфикурационного файла Redmine
# cp config/database.yml.example config/database.yml
После чего редактируем его, меняя production для вновь созданной БД, подробности на официальной странице.
Далее, все как требует документация Redmine:
# rake generate_session_store
# RAILS_ENV=production rake db:migrate
# RAILS_ENV=production rake redmine:load_default_data
Поскольку все операции проводились под root, а нужно дать apache доступ, выполним:
# chown -R apache:apache files log tmp public/plugin_assets
# chmod -R 755 files log tmp public/plugin_assets
Теперь установим и сконфигурируем Passenger:
# yum install httpd-devel apr-devel
# gem install passenger
# passenger-install-apache2-module
После установки passenger добавил следующие строки в конфиг Apache — /etc/httpd/conf/httpd.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.0/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.0
PassengerRuby /usr/local/bin/ruby
Перезапустим httpd:
# service httpd restart
Теперь Redmine должен заработать успешно! Если возникли проблемы, читаем логи и мои пометки ниже.
Для справки.
Список загруженных модулей Apache можно увидеть при помощи команды:
# apachectl -t -D DUMP_MODULES
Если у возникнет проблема, что повсеместно на страницах Redmine виден текст "{{value}}", "{{count}}" и подобные, нужно сделать downgrade для i18n до 0.4.2. У меня такая проблема была, думаю из-за того что я изначально поставить rails 3.0.3, а после откатился до требуемой в доках Redmine версии v2.3.5. Решение этой же проблемы.
Спасибо за Ваше внимание и уделенное для прочтения время.
Удачи в настройке и поисках решения проблем!
1 комментарий