И так, по каким-то непонятным причинам, Вы решили сделать медиа-ресурс, но не просто какой-то захудалый «варезник», а настоящий 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.