<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.solab.rshu.ru/skins/common/feed.css?207"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title> - User contributions [en]</title>
		<link>http://wiki.solab.rshu.ru/Special:Contributions/Daniel</link>
		<description>From </description>
		<language>en</language>
		<generator>MediaWiki 1.15.5-2squeeze6</generator>
		<lastBuildDate>Fri, 17 Apr 2026 08:18:37 GMT</lastBuildDate>
		<item>
			<title>Установка и развёртывание проекта posada на ubuntu 12.04.LTS</title>
			<link>http://wiki.solab.rshu.ru/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D1%91%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0_posada_%D0%BD%D0%B0_ubuntu_12.04.LTS</link>
			<guid>http://wiki.solab.rshu.ru/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D1%91%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0_posada_%D0%BD%D0%B0_ubuntu_12.04.LTS</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install sqlite&lt;br /&gt;
sudo easy_install virtualenv&lt;br /&gt;
cd /var/www&lt;br /&gt;
hg clone https://daniel-bavrin@bitbucket.org/bolkhovsky/posada posada&lt;br /&gt;
cd posada&lt;br /&gt;
virtualenv /var/www/posada&lt;br /&gt;
source /var/www/posada/bin/activate&lt;br /&gt;
pip install django==1.5.2 django-suit south django-debug-toolbar gunicorn git+https://github.com/toastdriven/django-tastypie celery django-celery django-kombu flower&lt;br /&gt;
mkdir staticfiles&lt;br /&gt;
mkdir ./logs&lt;br /&gt;
mkdir ./pids&lt;br /&gt;
mkdir ./db&lt;br /&gt;
mkdir ./static_content&lt;br /&gt;
mkdir ./static_content/media&lt;br /&gt;
python manage.py collectstatic&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/nginx/sites-available/posada.conf&lt;br /&gt;
upstream posada.solab.rshu.ru {&lt;br /&gt;
    server localhost:12345 fail_timeout=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name  www.posada.solab.rshu.ru;&lt;br /&gt;
    rewrite ^/(.*) http://posada.solab.rshu.ru/$1 permanent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    client_max_body_size 4G;&lt;br /&gt;
    server_name posada.solab.rshu.ru;&lt;br /&gt;
    access_log  /var/www/posada/logs/posada.access.log;&lt;br /&gt;
    error_log  /var/www/posada/logs/posada.error.log;&lt;br /&gt;
    keepalive_timeout 5;&lt;br /&gt;
&lt;br /&gt;
    root /var/www/posada/static_content;&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
        location ~ ^/pydap/(?!\.static.*).*$ {&lt;br /&gt;
            rewrite ^/pydap(/.*)$ $1 break;&lt;br /&gt;
            proxy_pass http://127.0.0.1:3031$1;&lt;br /&gt;
            include proxy_params;&lt;br /&gt;
        }&lt;br /&gt;
        location /pydap/.static/ {&lt;br /&gt;
            autoindex    on;&lt;br /&gt;
            alias /var/www/pydap/server/data/.static/;&lt;br /&gt;
        }&lt;br /&gt;
        location /.static/ {&lt;br /&gt;
            autoindex    on;&lt;br /&gt;
            alias /var/www/pydap/server/data/.static/;&lt;br /&gt;
        }&lt;br /&gt;
        proxy_pass http://posada.solab.rshu.ru$request_uri;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    error_page 500 502 503 504 /500.html;&lt;br /&gt;
    location = /500.html {&lt;br /&gt;
        root /var/www/posada/static_content/static/html;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    location ~ ^/(static|media)/ {&lt;br /&gt;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
        proxy_set_header Host $http_host;&lt;br /&gt;
        proxy_redirect off;&lt;br /&gt;
        if (!-f $request_filename) {&lt;br /&gt;
            proxy_pass http://posada.solab.rshu.ru;&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /etc/nginx/sites-available/posada.conf /etc/nginx/sites-enabled/&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/supervisor/conf.d/posada.conf&lt;br /&gt;
[program:posada]&lt;br /&gt;
command=/var/www/posada/bin/python /var/www/posada/manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=/var/www/posada/pids/gunicorn.pid --log-file /var/www/posada/logs/gunicorn.log&lt;br /&gt;
/var/www/posada/logs/gunicorn.log&lt;br /&gt;
directory=/var/www/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/supervisor/conf.d/celery.conf&lt;br /&gt;
[program:celery]&lt;br /&gt;
command=/var/www/posada/bin/python /var/www/posada/manage.py celeryd -B&lt;br /&gt;
directory=/var/www/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/supervisor/conf.d/flower.conf&lt;br /&gt;
[program:flower]&lt;br /&gt;
command=/var/www/posada/bin/python /var/www/posada/manage.py celery flower&lt;br /&gt;
process_name=%(program_name)s&lt;br /&gt;
numprocs=1&lt;br /&gt;
numprocs_start=0&lt;br /&gt;
autostart=false&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=1&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
redirect_stderr=false&lt;br /&gt;
stdout_logfile=AUTO&lt;br /&gt;
stdout_logfile_maxbytes=50MB&lt;br /&gt;
stdout_logfile_backups=10&lt;br /&gt;
stdout_capture_maxbytes=0&lt;br /&gt;
stdout_events_enabled=false&lt;br /&gt;
stderr_logfile=AUTO&lt;br /&gt;
stderr_logfile_maxbytes=50MB&lt;br /&gt;
stderr_logfile_backups=10&lt;br /&gt;
stderr_capture_maxbytes=0&lt;br /&gt;
stderr_events_enabled=false&lt;br /&gt;
directory=/var/www/posada/&lt;br /&gt;
serverurl=AUTO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo supervisorctl reread&lt;br /&gt;
sudo supervisorctl update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
python manage.py syncdb&lt;br /&gt;
python manage.py migrate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc&lt;br /&gt;
sudo apt-key add rabbitmq-signing-key-public.asc&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade rabbitmq-server&lt;br /&gt;
sudo rabbitmqctl add_vhost /&lt;br /&gt;
sudo rabbitmqctl add_user posada posada_password&lt;br /&gt;
sudo rabbitmqctl set_permissions -p posada / &amp;quot;.*&amp;quot; &amp;quot;.*&amp;quot; &amp;quot;.*&amp;quot;&lt;br /&gt;
sudo rabbitmq-server restart&lt;br /&gt;
sudo supervisorctl restart celery&lt;br /&gt;
&lt;br /&gt;
python manage.py createsuperuser&lt;br /&gt;
&amp;gt;&amp;gt;solab&lt;br /&gt;
&amp;gt;&amp;gt;bavrin@rshu.ru&lt;br /&gt;
&amp;gt;&amp;gt;s0l4b1sg00d&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Fri, 11 Oct 2013 15:28:59 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Talk:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D1%91%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0_posada_%D0%BD%D0%B0_ubuntu_12.04.LTS</comments>		</item>
		<item>
			<title>Установка и развёртывание проекта posada на ubuntu 12.04.LTS</title>
			<link>http://wiki.solab.rshu.ru/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D1%91%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0_posada_%D0%BD%D0%B0_ubuntu_12.04.LTS</link>
			<guid>http://wiki.solab.rshu.ru/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D1%91%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0_posada_%D0%BD%D0%B0_ubuntu_12.04.LTS</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;Created page with &amp;quot;sudo apt-get install sqlite sudo easy_install virtualenv cd /var/www hg clone https://daniel-bavrin@bitbucket.org/bolkhovsky/posada posada cd posada virtualenv /var/www/posada so…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sudo apt-get install sqlite&lt;br /&gt;
sudo easy_install virtualenv&lt;br /&gt;
cd /var/www&lt;br /&gt;
hg clone https://daniel-bavrin@bitbucket.org/bolkhovsky/posada posada&lt;br /&gt;
cd posada&lt;br /&gt;
virtualenv /var/www/posada&lt;br /&gt;
source /var/www/posada/bin/activate&lt;br /&gt;
pip install django==1.5.2 django-suit south django-debug-toolbar gunicorn git+https://github.com/toastdriven/django-tastypie celery django-celery django-kombu flower&lt;br /&gt;
mkdir staticfiles&lt;br /&gt;
mkdir ./logs&lt;br /&gt;
mkdir ./pids&lt;br /&gt;
mkdir ./db&lt;br /&gt;
mkdir ./static_content&lt;br /&gt;
mkdir ./static_content/media&lt;br /&gt;
python manage.py collectstatic&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/nginx/sites-available/posada.conf&lt;br /&gt;
upstream posada.solab.rshu.ru {&lt;br /&gt;
    server localhost:12345 fail_timeout=0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name  www.posada.solab.rshu.ru;&lt;br /&gt;
    rewrite ^/(.*) http://posada.solab.rshu.ru/$1 permanent;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    client_max_body_size 4G;&lt;br /&gt;
    server_name posada.solab.rshu.ru;&lt;br /&gt;
    access_log  /var/www/posada/logs/posada.access.log;&lt;br /&gt;
    error_log  /var/www/posada/logs/posada.error.log;&lt;br /&gt;
    keepalive_timeout 5;&lt;br /&gt;
&lt;br /&gt;
    root /var/www/posada/static_content;&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
        location ~ ^/pydap/(?!\.static.*).*$ {&lt;br /&gt;
            rewrite ^/pydap(/.*)$ $1 break;&lt;br /&gt;
            proxy_pass http://127.0.0.1:3031$1;&lt;br /&gt;
            include proxy_params;&lt;br /&gt;
        }&lt;br /&gt;
        location /pydap/.static/ {&lt;br /&gt;
            autoindex    on;&lt;br /&gt;
            alias /var/www/pydap/server/data/.static/;&lt;br /&gt;
        }&lt;br /&gt;
        location /.static/ {&lt;br /&gt;
            autoindex    on;&lt;br /&gt;
            alias /var/www/pydap/server/data/.static/;&lt;br /&gt;
        }&lt;br /&gt;
        proxy_pass http://posada.solab.rshu.ru$request_uri;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    error_page 500 502 503 504 /500.html;&lt;br /&gt;
    location = /500.html {&lt;br /&gt;
        root /var/www/posada/static_content/static/html;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    location ~ ^/(static|media)/ {&lt;br /&gt;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
        proxy_set_header Host $http_host;&lt;br /&gt;
        proxy_redirect off;&lt;br /&gt;
        if (!-f $request_filename) {&lt;br /&gt;
            proxy_pass http://posada.solab.rshu.ru;&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo ln -s /etc/nginx/sites-available/posada.conf /etc/nginx/sites-enabled/&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/supervisor/conf.d/posada.conf&lt;br /&gt;
[program:posada]&lt;br /&gt;
command=/var/www/posada/bin/python /var/www/posada/manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=/var/www/posada/pids/gunicorn.pid --log-file /var/www/posada/logs/gunicorn.log&lt;br /&gt;
/var/www/posada/logs/gunicorn.log&lt;br /&gt;
directory=/var/www/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/supervisor/conf.d/celery.conf&lt;br /&gt;
[program:celery]&lt;br /&gt;
command=/var/www/posada/bin/python /var/www/posada/manage.py celeryd -B&lt;br /&gt;
directory=/var/www/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/supervisor/conf.d/flower.conf&lt;br /&gt;
[program:flower]&lt;br /&gt;
command=/var/www/posada/bin/python /var/www/posada/manage.py celery flower&lt;br /&gt;
process_name=%(program_name)s&lt;br /&gt;
numprocs=1&lt;br /&gt;
numprocs_start=0&lt;br /&gt;
autostart=false&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=1&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
redirect_stderr=false&lt;br /&gt;
stdout_logfile=AUTO&lt;br /&gt;
stdout_logfile_maxbytes=50MB&lt;br /&gt;
stdout_logfile_backups=10&lt;br /&gt;
stdout_capture_maxbytes=0&lt;br /&gt;
stdout_events_enabled=false&lt;br /&gt;
stderr_logfile=AUTO&lt;br /&gt;
stderr_logfile_maxbytes=50MB&lt;br /&gt;
stderr_logfile_backups=10&lt;br /&gt;
stderr_capture_maxbytes=0&lt;br /&gt;
stderr_events_enabled=false&lt;br /&gt;
directory=/var/www/posada/&lt;br /&gt;
serverurl=AUTO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo supervisorctl reread&lt;br /&gt;
sudo supervisorctl update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
python manage.py syncdb&lt;br /&gt;
python manage.py migrate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wget http://www.rabbitmq.com/rabbitmq-signing-key-public.asc&lt;br /&gt;
sudo apt-key add rabbitmq-signing-key-public.asc&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade rabbitmq-server&lt;br /&gt;
sudo rabbitmqctl add_vhost /&lt;br /&gt;
sudo rabbitmqctl add_user posada posada_password&lt;br /&gt;
sudo rabbitmqctl set_permissions -p posada / &amp;quot;.*&amp;quot; &amp;quot;.*&amp;quot; &amp;quot;.*&amp;quot;&lt;br /&gt;
sudo rabbitmq-server restart&lt;br /&gt;
sudo supervisorctl restart celery&lt;br /&gt;
&lt;br /&gt;
python manage.py createsuperuser&lt;br /&gt;
&amp;gt;&amp;gt;solab&lt;br /&gt;
&amp;gt;&amp;gt;bavrin@rshu.ru&lt;br /&gt;
&amp;gt;&amp;gt;s0l4b1sg00d&lt;/div&gt;</description>
			<pubDate>Fri, 11 Oct 2013 15:28:28 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Talk:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D1%80%D0%B0%D0%B7%D0%B2%D1%91%D1%80%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0_posada_%D0%BD%D0%B0_ubuntu_12.04.LTS</comments>		</item>
		<item>
			<title>Template:Doc</title>
			<link>http://wiki.solab.rshu.ru/Template:Doc</link>
			<guid>http://wiki.solab.rshu.ru/Template:Doc</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;Created page with &amp;quot;&amp;lt;includeonly&amp;gt;{{doc/begin|{{SUBJECTSPACE}}:{{PAGENAME:{{{1|{{SUBJECTPAGENAME}}/doc}}}}}|editsection={{{editsection|}}}}} {{#ifexist:{{{1|{{SUBJECTPAGENAME}}/doc}}}|{{{{{1|{{SUBJEC…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{doc/begin|{{SUBJECTSPACE}}:{{PAGENAME:{{{1|{{SUBJECTPAGENAME}}/doc}}}}}|editsection={{{editsection|}}}}}&lt;br /&gt;
{{#ifexist:{{{1|{{SUBJECTPAGENAME}}/doc}}}|{{{{{1|{{SUBJECTPAGENAME}}/doc}}}}}|{{#ifexist:{{SUBJECTSPACE}}:{{{1}}}|{{{{{1}}}}}|{{Документировать|{{{1|{{SUBJECTPAGENAME}}/doc}}}}}}}}}&lt;br /&gt;
{{doc/end}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{doc}}&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
[Rus]: Добавляйте категории и интервики на подстраницу /doc, не сюда!&lt;br /&gt;
[Eng]: Please add categories and interwiki links to the /doc subpage, not here!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</description>
			<pubDate>Fri, 11 Oct 2013 15:26:43 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Template_talk:Doc</comments>		</item>
		<item>
			<title>Template:Другое значение</title>
			<link>http://wiki.solab.rshu.ru/Template:%D0%94%D1%80%D1%83%D0%B3%D0%BE%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5</link>
			<guid>http://wiki.solab.rshu.ru/Template:%D0%94%D1%80%D1%83%D0%B3%D0%BE%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;Created page with &amp;quot;&amp;lt;div class=&amp;quot;dablink{{#if:{{{extraclasses|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;{{{extraclasses}}}}}&amp;quot;&amp;gt;{{{1}}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt; {{doc}} &amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;dablink{{#if:{{{extraclasses|}}}|&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;{{{extraclasses}}}}}&amp;quot;&amp;gt;{{{1}}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{doc}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</description>
			<pubDate>Fri, 11 Oct 2013 15:26:18 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Template_talk:%D0%94%D1%80%D1%83%D0%B3%D0%BE%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5</comments>		</item>
		<item>
			<title>Template:Main</title>
			<link>http://wiki.solab.rshu.ru/Template:Main</link>
			<guid>http://wiki.solab.rshu.ru/Template:Main</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;Created page with &amp;quot;{{другое значение|extraclasses=noprint|{{#if:{{{2|}}}|Основные статьи|Основная статья}}: '''{{{1}}}}}}'''&amp;lt;!-- --&amp;gt;{{#if…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{другое значение|extraclasses=noprint|{{#if:{{{2|}}}|Основные статьи|Основная статья}}: '''[[{{{1}}}|{{{l1|{{{1}}}}}}]]'''&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{2|}}}|, '''[[{{{2}}}|{{{l2|{{{2}}}}}}]]'''}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{3|}}}|, '''[[{{{3}}}|{{{l3|{{{3}}}}}}]]'''}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{4|}}}|, '''[[{{{4}}}|{{{l4|{{{4}}}}}}]]'''}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{5|}}}|, '''[[{{{5}}}|{{{l5|{{{5}}}}}}]]'''}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{6|}}}|&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt; (слишком много параметров для {{tl|main}})&amp;lt;/span&amp;gt;}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{doc}}&amp;lt;!-- Пожалуйста, добавляйте категории и интервики на страницу документации! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</description>
			<pubDate>Fri, 11 Oct 2013 15:25:26 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Template_talk:Main</comments>		</item>
		<item>
			<title>solab:Общее описание</title>
			<link>http://wiki.solab.rshu.ru/solab:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</link>
			<guid>http://wiki.solab.rshu.ru/solab:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;/* Установка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Общее описание =&lt;br /&gt;
'''POSADA''' — '''P'''yth'''O'''n '''SA'''tellite '''D'''ata '''A'''pi processing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На данный момент проект POSADA предназначен для генерации квиклуков в будущем планируется полностью заменить NAIAD и реализовать экстракцию данных. &lt;br /&gt;
&lt;br /&gt;
== Архитектура ==&lt;br /&gt;
POSADA является веб приложением написанным на веб-фреймворке [https://www.djangoproject.com/  Django]. &lt;br /&gt;
&lt;br /&gt;
Для реализации очереди задач используется [http://www.celeryproject.org/ Celery] c [http://www.rabbitmq.com/ RabbitMQ] в качестве брокера. &lt;br /&gt;
&lt;br /&gt;
Для реализации API с REST интерфейсом используется [http://django-tastypie.readthedocs.org/en/latest/ django-tastypie]&lt;br /&gt;
&lt;br /&gt;
[[File:posada_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
Основным приложение в POSADA является &amp;quot;Core&amp;quot;. В нем реализованы 3 модели ''Products'', ''Projections'' и ''Request''.&lt;br /&gt;
С моделями можно ознакомиться в [https://bitbucket.org/nonamenix/posada/src/ репозитории].&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
=== Добавление задачи ===&lt;br /&gt;
&lt;br /&gt;
Пользователь посредством админки или API создает новую задачу. С методами API можно ознакомиться с его же помощью [http://posada.solab.rshu.ru/api/v1/?format=json http://posada.solab.rshu.ru/api/v1/?format=json]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var data = JSON.stringify({&lt;br /&gt;
   &amp;quot;opendap_link&amp;quot;:&amp;quot; http://opendap.solab.rshu.ru:8080/opendap/allData/SOLAB_AMSRE_L2_NN&lt;br /&gt;
      /2002/07/SOLAB_AMSRE_L2_NN_20020701_000435_20020701_005434_174_A_v1.nc.html&amp;quot;,&lt;br /&gt;
   &amp;quot;product_name&amp;quot;: &amp;quot;SOLAB_AMSRE_L2_NN&amp;quot;,&lt;br /&gt;
   &amp;quot;projection_name&amp;quot;: &amp;quot;epsg_4326&amp;quot;,&lt;br /&gt;
   &amp;quot;ql_height&amp;quot;: 1024, &amp;quot;ql_width&amp;quot;: 1024, &amp;quot;ql_format&amp;quot;: &amp;quot;png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$.ajax({&lt;br /&gt;
   url: 'http://localhost:8000/api/v1/request/',&lt;br /&gt;
   type: 'POST',&lt;br /&gt;
   contentType: 'application/json',&lt;br /&gt;
   data: data,&lt;br /&gt;
   dataType: 'json',&lt;br /&gt;
   processData: false,&lt;br /&gt;
   success: function(data) {console.log(data)}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее при сохранении для текущей задачи создается асинхронный celery-task, который попадает в очередь выполнения задач.&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг ===&lt;br /&gt;
&lt;br /&gt;
Посмотреть можно в админке в разделе '''djcelery / tasks''' или '''flower''', который доступен по порту 5555 ([http://posada.solab.rshu.ru:5555 flower]).&lt;br /&gt;
&lt;br /&gt;
=== Callback === &lt;br /&gt;
&lt;br /&gt;
Если задача выполнена (успешно или с ошибкой), то срабатывает вызов адреса прописанного в соответствующем поле модели ''Request''.&lt;br /&gt;
&lt;br /&gt;
== Установка == &lt;br /&gt;
{{main|Установка и развёртывание проекта posada на ubuntu 12.04.LTS}}&lt;br /&gt;
&lt;br /&gt;
Настройка Django + nginx: [http://habrahabr.ru/post/159575/ http://habrahabr.ru/post/159575/]&lt;br /&gt;
&lt;br /&gt;
Репозиторий: [https://bolkhovsky@bitbucket.org/bolkhovsky/posada https://bolkhovsky@bitbucket.org/bolkhovsky/posada ]&lt;br /&gt;
&lt;br /&gt;
Об установке связки Django + Celery + django-celery + RabbitMQ: [http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html]&lt;br /&gt;
&lt;br /&gt;
Асинхронные задания в Django c помощью Celery: http://habrahabr.ru/post/123902/&lt;br /&gt;
&lt;br /&gt;
=== Запуск ===&lt;br /&gt;
&lt;br /&gt;
rabbitmq-plugins enable rabbitmq_management&lt;br /&gt;
&lt;br /&gt;
sudo rabbitmq-server&lt;br /&gt;
&lt;br /&gt;
python manage.py celeryd -E -l INFO -v 1 -f logs/celeryd.log&lt;br /&gt;
&lt;br /&gt;
celery flower --broker=amqp://posada:posada@localhost:5672//&lt;br /&gt;
&lt;br /&gt;
python manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=pids/gunicorn.pid --log-file logs/gunicorn.log&lt;br /&gt;
&lt;br /&gt;
=== Конфигурационные файлы supervisorctl: ===&lt;br /&gt;
чтобы нужные процессы запускались в фоне&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/celery.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:celery]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py celeryd -B&lt;br /&gt;
directory=/home/user/Projects/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/posada.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:posada]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=/home/user/Projects/posada/pids/gunicorn.pid --log-file /home/user/Projects/posada/logs/gunicorn.log&lt;br /&gt;
directory=/home/user/Projects/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/flower.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:flower]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py celery flower&lt;br /&gt;
process_name=%(program_name)s&lt;br /&gt;
numprocs=1&lt;br /&gt;
numprocs_start=0&lt;br /&gt;
autostart=false&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=1&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
redirect_stderr=false&lt;br /&gt;
stdout_logfile=AUTO&lt;br /&gt;
stdout_logfile_maxbytes=50MB&lt;br /&gt;
stdout_logfile_backups=10&lt;br /&gt;
stdout_capture_maxbytes=0&lt;br /&gt;
stdout_events_enabled=false&lt;br /&gt;
stderr_logfile=AUTO&lt;br /&gt;
stderr_logfile_maxbytes=50MB&lt;br /&gt;
stderr_logfile_backups=10&lt;br /&gt;
stderr_capture_maxbytes=0&lt;br /&gt;
stderr_events_enabled=false&lt;br /&gt;
directory=/home/user/Projects/posada/posada/&lt;br /&gt;
serverurl=AUTO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
запускать и останавливать сервисы по отдельности можно так:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo supervisorctl start celery&lt;br /&gt;
&lt;br /&gt;
sudo supervisorctl stop celery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
при изменении конфиг-файла запускаем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo supervisorctl reread&lt;br /&gt;
sudo supervisorctl update&lt;br /&gt;
sudo supervisorctl start &amp;lt;имя сервиса&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Fri, 11 Oct 2013 15:24:27 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Sensors:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</comments>		</item>
		<item>
			<title>solab:Установка и настройка pydap-сервера</title>
			<link>http://wiki.solab.rshu.ru/solab:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_pydap-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</link>
			<guid>http://wiki.solab.rshu.ru/solab:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_pydap-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /home/user/Projects/pydap/&lt;br /&gt;
virtualenv /home/user/Projects/pydap/&lt;br /&gt;
source /home/user/Projects/pydap/bin/activate&lt;br /&gt;
pip install numpy&lt;br /&gt;
sudo apt-get install libhdf5-serial-dev&lt;br /&gt;
sudo apt-get install libnetcdf-dev&lt;br /&gt;
pip install netcdf4==1.0.4 (last version does not work on ubuntu 12.04 LTS)&lt;br /&gt;
pip install gunicorn==0.15.0 (last version does not work correctly with .dds requests)&lt;br /&gt;
pip install pydap pydap.handlers.netcdf&lt;br /&gt;
&lt;br /&gt;
wget https://pypi.python.org/packages/source/p/pydap.handlers.compress/pydap.handlers.compress-0.1.1.tar.gz&lt;br /&gt;
tar -xvzf pydap.handlers.compress-0.1.1.tar.gz&lt;br /&gt;
cd pydap.handlers.compress-0.1.1&lt;br /&gt;
pip install paver&lt;br /&gt;
paver bdist_egg&lt;br /&gt;
cd dist&lt;br /&gt;
easy_install pydap.handlers.compress-0.1.1-py2.7.egg&lt;br /&gt;
&lt;br /&gt;
sudo apt-get build-dep matplotlib&lt;br /&gt;
pip install pydap.responses.wms&lt;br /&gt;
&lt;br /&gt;
cd /home/user/Projects/pydap/&lt;br /&gt;
paster create -t pydap server&lt;br /&gt;
nano server/server.ini&lt;br /&gt;
[server:main]&lt;br /&gt;
use = egg:Paste#http&lt;br /&gt;
# Change to 0.0.0.0 to make public&lt;br /&gt;
host = 127.0.0.1&lt;br /&gt;
port = 8001&lt;br /&gt;
&lt;br /&gt;
[app:main]&lt;br /&gt;
use = egg:pydap#server&lt;br /&gt;
root = /nfs/hyrax-cluster/data&lt;br /&gt;
templates = %(here)s/templates&lt;br /&gt;
x-wsgiorg.throw_errors = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/supervisor/conf.d/pydap.conf&lt;br /&gt;
[program:pydap]&lt;br /&gt;
#-w is number of workers for gunicorn, set it to ((num of CPUS)*2)+1&lt;br /&gt;
command=/home/user/Projects/pydap/bin/gunicorn_paster -b 127.0.0.1:3031 -w 17 /home/user/Projects/pydap/server/server.ini&lt;br /&gt;
directory=/home/user/Projects/pydap/server&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo supervisorctl reread&lt;br /&gt;
sudo supervisorctl update&lt;br /&gt;
sudo supervisorctl start pydap&lt;br /&gt;
&lt;br /&gt;
/etc/nginx/sites-available/pydap.conf&lt;br /&gt;
.....&lt;br /&gt;
    location / {&lt;br /&gt;
        location ~ ^/pydap/(?!\.static.*).*$ {&lt;br /&gt;
            rewrite ^/pydap(/.*)$ $1 break;&lt;br /&gt;
            proxy_pass http://127.0.0.1:3031$1;&lt;br /&gt;
            include proxy_params;&lt;br /&gt;
        }&lt;br /&gt;
        location /pydap/.static/ {&lt;br /&gt;
            autoindex    on;&lt;br /&gt;
            alias /home/user/Projects/pydap/server/data/.static/;&lt;br /&gt;
        }&lt;br /&gt;
        location /.static/ {&lt;br /&gt;
            autoindex    on;&lt;br /&gt;
            alias /home/user/Projects/pydap/server/data/.static/;&lt;br /&gt;
        }&lt;br /&gt;
        proxy_pass http://geo.solab.rshu.ru$request_uri;&lt;br /&gt;
    }&lt;br /&gt;
.....&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Wed, 09 Oct 2013 13:45:08 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Sensors:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_pydap-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</comments>		</item>
		<item>
			<title>solab:Установка и настройка pydap-сервера</title>
			<link>http://wiki.solab.rshu.ru/solab:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_pydap-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</link>
			<guid>http://wiki.solab.rshu.ru/solab:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_pydap-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;Created page with &amp;quot;&amp;lt;pre&amp;gt; mkdir /home/user/Projects/pydap/ virtualenv /home/user/Projects/pydap/ source /home/user/Projects/pydap/bin/activate pip install numpy sudo apt-get install libhdf5-serial-d…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /home/user/Projects/pydap/&lt;br /&gt;
virtualenv /home/user/Projects/pydap/&lt;br /&gt;
source /home/user/Projects/pydap/bin/activate&lt;br /&gt;
pip install numpy&lt;br /&gt;
sudo apt-get install libhdf5-serial-dev&lt;br /&gt;
sudo apt-get install libnetcdf-dev&lt;br /&gt;
pip install netcdf4==1.0.4 (last version does not work on ubuntu 12.04 LTS)&lt;br /&gt;
pip install gunicorn==0.15.0 (last version does not work correctly with .dds requests)&lt;br /&gt;
pip install pydap pydap.handlers.netcdf&lt;br /&gt;
&lt;br /&gt;
wget https://pypi.python.org/packages/source/p/pydap.handlers.compress/pydap.handlers.compress-0.1.1.tar.gz&lt;br /&gt;
tar -xvzf pydap.handlers.compress-0.1.1.tar.gz&lt;br /&gt;
cd pydap.handlers.compress-0.1.1&lt;br /&gt;
pip install paver&lt;br /&gt;
paver bdist_egg&lt;br /&gt;
cd dist&lt;br /&gt;
easy_install pydap.handlers.compress-0.1.1-py2.7.egg&lt;br /&gt;
&lt;br /&gt;
sudo apt-get build-dep matplotlib&lt;br /&gt;
pip install pydap.responses.wms&lt;br /&gt;
&lt;br /&gt;
cd /home/user/Projects/pydap/&lt;br /&gt;
paster create -t pydap server&lt;br /&gt;
nano server/server.ini&lt;br /&gt;
[server:main]&lt;br /&gt;
use = egg:Paste#http&lt;br /&gt;
# Change to 0.0.0.0 to make public&lt;br /&gt;
host = 127.0.0.1&lt;br /&gt;
port = 8001&lt;br /&gt;
&lt;br /&gt;
[app:main]&lt;br /&gt;
use = egg:pydap#server&lt;br /&gt;
root = /nfs/hyrax-cluster/data&lt;br /&gt;
templates = %(here)s/templates&lt;br /&gt;
x-wsgiorg.throw_errors = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo nano /etc/supervisor/conf.d/pydap.conf&lt;br /&gt;
[program:pydap]&lt;br /&gt;
command=/home/user/Projects/pydap/bin/gunicorn_paster -b 127.0.0.1:3031 -w 17 /home/user/Projects/pydap/server/server.ini&lt;br /&gt;
directory=/home/user/Projects/pydap/server&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
sudo supervisorctl reread&lt;br /&gt;
sudo supervisorctl update&lt;br /&gt;
sudo supervisorctl start pydap&lt;br /&gt;
&lt;br /&gt;
/etc/nginx/sites-available/pydap.conf&lt;br /&gt;
.....&lt;br /&gt;
    location / {&lt;br /&gt;
        location ~ ^/pydap/(?!\.static.*).*$ {&lt;br /&gt;
            rewrite ^/pydap(/.*)$ $1 break;&lt;br /&gt;
            proxy_pass http://127.0.0.1:3031$1;&lt;br /&gt;
            include proxy_params;&lt;br /&gt;
        }&lt;br /&gt;
        location /pydap/.static/ {&lt;br /&gt;
            autoindex    on;&lt;br /&gt;
            alias /home/user/Projects/pydap/server/data/.static/;&lt;br /&gt;
        }&lt;br /&gt;
        location /.static/ {&lt;br /&gt;
            autoindex    on;&lt;br /&gt;
            alias /home/user/Projects/pydap/server/data/.static/;&lt;br /&gt;
        }&lt;br /&gt;
        proxy_pass http://geo.solab.rshu.ru$request_uri;&lt;br /&gt;
    }&lt;br /&gt;
.....&lt;br /&gt;
sudo service nginx restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Wed, 09 Oct 2013 13:33:34 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Sensors:%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_pydap-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</comments>		</item>
		<item>
			<title>solab:Mainpage</title>
			<link>http://wiki.solab.rshu.ru/solab:Mainpage</link>
			<guid>http://wiki.solab.rshu.ru/solab:Mainpage</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;/* POSADA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Общее ==&lt;br /&gt;
[[solab:products|Products technical information]]&lt;br /&gt;
&lt;br /&gt;
[[solab:NewProduct|How to add a new product]]&lt;br /&gt;
&lt;br /&gt;
[[solab:infrastructure|SOLab Servers Infrastructure]]&lt;br /&gt;
&lt;br /&gt;
== Satin ==&lt;br /&gt;
[[satin:general|Общее описание проекта SATIN]]&lt;br /&gt;
&lt;br /&gt;
[[satin:technical|Технические заметки по SATIN]]&lt;br /&gt;
&lt;br /&gt;
== Naiad ==&lt;br /&gt;
&lt;br /&gt;
[[naiad:cluster_architecture|Naiad cluster architecture]]&lt;br /&gt;
&lt;br /&gt;
[[naiad:plugins|Plugins development (ru)]]&lt;br /&gt;
&lt;br /&gt;
[[naiad:request_parameters|Request Parameters]]&lt;br /&gt;
&lt;br /&gt;
[[naiad:add_a_product|Add a product]]&lt;br /&gt;
&lt;br /&gt;
[[naiad:opendap_handler|OPeNDAP handler development]]&lt;br /&gt;
&lt;br /&gt;
[[naiad:repository|Git repository]]&lt;br /&gt;
&lt;br /&gt;
[[naiad:palette|Palette change]]&lt;br /&gt;
&lt;br /&gt;
== POSADA == &lt;br /&gt;
[[solab:Общее описание|Общее описание и архитектура]]&lt;br /&gt;
&lt;br /&gt;
== pydap сервер == &lt;br /&gt;
[[solab:установка и настройка pydap-сервера]]&lt;br /&gt;
&lt;br /&gt;
== Заметки о сети ==&lt;br /&gt;
[[Принтеры]]&lt;br /&gt;
&lt;br /&gt;
== Developer's guide == &lt;br /&gt;
[[solab:Git usage|Git usage]]&lt;br /&gt;
&lt;br /&gt;
== Scientific part ==&lt;br /&gt;
&lt;br /&gt;
== Обработка данных == &lt;br /&gt;
[[CDO| CDO (Climate Data Operators)]]&lt;br /&gt;
&lt;br /&gt;
== Производство продуктов ==&lt;br /&gt;
[[SOLab product specification]]&lt;br /&gt;
&lt;br /&gt;
[[NetCDF format specification]]&lt;/div&gt;</description>
			<pubDate>Mon, 07 Oct 2013 14:39:05 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Sensors:Mainpage</comments>		</item>
		<item>
			<title>solab:Общее описание</title>
			<link>http://wiki.solab.rshu.ru/solab:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</link>
			<guid>http://wiki.solab.rshu.ru/solab:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;/* Конфигурационные файлы supervisorctl: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Общее описание =&lt;br /&gt;
'''POSADA''' — '''P'''yth'''O'''n '''SA'''tellite '''D'''ata '''A'''pi processing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На данный момент проект POSADA предназначен для генерации квиклуков в будущем планируется полностью заменить NAIAD и реализовать экстракцию данных. &lt;br /&gt;
&lt;br /&gt;
== Архитектура ==&lt;br /&gt;
POSADA является веб приложением написанным на веб-фреймворке [https://www.djangoproject.com/  Django]. &lt;br /&gt;
&lt;br /&gt;
Для реализации очереди задач используется [http://www.celeryproject.org/ Celery] c [http://www.rabbitmq.com/ RabbitMQ] в качестве брокера. &lt;br /&gt;
&lt;br /&gt;
Для реализации API с REST интерфейсом используется [http://django-tastypie.readthedocs.org/en/latest/ django-tastypie]&lt;br /&gt;
&lt;br /&gt;
[[File:posada_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
Основным приложение в POSADA является &amp;quot;Core&amp;quot;. В нем реализованы 3 модели ''Products'', ''Projections'' и ''Request''.&lt;br /&gt;
С моделями можно ознакомиться в [https://bitbucket.org/nonamenix/posada/src/ репозитории].&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
=== Добавление задачи ===&lt;br /&gt;
&lt;br /&gt;
Пользователь посредством админки или API создает новую задачу. С методами API можно ознакомиться с его же помощью [http://posada.solab.rshu.ru/api/v1/?format=json http://posada.solab.rshu.ru/api/v1/?format=json]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var data = JSON.stringify({&lt;br /&gt;
   &amp;quot;opendap_link&amp;quot;:&amp;quot; http://opendap.solab.rshu.ru:8080/opendap/allData/SOLAB_AMSRE_L2_NN&lt;br /&gt;
      /2002/07/SOLAB_AMSRE_L2_NN_20020701_000435_20020701_005434_174_A_v1.nc.html&amp;quot;,&lt;br /&gt;
   &amp;quot;product_name&amp;quot;: &amp;quot;SOLAB_AMSRE_L2_NN&amp;quot;,&lt;br /&gt;
   &amp;quot;projection_name&amp;quot;: &amp;quot;epsg_4326&amp;quot;,&lt;br /&gt;
   &amp;quot;ql_height&amp;quot;: 1024, &amp;quot;ql_width&amp;quot;: 1024, &amp;quot;ql_format&amp;quot;: &amp;quot;png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$.ajax({&lt;br /&gt;
   url: 'http://localhost:8000/api/v1/request/',&lt;br /&gt;
   type: 'POST',&lt;br /&gt;
   contentType: 'application/json',&lt;br /&gt;
   data: data,&lt;br /&gt;
   dataType: 'json',&lt;br /&gt;
   processData: false,&lt;br /&gt;
   success: function(data) {console.log(data)}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее при сохранении для текущей задачи создается асинхронный celery-task, который попадает в очередь выполнения задач.&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг ===&lt;br /&gt;
&lt;br /&gt;
Посмотреть можно в админке в разделе '''djcelery / tasks''' или '''flower''', который доступен по порту 5555 ([http://posada.solab.rshu.ru:5555 flower]).&lt;br /&gt;
&lt;br /&gt;
=== Callback === &lt;br /&gt;
&lt;br /&gt;
Если задача выполнена (успешно или с ошибкой), то срабатывает вызов адреса прописанного в соответствующем поле модели ''Request''.&lt;br /&gt;
&lt;br /&gt;
== Установка == &lt;br /&gt;
Настройка Django + nginx: [http://habrahabr.ru/post/159575/ http://habrahabr.ru/post/159575/]&lt;br /&gt;
&lt;br /&gt;
Репозиторий: [https://bolkhovsky@bitbucket.org/bolkhovsky/posada https://bolkhovsky@bitbucket.org/bolkhovsky/posada ]&lt;br /&gt;
&lt;br /&gt;
Об установке связки Django + Celery + django-celery + RabbitMQ: [http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html]&lt;br /&gt;
&lt;br /&gt;
Асинхронные задания в Django c помощью Celery: http://habrahabr.ru/post/123902/&lt;br /&gt;
&lt;br /&gt;
=== Запуск ===&lt;br /&gt;
&lt;br /&gt;
rabbitmq-plugins enable rabbitmq_management&lt;br /&gt;
&lt;br /&gt;
sudo rabbitmq-server&lt;br /&gt;
&lt;br /&gt;
python manage.py celeryd -E -l INFO -v 1 -f logs/celeryd.log&lt;br /&gt;
&lt;br /&gt;
celery flower --broker=amqp://posada:posada@localhost:5672//&lt;br /&gt;
&lt;br /&gt;
python manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=pids/gunicorn.pid --log-file logs/gunicorn.log&lt;br /&gt;
&lt;br /&gt;
=== Конфигурационные файлы supervisorctl: ===&lt;br /&gt;
чтобы нужные процессы запускались в фоне&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/celery.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:celery]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py celeryd -B&lt;br /&gt;
directory=/home/user/Projects/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/posada.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:posada]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=/home/user/Projects/posada/pids/gunicorn.pid --log-file /home/user/Projects/posada/logs/gunicorn.log&lt;br /&gt;
directory=/home/user/Projects/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/flower.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:flower]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py celery flower&lt;br /&gt;
process_name=%(program_name)s&lt;br /&gt;
numprocs=1&lt;br /&gt;
numprocs_start=0&lt;br /&gt;
autostart=false&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=1&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
redirect_stderr=false&lt;br /&gt;
stdout_logfile=AUTO&lt;br /&gt;
stdout_logfile_maxbytes=50MB&lt;br /&gt;
stdout_logfile_backups=10&lt;br /&gt;
stdout_capture_maxbytes=0&lt;br /&gt;
stdout_events_enabled=false&lt;br /&gt;
stderr_logfile=AUTO&lt;br /&gt;
stderr_logfile_maxbytes=50MB&lt;br /&gt;
stderr_logfile_backups=10&lt;br /&gt;
stderr_capture_maxbytes=0&lt;br /&gt;
stderr_events_enabled=false&lt;br /&gt;
directory=/home/user/Projects/posada/posada/&lt;br /&gt;
serverurl=AUTO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
запускать и останавливать сервисы по отдельности можно так:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo supervisorctl start celery&lt;br /&gt;
&lt;br /&gt;
sudo supervisorctl stop celery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
при изменении конфиг-файла запускаем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo supervisorctl reread&lt;br /&gt;
sudo supervisorctl update&lt;br /&gt;
sudo supervisorctl start &amp;lt;имя сервиса&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Mon, 07 Oct 2013 10:18:13 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Sensors:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</comments>		</item>
		<item>
			<title>solab:Общее описание</title>
			<link>http://wiki.solab.rshu.ru/solab:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</link>
			<guid>http://wiki.solab.rshu.ru/solab:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;/* Конфигурационные файлы supervisorctl: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Общее описание =&lt;br /&gt;
'''POSADA''' — '''P'''yth'''O'''n '''SA'''tellite '''D'''ata '''A'''pi processing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На данный момент проект POSADA предназначен для генерации квиклуков в будущем планируется полностью заменить NAIAD и реализовать экстракцию данных. &lt;br /&gt;
&lt;br /&gt;
== Архитектура ==&lt;br /&gt;
POSADA является веб приложением написанным на веб-фреймворке [https://www.djangoproject.com/  Django]. &lt;br /&gt;
&lt;br /&gt;
Для реализации очереди задач используется [http://www.celeryproject.org/ Celery] c [http://www.rabbitmq.com/ RabbitMQ] в качестве брокера. &lt;br /&gt;
&lt;br /&gt;
Для реализации API с REST интерфейсом используется [http://django-tastypie.readthedocs.org/en/latest/ django-tastypie]&lt;br /&gt;
&lt;br /&gt;
[[File:posada_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
Основным приложение в POSADA является &amp;quot;Core&amp;quot;. В нем реализованы 3 модели ''Products'', ''Projections'' и ''Request''.&lt;br /&gt;
С моделями можно ознакомиться в [https://bitbucket.org/nonamenix/posada/src/ репозитории].&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
=== Добавление задачи ===&lt;br /&gt;
&lt;br /&gt;
Пользователь посредством админки или API создает новую задачу. С методами API можно ознакомиться с его же помощью [http://posada.solab.rshu.ru/api/v1/?format=json http://posada.solab.rshu.ru/api/v1/?format=json]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var data = JSON.stringify({&lt;br /&gt;
   &amp;quot;opendap_link&amp;quot;:&amp;quot; http://opendap.solab.rshu.ru:8080/opendap/allData/SOLAB_AMSRE_L2_NN&lt;br /&gt;
      /2002/07/SOLAB_AMSRE_L2_NN_20020701_000435_20020701_005434_174_A_v1.nc.html&amp;quot;,&lt;br /&gt;
   &amp;quot;product_name&amp;quot;: &amp;quot;SOLAB_AMSRE_L2_NN&amp;quot;,&lt;br /&gt;
   &amp;quot;projection_name&amp;quot;: &amp;quot;epsg_4326&amp;quot;,&lt;br /&gt;
   &amp;quot;ql_height&amp;quot;: 1024, &amp;quot;ql_width&amp;quot;: 1024, &amp;quot;ql_format&amp;quot;: &amp;quot;png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$.ajax({&lt;br /&gt;
   url: 'http://localhost:8000/api/v1/request/',&lt;br /&gt;
   type: 'POST',&lt;br /&gt;
   contentType: 'application/json',&lt;br /&gt;
   data: data,&lt;br /&gt;
   dataType: 'json',&lt;br /&gt;
   processData: false,&lt;br /&gt;
   success: function(data) {console.log(data)}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее при сохранении для текущей задачи создается асинхронный celery-task, который попадает в очередь выполнения задач.&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг ===&lt;br /&gt;
&lt;br /&gt;
Посмотреть можно в админке в разделе '''djcelery / tasks''' или '''flower''', который доступен по порту 5555 ([http://posada.solab.rshu.ru:5555 flower]).&lt;br /&gt;
&lt;br /&gt;
=== Callback === &lt;br /&gt;
&lt;br /&gt;
Если задача выполнена (успешно или с ошибкой), то срабатывает вызов адреса прописанного в соответствующем поле модели ''Request''.&lt;br /&gt;
&lt;br /&gt;
== Установка == &lt;br /&gt;
Настройка Django + nginx: [http://habrahabr.ru/post/159575/ http://habrahabr.ru/post/159575/]&lt;br /&gt;
&lt;br /&gt;
Репозиторий: [https://bolkhovsky@bitbucket.org/bolkhovsky/posada https://bolkhovsky@bitbucket.org/bolkhovsky/posada ]&lt;br /&gt;
&lt;br /&gt;
Об установке связки Django + Celery + django-celery + RabbitMQ: [http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html]&lt;br /&gt;
&lt;br /&gt;
Асинхронные задания в Django c помощью Celery: http://habrahabr.ru/post/123902/&lt;br /&gt;
&lt;br /&gt;
=== Запуск ===&lt;br /&gt;
&lt;br /&gt;
rabbitmq-plugins enable rabbitmq_management&lt;br /&gt;
&lt;br /&gt;
sudo rabbitmq-server&lt;br /&gt;
&lt;br /&gt;
python manage.py celeryd -E -l INFO -v 1 -f logs/celeryd.log&lt;br /&gt;
&lt;br /&gt;
celery flower --broker=amqp://posada:posada@localhost:5672//&lt;br /&gt;
&lt;br /&gt;
python manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=pids/gunicorn.pid --log-file logs/gunicorn.log&lt;br /&gt;
&lt;br /&gt;
=== Конфигурационные файлы supervisorctl: ===&lt;br /&gt;
чтобы нужные процессы запускались в фоне&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/celery.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:celery]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py celeryd -B&lt;br /&gt;
directory=/home/user/Projects/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/posada.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:posada]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=/home/user/Projects/posada/pids/gunicorn.pid --log-file /home/user/Projects/posada/logs/$&lt;br /&gt;
directory=/home/user/Projects/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/flower.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[program:flower]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py celery flower&lt;br /&gt;
process_name=%(program_name)s&lt;br /&gt;
numprocs=1&lt;br /&gt;
numprocs_start=0&lt;br /&gt;
autostart=false&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=1&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
redirect_stderr=false&lt;br /&gt;
stdout_logfile=AUTO&lt;br /&gt;
stdout_logfile_maxbytes=50MB&lt;br /&gt;
stdout_logfile_backups=10&lt;br /&gt;
stdout_capture_maxbytes=0&lt;br /&gt;
stdout_events_enabled=false&lt;br /&gt;
stderr_logfile=AUTO&lt;br /&gt;
stderr_logfile_maxbytes=50MB&lt;br /&gt;
stderr_logfile_backups=10&lt;br /&gt;
stderr_capture_maxbytes=0&lt;br /&gt;
stderr_events_enabled=false&lt;br /&gt;
directory=/home/user/Projects/posada/posada/&lt;br /&gt;
serverurl=AUTO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
запускать и останавливать сервисы по отдельности можно так:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo supervisorctl start celery&lt;br /&gt;
&lt;br /&gt;
sudo supervisorctl stop celery&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
при изменении конфиг-файла запускаем:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo supervisorctl reread&lt;br /&gt;
sudo supervisorctl update&lt;br /&gt;
sudo supervisorctl start &amp;lt;имя сервиса&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</description>
			<pubDate>Mon, 07 Oct 2013 10:07:57 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Sensors:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</comments>		</item>
		<item>
			<title>solab:Общее описание</title>
			<link>http://wiki.solab.rshu.ru/solab:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</link>
			<guid>http://wiki.solab.rshu.ru/solab:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</guid>
			<description>&lt;p&gt;Daniel:&amp;#32;/* Запуск */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Общее описание =&lt;br /&gt;
'''POSADA''' — '''P'''yth'''O'''n '''SA'''tellite '''D'''ata '''A'''pi processing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На данный момент проект POSADA предназначен для генерации квиклуков в будущем планируется полностью заменить NAIAD и реализовать экстракцию данных. &lt;br /&gt;
&lt;br /&gt;
== Архитектура ==&lt;br /&gt;
POSADA является веб приложением написанным на веб-фреймворке [https://www.djangoproject.com/  Django]. &lt;br /&gt;
&lt;br /&gt;
Для реализации очереди задач используется [http://www.celeryproject.org/ Celery] c [http://www.rabbitmq.com/ RabbitMQ] в качестве брокера. &lt;br /&gt;
&lt;br /&gt;
Для реализации API с REST интерфейсом используется [http://django-tastypie.readthedocs.org/en/latest/ django-tastypie]&lt;br /&gt;
&lt;br /&gt;
[[File:posada_architecture.png]]&lt;br /&gt;
&lt;br /&gt;
Основным приложение в POSADA является &amp;quot;Core&amp;quot;. В нем реализованы 3 модели ''Products'', ''Projections'' и ''Request''.&lt;br /&gt;
С моделями можно ознакомиться в [https://bitbucket.org/nonamenix/posada/src/ репозитории].&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
=== Добавление задачи ===&lt;br /&gt;
&lt;br /&gt;
Пользователь посредством админки или API создает новую задачу. С методами API можно ознакомиться с его же помощью [http://posada.solab.rshu.ru/api/v1/?format=json http://posada.solab.rshu.ru/api/v1/?format=json]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var data = JSON.stringify({&lt;br /&gt;
   &amp;quot;opendap_link&amp;quot;:&amp;quot; http://opendap.solab.rshu.ru:8080/opendap/allData/SOLAB_AMSRE_L2_NN&lt;br /&gt;
      /2002/07/SOLAB_AMSRE_L2_NN_20020701_000435_20020701_005434_174_A_v1.nc.html&amp;quot;,&lt;br /&gt;
   &amp;quot;product_name&amp;quot;: &amp;quot;SOLAB_AMSRE_L2_NN&amp;quot;,&lt;br /&gt;
   &amp;quot;projection_name&amp;quot;: &amp;quot;epsg_4326&amp;quot;,&lt;br /&gt;
   &amp;quot;ql_height&amp;quot;: 1024, &amp;quot;ql_width&amp;quot;: 1024, &amp;quot;ql_format&amp;quot;: &amp;quot;png&amp;quot;&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$.ajax({&lt;br /&gt;
   url: 'http://localhost:8000/api/v1/request/',&lt;br /&gt;
   type: 'POST',&lt;br /&gt;
   contentType: 'application/json',&lt;br /&gt;
   data: data,&lt;br /&gt;
   dataType: 'json',&lt;br /&gt;
   processData: false,&lt;br /&gt;
   success: function(data) {console.log(data)}&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее при сохранении для текущей задачи создается асинхронный celery-task, который попадает в очередь выполнения задач.&lt;br /&gt;
&lt;br /&gt;
=== Мониторинг ===&lt;br /&gt;
&lt;br /&gt;
Посмотреть можно в админке в разделе '''djcelery / tasks''' или '''flower''', который доступен по порту 5555 ([http://posada.solab.rshu.ru:5555 flower]).&lt;br /&gt;
&lt;br /&gt;
=== Callback === &lt;br /&gt;
&lt;br /&gt;
Если задача выполнена (успешно или с ошибкой), то срабатывает вызов адреса прописанного в соответствующем поле модели ''Request''.&lt;br /&gt;
&lt;br /&gt;
== Установка == &lt;br /&gt;
Настройка Django + nginx: [http://habrahabr.ru/post/159575/ http://habrahabr.ru/post/159575/]&lt;br /&gt;
&lt;br /&gt;
Репозиторий: [https://bolkhovsky@bitbucket.org/bolkhovsky/posada https://bolkhovsky@bitbucket.org/bolkhovsky/posada ]&lt;br /&gt;
&lt;br /&gt;
Об установке связки Django + Celery + django-celery + RabbitMQ: [http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html]&lt;br /&gt;
&lt;br /&gt;
Асинхронные задания в Django c помощью Celery: http://habrahabr.ru/post/123902/&lt;br /&gt;
&lt;br /&gt;
=== Запуск ===&lt;br /&gt;
&lt;br /&gt;
rabbitmq-plugins enable rabbitmq_management&lt;br /&gt;
&lt;br /&gt;
sudo rabbitmq-server&lt;br /&gt;
&lt;br /&gt;
python manage.py celeryd -E -l INFO -v 1 -f logs/celeryd.log&lt;br /&gt;
&lt;br /&gt;
celery flower --broker=amqp://posada:posada@localhost:5672//&lt;br /&gt;
&lt;br /&gt;
python manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=pids/gunicorn.pid --log-file logs/gunicorn.log&lt;br /&gt;
&lt;br /&gt;
=== Конфигурационные файлы supervisorctl: ===&lt;br /&gt;
чтобы нужные процессы запускались в фоне&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/celery.conf:&lt;br /&gt;
[program:celery]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py celeryd -B&lt;br /&gt;
directory=/home/user/Projects/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/posada.conf:&lt;br /&gt;
[program:posada]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py run_gunicorn --bind=localhost:12345 --workers=3 --pid=/home/user/Projects/posada/pids/gunicorn.pid --log-file /home/user/Projects/posada/logs/$&lt;br /&gt;
directory=/home/user/Projects/posada/posada&lt;br /&gt;
umask=022&lt;br /&gt;
autostart=true&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=10&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
&lt;br /&gt;
/etc/supervisor/conf.d/flower.conf:&lt;br /&gt;
[program:flower]&lt;br /&gt;
command=/home/user/Projects/posada/env/bin/python /home/user/Projects/posada/posada/manage.py celery flower&lt;br /&gt;
process_name=%(program_name)s&lt;br /&gt;
numprocs=1&lt;br /&gt;
numprocs_start=0&lt;br /&gt;
autostart=false&lt;br /&gt;
autorestart=true&lt;br /&gt;
startsecs=1&lt;br /&gt;
startretries=3&lt;br /&gt;
exitcodes=0,2&lt;br /&gt;
stopsignal=TERM&lt;br /&gt;
stopwaitsecs=10&lt;br /&gt;
user=user&lt;br /&gt;
redirect_stderr=false&lt;br /&gt;
stdout_logfile=AUTO&lt;br /&gt;
stdout_logfile_maxbytes=50MB&lt;br /&gt;
stdout_logfile_backups=10&lt;br /&gt;
stdout_capture_maxbytes=0&lt;br /&gt;
stdout_events_enabled=false&lt;br /&gt;
stderr_logfile=AUTO&lt;br /&gt;
stderr_logfile_maxbytes=50MB&lt;br /&gt;
stderr_logfile_backups=10&lt;br /&gt;
stderr_capture_maxbytes=0&lt;br /&gt;
stderr_events_enabled=false&lt;br /&gt;
directory=/home/user/Projects/posada/posada/&lt;br /&gt;
serverurl=AUTO&lt;br /&gt;
&lt;br /&gt;
запускать и останавливать сервисы по отдельности можно так:&lt;br /&gt;
sudo supervisorctl start celery&lt;br /&gt;
sudo supervisorctl stop celery&lt;br /&gt;
&lt;br /&gt;
при изменении конфиг-файла запускаем:&lt;br /&gt;
sudo supervisorctl reread&lt;br /&gt;
sudo supervisorctl update&lt;br /&gt;
sudo supervisorctl start &amp;lt;имя сервиса&amp;gt;&lt;/div&gt;</description>
			<pubDate>Mon, 07 Oct 2013 10:05:52 GMT</pubDate>			<dc:creator>Daniel</dc:creator>			<comments>http://wiki.solab.rshu.ru/Sensors:%D0%9E%D0%B1%D1%89%D0%B5%D0%B5_%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5</comments>		</item>
	</channel>
</rss>