<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%2F%D0%9B%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_6</id>
	<title>Базы данных/Лабораторная работа 6 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%2F%D0%9B%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_6"/>
	<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/%D0%9B%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_6&amp;action=history"/>
	<updated>2026-06-06T22:24:58Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikicshse.ru/index.php?title=%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/%D0%9B%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_6&amp;diff=1986&amp;oldid=prev</id>
		<title>imported&gt;Mir: Migrated current public revision from wiki.cs.hse.ru</title>
		<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/%D0%9B%D0%B0%D0%B1%D0%BE%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_6&amp;diff=1986&amp;oldid=prev"/>
		<updated>2016-06-18T09:25:55Z</updated>

		<summary type="html">&lt;p&gt;Migrated current public revision from wiki.cs.hse.ru&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Цель лабораторной работы: создать высоконагруженный счётчик посещения ссылок.&lt;br /&gt;
&lt;br /&gt;
= Установка =&lt;br /&gt;
&lt;br /&gt;
== окружение для сборки ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install --yes libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential&lt;br /&gt;
&lt;br /&gt;
== Redis ==&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install --yes redis-server redis-tools&lt;br /&gt;
  echo &amp;#039;ULIMIT=65536&amp;#039; &amp;gt;&amp;gt; /etc/default/redis-server&lt;br /&gt;
  service redis-server restart&lt;br /&gt;
&lt;br /&gt;
[http://redis.io/topics/quickstart Ссылка] на quick start&lt;br /&gt;
&lt;br /&gt;
== NginX + redis2_module ==&lt;br /&gt;
&lt;br /&gt;
  sudo -i&lt;br /&gt;
  mkdir -p /opt/{nginx-build,nginx,redis2}/&lt;br /&gt;
  &lt;br /&gt;
  cd /opt/redis2&lt;br /&gt;
  wget &amp;#039;https://github.com/openresty/redis2-nginx-module/archive/v0.13.tar.gz&amp;#039;&lt;br /&gt;
  tar xf v0.13.tar.gz&lt;br /&gt;
  cd -&lt;br /&gt;
  &lt;br /&gt;
  cd /opt/nginx-build/&lt;br /&gt;
  wget &amp;#039;http://nginx.org/download/nginx-1.9.15.tar.gz&amp;#039;&lt;br /&gt;
  tar -xzvf nginx-1.9.15.tar.gz&lt;br /&gt;
  cd nginx-1.9.15/&lt;br /&gt;
  ./configure --prefix=/opt/nginx --add-module=/opt/redis2/redis2-nginx-module-0.13/&lt;br /&gt;
  make -j2&lt;br /&gt;
  make install&lt;br /&gt;
&lt;br /&gt;
= Настройка =&lt;br /&gt;
&lt;br /&gt;
  sudo -i&lt;br /&gt;
  cd /opt/nginx/&lt;br /&gt;
  cat &amp;lt;&amp;lt;EOF &amp;gt; nginx.conf.tpl&lt;br /&gt;
  events {&lt;br /&gt;
    worker_connections  4096;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  http {&lt;br /&gt;
    server {&lt;br /&gt;
      listen  8000;&lt;br /&gt;
      location / {&lt;br /&gt;
        # $uri variable holds part of url after &amp;quot;address:port&amp;quot;&lt;br /&gt;
        # Redis Server is available via 6379 port on localhost&lt;br /&gt;
  &lt;br /&gt;
        ## DO YOUR WORK HERE ##&lt;br /&gt;
        # docs: https://github.com/openresty/redis2-nginx-module&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  cp -a nginx.conf.tpl nginx.conf&lt;br /&gt;
  vim nginx.conf  # FIX CONFIG HERE&lt;br /&gt;
&lt;br /&gt;
= Управление NginX&amp;#039;ом =&lt;br /&gt;
&lt;br /&gt;
Запуск:&lt;br /&gt;
  cd /opt/nginx/&lt;br /&gt;
  ulimit -n 65536&lt;br /&gt;
  ./sbin/nginx -c nginx.conf&lt;br /&gt;
&lt;br /&gt;
Остановка:&lt;br /&gt;
  pkill nginx  # останавливает все nginx-процессы в системе&lt;br /&gt;
&lt;br /&gt;
= Тестирование =&lt;br /&gt;
&lt;br /&gt;
Apache Benchmark&lt;br /&gt;
&lt;br /&gt;
Установка:&lt;br /&gt;
  sudo apt-get install -y apache2-utils&lt;br /&gt;
&lt;br /&gt;
Запуск:&lt;br /&gt;
  ulimit -n 65536&lt;br /&gt;
  ab -n 10000 -kc 500 http://server:8000/url1&lt;br /&gt;
&lt;br /&gt;
= Задание =&lt;br /&gt;
&lt;br /&gt;
# Воспроизвести аналогичную систему.&lt;br /&gt;
# Настроить её так, чтобы в Redis записывалось каждое посещение страницы (ключ - url страницы, например &amp;quot;/my/awesome/page.html&amp;quot;)&lt;br /&gt;
# Разобраться и понимать в архитектуру и работе стенда.&lt;br /&gt;
# Провести тестирование с помощью Apache Benchmark (&amp;quot;ab&amp;quot;)&lt;br /&gt;
# Убедиться, что все показы записались в базу (например с помощью &amp;quot;redis-cli&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
= Расширенное задание =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cамостоятельно&amp;#039;&amp;#039;&amp;#039; доработать данный стенд:&lt;br /&gt;
* используя Python/Flask&lt;br /&gt;
* подключить код к NginX через &amp;quot;uwsgi&amp;quot;&lt;br /&gt;
* который будет (речь идёт про код)&lt;br /&gt;
** выводить список всех ключей Redis (отвечать по адресу: &amp;quot;/admin/all_keys&amp;quot;)&lt;br /&gt;
** выводить значение конкретного счётчика (пример: &amp;quot;/admin/key2value/some/url&amp;quot;; в данному случае должно быть отображено кол-во посещений адреса &amp;quot;/some/url&amp;quot;)&lt;br /&gt;
** удалять конкретный счётчик из базы (пример: &amp;quot;/admin/key2flush/some/url2/&amp;quot;)&lt;/div&gt;</summary>
		<author><name>imported&gt;Mir</name></author>
	</entry>
</feed>