11.07.2015 Views

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

ПРИНТЕРЫ СЕГОДНЯ - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ХАКЕР 04/ /171/ 2013 Новые горизонты135С помощью такой конфигурации мы получим сразу два вещателя, одиниз которых будет доступен по адресу rtmp://сайт/rtmp, а второй, вещающийв качестве 320 × 240, — по адресу rtmp://сайт/rtmp-320x240. Далее на сайтможно повесить флеш-плеер и кнопки выбора качества, которые будут подсовыватьплееру тот или иной адрес вещателя.Ну и напоследок пример вещания музыки в сеть:while true; doffmpeg -re -i "`find /var/music -type f -name'*.mp3'|sort -R|head -n 1`" -vn -c:a libfaac-ar 44100 -ac 2 -f flv rtmp://localhost/rtmp/stream;doneGIT-ПРОКСИСистема контроля версий Git способна обеспечивать доступ к репозиториямне только по протоколам Git и SSH, но и по HTTP. Когда-то реализациядоступа по HTTP была примитивной и неспособной обеспечить полноценнуюработу с репозиторием. С версии 1.6.6 ситуация изменилась, и сегодняэтот протокол можно использовать, чтобы, например, обойти ограничениябрандмауэров как с той, так и с другой стороны соединения либо для созданиясобственного Git-хостинга с веб-интерфейсом.К сожалению, официальная документация рассказывает только об организациидоступа к Git средствами веб-сервера Apache, но, так как самареализация представляет собой внешнее приложение со стандартным CGIинтерфейсом,ее можно прикрутить практически к любому другому серверу,включая lighttpd и, конечно же, nginx. Для этого не потребуется ничего, кромесамого сервера, установленного Git и небольшого FastCGI-сервера fcgiwrap,который нужен, потому что nginx не умеет работать с CGI напрямую, но умеетвызывать скрипты с помощью протокола FastCGI.Вся схема работы будет выглядеть следующим образом. Сервер fcgiwrapбудет висеть в фоне и ждать запроса на исполнение CGI-приложения.Nginx, в свою очередь, будет сконфигурирован на запрос исполнения CGIбинарникаgit-http-backend через FastCGI-интерфейс каждый раз при обращениик указанному нами адресу. Получив запрос, fcgiwrap исполняет githttp-backendс указанными CGI-аргументами, переданными Git-клиентом,и возвращает результат.Чтобы реализовать такую схему, сначала установим fcgiwrap:$ sudo apt-get install fcgiwrapНастраивать его не нужно, все параметры передаются по протоколуFastCGI. Запущен он будет тоже автоматически. Поэтому остается только настроитьnginx. Для этого создаем файл /etc/nginx/sites-enabled/git (если такогокаталога нет, можно писать в основной конфиг) и пишем в него следующее:# vi /etc/nginx/sites-enabled/gitserver {# Висим на порту 8080listen 8080;# Адрес нашего сервера (не забудь добавить запись# в DNS)server_name git.example.ru;# Логиaccess_log /var/log/nginx/git-http-backend.access.log;error_log /var/log/nginx/git-http-backend.error.log;# Основной адрес для анонимного доступаlocation / {# При попытке загрузки отправляем юзера# на приватный адресif ($arg_service ~* "git-receive-pack") {rewrite ^ /private$uri last;}include /etc/nginx/fastcgi_params;# Адрес нашего git-http-backendfastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;# Адрес Git-репозиторияfastcgi_param GIT_PROJECT_ROOT /srv/git;# Адрес файлаfastcgi_param PATH_INFO $uri;# Адрес сервера fcgiwrapfastcgi_pass 127.0.0.1:9001;}# Адрес для доступа на записьlocation ~/private(/.*)$ {}}# Полномочия юзераauth_basic "git anonymous read-only,authenticated write";# HTTP-аутентификация на основе htpasswdauth_basic_user_file /etc/nginx/htpasswd;# Настройки FastCGIinclude /etc/nginx/fastcgi_params;fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;fastcgi_param GIT_PROJECT_ROOT /srv/git;fastcgi_param PATH_INFO $1;fastcgi_pass 127.0.0.1:9001;Этот конфиг предполагает три важные вещи:1. Адресом репозитория будет /srv/git, поэтому выставляем соответствующиеправа доступа:$ sudo chown -R www-data:www-data /srv/git2. Сам репозиторий должен быть открыт на чтение анонимусами и позволятьаплоад по HTTP:$ cd /srv/git$ git config core.sharedrepository true$ git config http.receivepack true3. Аутентификация осуществляется с помощью файла htpasswd, нужно егосоздать и добавить в него пользователей:$ sudo apt-get install apache2-utils$ htpasswd -c /etc/nginx/htpasswd user1$ htpasswd /etc/nginx/htpasswd user2...На этом все, перезагружаем nginx:$ sudo service nginx restartДалее можно подключиться к репозиторию с помощью клиента Git.МИКРОКЕШИРОВАНИЕПредставим себе ситуацию с динамичным, часто обновляемым сайтом, которыйвдруг начинает получать очень большие нагрузки (ну попал он на страницуодного из крупнейших новостных сайтов) и перестает справляться с отдачейконтента. Грамотная оптимизация и реализация правильной схемыкеширования займет долгое время, а проблемы нужно решать уже сейчас.Что мы можем сделать?Есть несколько способов выйти из этой ситуации с наименьшими потерями,однако наиболее интересную идею предложил Фенн Бэйли (FennBailey, fennb.com). Идея в том, чтобы просто поставить перед сервером nginxи заставить его кешировать весь передаваемый контент, но не просто кешировать,а всего на одну секунду. Изюминка здесь в том, что сотни и тысячипосетителей сайта в секунду, по сути, будут генерировать всего одно обращениек бэкенду, получая в большинстве своем кешированную страницу.При этом разницу вряд ли кто-то заметит, потому что даже на динамичномсайте одна секунда обычно ничего не значит.Конфиг с реализацией этой идеи будет выглядеть не так уж и сложно:# vi /etc/nginx/sites-enabled/cache-proxy# Настройка кешаproxy_cache_path /var/cache/nginx levels=1:2keys_zone=microcache:5m max_size=1000m;server {Когда-то реализация доступапо HTTP была примитивнойи неспособной обеспечить полноценнуюработу с репозиторием

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!