Настройка CentOS 5.*, 6.* для работы apache, php-5.2.*, mysql, ffmpeg

Несколько раз подряд пришлось перенастраивать сервер. Переносить сайт с одного сервера на другой. И в конце концов я решил записать лог установки сервера.

На сервере размещен сайт на HostCMS, требуют наличия ZendOptimizer и XSLT, ZendOptimizer работает с PHP не выше 5.2
блог на WordPress, требует php не ниже 5.2,
Vbulletin — вроде ничего особенного не требует.
Также на сайте пережимается загружаемое видео с помощью ffmpeg.

Переходя от хостера к хостеру — всегда оставался на CentOS, только версия сменилась с CentOS 5.4 x86 на CentOS 6.2 64. Последовательность действий от этой смены совершенно не изменилась.

Устанавливаем apache и mysql

# yum install httpd
# yum install mysql-server

Для того чтобы установить не последнюю версию php подключаем репозитарий atomic. Из основного ставится только версия 5.3, с которой многие CMS не работают.

# wget http://www.atomicorp.com/installers/atomic
# sh atomic

В файл /etc/yum.repos.d/atomic.repo в секции [atomic] добавляем:
exclude=php*5.3.*
Эту же строчку может быть необходимо добавить и в другие репозитарии, из которыйх инсталятор пытается поставить модули для php-5.3 вместо 5.2. Во время установки — будьте внимательны. Инсталятор может вполне предложить и поставить модули 5.3, но вместе с php-5.2 они работать не будут.

# yum install php
# yum install php-mysql

для работы xslt

#yum install php-xml

устанавливаем phpmyadmin

# yum install phpmyadmin

Или можно скачать последнюю версию, распаковать там же где и все сайты и прописать виртуалхост в апаче.

после успешной установки, для работы phpmyadmin необходимо
— отредактировать правила доступа и алиасы в папке конфига апача
— отредактировать config.inc.php в папке /usr/share/phpMyAdmin
— запустить mysqld
— создать пароль root в mysql
— установить расширения php: mbstring и mcrypt

# service mysqld start
# mysql -u root mysql
mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');
mysql> exit;

yum install php-mbstring php-mcrypt

теперь можно пытаться войти в phpmyadmin и создать базы.

настраиваем сайты, редактируем /etc/httpd/conf/httpd.conf (путь может меняться)

устанавливаем Zend по инструкции, если теребуется:
http://www.hostcms.ru/documentation/server/zend-optimizer/

устанавливаем автозапуск служб:
chkconfig [—level levels] имя службы

# chkconfig httpd on
# chkconfig mysqld on

проверяем, что автозапуск установлен:

# chkconfig

Если еще не установлен компилятор и дальше вы будете ставить ncftp или php-ffmpeg, ставим gcc и make
# yum install gcc
# yum install make

для перекодирования видео устанавливаем ffmpeg c кодеками и ffmpeg-php
подключаем репозитарий rpmforge для x86_64

# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm

или для i386

# rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.i386.rpm

устанавливаем пакеты
# yum install mplayer mencoder flvtool2 libogg libvorbis lame ffmpeg ffmpeg-devel php-devel

Скачиваем php-ffmeg и устанавливаем

# wget http://sourceforge.net/projects/ffmpeg-php/files/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2/download
# tar xjvf ffmpeg-php-0.6.0.tbz2
# cd ffmpeg-php-0.6.0
# phpize
# ./configure
# make

если make выдает ошибку (а он ее выдает регулярно) ffmpeg_frame.c:421: error: ‘PIX_FMT_RGBA32’ undeclared (first use in this function)
открываем ffmpeg_frame.c и заменяем все PIX_FMT_RGBA32 на PIX_FMT_RGB32
повторяем make

# make install

после установки библиотека ffmpeg.so должна быть в /usr/lib64/php/modules/
в папке /etc/php.d создаем ffmpeg.ini c текстом:
extension=ffmpeg.so

UPD:
Новый php-mpeg можно установить из php PEAR (это другая библиотека с другими функциями и синтаксисом)
Для этого устанавливаем pear (http://pear.php.net/manual/en/installation.getting.php)
$ wget http://pear.php.net/go-pear.phar
$ php go-pear.phar

Устанавливаем FFmpegPHP2
(https://github.com/CodeScaleInc/ffmpeg-php/blob/master/README.rst)


$ sudo pear channel-discover pear.codescale.net
$ sudo pear install codescale/FFmpegPHP2

Перезапускаем апач

# /etc/init.d/httpd restart

Настраиваем резервное копирование.

Если копирование на внешний ftp, то для этого нам понадобится программа ncftp.
Менеджер пакетов о ней не знает, поэтому компилируем из исходников. Как правило ошибок при компиляции не возникает.

# wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.5-src.zip

Если файл не найден, перейдите на ftp://ftp.ncftp.com/ncftp и посмотрите какая версия последняя (старые версии они перемещают в другой каталог)

# unzip ncftp-3.2.5-src.zip
# cd ncftp-3.2.5
# ./configure --prefix=/usr
# make
# make install

Создаем скрипты для резервного копирования на ftp:
thenest.ru/rezervnoe-kopirovanie-na-udalennyjj-ftp-server

Или на ssh / rsync сервер (ничего дополнительно ставить не надо):

Создаем конфиг крона во временном файле например /home/user/cron

SHELL=/bin/bash
# можно указать email
MAILTO=root
0 1 * * * /home/backup/script/site1.sh
0 0 * * * /home/backup/script/site2.sh
0 3 * * * /home/backup/script/site3.sh

эти команды запускают указанные скрипты ежедневно в 1, 0 и 3 часа соответственно
в консоли выполняем команду от имени пользователя.
Указываем крону, что нужно использовать команды из этого временного файла.

#crontab /home/user/cron

Скрипты будут запускаться от имени пользователя. не забудьте поставить соответствующие права на сами скрипты и на папки с которыми они будут работать.

Что еще надо настроить?

Часовой пояс: http://zenux.ru/articles/11/

найти файл подходящего часового пояса в /usr/share/zoneinfo
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
или
ln -sf /usr/share/zoneinfo/Asia/Vladivostok /etc/localtime

Сменить имя сервера, чтобы письма отправленные сервером не отклонялись получателем. Команду:

# hostname domainname.ru

можно прописать в root cron на событие @reboot (возможно есть более цивилизованный метод но найденные инструкции показались слишком сложными)

/etc/crontab
@reboot hostname yourdomain.ru

в файле /etc/hosts также указать этот домен.

  • Роман

    Обалдеть! Спасибо! Единственный нормальный ман за пол дня. Порушил сервер, починил с помощью этого. Низкий земной поклов Вам!

    • VladimirDolgov

      Спасибо за отзыв. Приятно, что не только для себя писал.

  • wfgweg
  • Пару статей по FFMPEG — http://plutov.by/category/ffmpeg