Ubuntu + Nginx + Streaming

streamingИ так, по каким-то непонятным причинам, Вы решили сделать медиа-ресурс, но не просто какой-то захудалый «варезник», а настоящий tube-сайта… И это правильно! В этом нет ничего страшного. Всё очень просто.

Начнём с того, что нам нужен сервер с установленной на него ОС Linux Ubuntu 12.04, а дальше сетапим анд настраиваем по руководству ниже.

В процессе, мы почти все компоненты будем собирать вручную. Не бойтесь страшных команд make. Когда дочитаете пост полностью, поймете, что всё просто.

Мы установим:

  • Nginx вместе с необходимыми модулями
  • и другие утилиты 😉

Ставим зависимости для сборки.

apt-get install build-essential checkinstall subversion unzip yamdi imagemagick php5-curl libssl-dev zlib1g-dev libpcre3-dev rpl

Скачиваем исходники:

mkdir /root/src
cd /root/src
wget http://nginx.org/download/nginx-1.2.6.tar.gz
tar -xzf nginx-1.2.6.tar.gz
cd nginx-1.2.6

Скачиваем модули:


mkdir modules
git clone https://github.com/masterzen/nginx-upload-progress-module.git modules/nginx-upload-progress-module
wget http://www.kernel-video-sharing.com/files/nginx_mod_h264_streaming-2.3.2.zip
unzip nginx_mod_h264_streaming-2.3.2.zip -d modules/
rm -f nginx_mod_h264_streaming-2.3.2.zip

Создаём файл с конфигурационными опциями в папке с распакованным nginx:

joe nginx.sh

Описываем опции конфигурации:


./configure \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--with-debug \
--with-http_stub_status_module \
--with-http_secure_link_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_mp4_module \
--with-http_flv_module \
--with-http_ssl_module \
--with-http_dav_module \
--with-md5=/usr/lib \
--add-module=modules/nginx-upload-progress-module \
--add-module=modules/nginx_mod_h264_streaming-2.3.2

Устраняем проблемы, которые могут возникнуть при компеляции.
В файле
auto/cc/gcc

Нужно найти строку:

CFLAGS="$CFLAGS -Werror"

и заменить её на:

#CFLAGS="$CFLAGS -Werror"

Запускаем конфигуратор и если в конце всё ок, то запускаем make:


sh nginx.sh
make

Прошу заметить, что make будет работать быстрее, если указать кол-во процессоров в системе.
Количество процессоров можно узнать командой:

grep -c processor /proc/cpuinfo

и тогда make можно запускать с получившимся числом. Например, если кол-во процессоров 4, то запускаем его вот так:
make -j4

Идём дальше. Создаём пакет, выполняя эту команду в папке:
checkinstall -D --install=no

После того, как пакет создан, надо удалить старый nginx, но прежде копируем файлы настроек и запуска.

cp /etc/nginx/{nginx.conf,proxy.conf,vhost.conf} /tmp/
cp /etc/inti.d/nginx /tmp/

Удаляем старый nginx


apt-get purge nginx

Ставим новый:

dpkg -i nginx-*.deb

Создаём необходимые симлинки и папки


ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
mkdir -p /var/lib/nginx/body
mkdir /var/lib/nginx/proxy
mkdir /var/lib/nginx/fastcgi
chown -R root /var/lib/nginx/

Устанавливаем скрипт инициализации:


wget http://nginx-init-ubuntu.googlecode.com/files/nginx-init-ubuntu_v2.0.0-RC2.tar.bz2
tar -jxvf nginx-init-ubuntu_v2.0.0-RC2.tar.bz2 -C /etc/init.d/
chmod 715 /etc/init.d/nginx
/usr/sbin/update-rc.d -f nginx defaults
rm -f nginx-init-ubuntu_v2.0.0-RC2.tar.bz2
rpl 'DAEMON=/usr/local/sbin/nginx' 'DAEMON=/usr/local/nginx/sbin/nginx' /etc/init.d/nginx
rpl 'NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"' 'NGINX_CONF_FILE="/etc/nginx/nginx.conf"' /etc/init.d/nginx

Файлы помещаем обратно.


cp /tmp/{nginx.conf,proxy.conf,vhost.conf} /etc/nginx/

Локация, из которой будет воспроизводится видео, выглядит вот так:


location ~* ^.+\.mp4$ {
mp4;
root /path/to/mp4/content/;
}

Теперь Ваш видеолеер будет

Проверяем насколько мы всё правильно сделали:


/etc/init.d/nginx configtest

Если всё ок, то делаем рестарт nginx, если не всё ок, то правим своим ошибки 😉

 

Чуть позже, напишу о том, как установить необходимые для воспроизведения и конверта утилиты, типа ffmpeg and friends.

Есть ещё один вариант, как это всё сделать быстро и бесплатно: заказать выделенный сервер в CoolVDS.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *