Автор: admin

  • Запускаем Django на uwsgi + nginx

    Число проектов на сервере росло, а оперативная память не добавлялось так получилось что старый метод на большом числе проектов поедает много оперативной памяти. и вот пришло время разобраться с uwsgi — это WSGI сервер с некоторыми фенями, сам умеет пере запускаться когда обновляется код проекта (как в devserver) умеет сам убивать потомком если они начинают «тупить».

    Теперь по порядку

    aptitude install python-pip build-essential python-dev libxml2-dev
    easy_install install uwsgiCode language: Bash (bash)

    Для виртуал хоста используем примерно вот такой конфг, найденный на просторах тырнета

    server {
        listen        80;
        listen        443;
    
        # указываем свой домен
        server_name   odmin4eg.org www.odmin4eg.org;
    
        # здесь мы задаем абсолютные пути к логам.
        # как я упоминал уже выше, каталог с логами у меня хранится в каталоге
        # с проектом, поэтому пути следующие:
        access_log    /home/odmin4eg.org/logs/nginx_access.log;
        error_log     /home/odmin4eg.org/logs/nginx_error.log;
    
        # ниже указывается каталог с django-проектом. как я указывал выше,
        # я храню его в подкаталоге www, поэтому путь такой:
        root          /home/odmin4eg.org/www/;
    
        location /
        {
            # ниже надо указать путь к socket'у, при помощи которого
            # nginx и uwsgi будут сообщаться.
            # в данном случае путь это '/var/tmp/odmin4eg_uwsgi.sock'
            uwsgi_pass unix:///var/tmp/odmin4eg_uwsgi.sock;
            include uwsgi_params;
    
            # 8 -- число буфферов
            # 128k -- размер буфера
            # фактически, мы сможем передать от Django в nginx только 1 мб информации.
            # играйтесь с этим значением при поднятии своего проекта
            uwsgi_buffers 8 128k;
        }
    
        # ниже описывается директория со статическими файлами проекта (css,js,etc)
        # /static/ -- это STATIC_URL, который вы должны посмотреть в 
        # в settings.py своего django проекта.
        location /static/ {
            # а вот здесь указываем абсолютный путь к директории со
            # статическими файлами
            alias /home/odmin4eg.org/www/static/;
            expires 30d;
        }
        # Это уже у кого как статика для админки
        location /media_admin {
            alias /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media;
            }
    
    }Code language: Bash (bash)

    Дальше конфигурируем uwsgi — создаём файл
    /home/odmin4eg.org/www/uwsgi.yaml

    uwsgi:
        # указываем socket, при помощи которого будет происходить
        # взаимодействие между nginx и uwsgi
        socket: /var/tmp/odmin4eg_uwsgi.sock
        # здесь указываем путь к django-проекту
        pythonpath: /home/odmin4eg.org/www
        # устанавливаем переменную окружения, которая хранит имя settings файла
        env: DJANGO_SETTINGS_MODULE=settings
        # это имя модуля, который будет запускаться на выполнение
        # в такой постановке, будет запускаться wsgi.py из директории
        # указанной выше в 'pythonpath'
        module: wsgi
        # путь к лог файлу
        daemonize: /home/odmin4eg.org/logs/uwsgi.log
        # прочие настройки, значения который можно посмотреть на сайте uWSGI
        max-requests: 5000
        buffer-size: 32768
        harakiri: 30
        reload-mercy: 8
        master: 1
        no-orphans: 1
        # если выполнить команду "touch <имя ниже указанного файла>",
        # то произойдет перезапуск uwsgi демона.
        touch-reload: /home/odmin4eg.org/uwsgiCode language: Bash (bash)

    ну и создаём файлик который будем пинать для перезагрузки демона

    touch /home/odmin4eg.org/uwsgiCode language: Bash (bash)

    ну и последнее осталось написать wsgi.py и положить его в каталог указанный в pythonpath (i.g., в /home/odmin4eg.org/www). wsgi.py выглядит до безумия просто:

    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()Code language: Python (python)

    запускаем

    service nginx restart
    uwsgi -y /home/odmin4eg.org/conf/uwsgi.yamlCode language: Bash (bash)

    У меня всё поехало после этого.
    по мативам kalnitsky.org

  • WARNING: You are launching IDE using OpenJDK Java runtime.

    PyCharm ругается при запуске вот так

    developer-HP bin # ./pycharm.sh
    OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.1)
    OpenJDK Client VM (build 20.0-b11, mixed mode, sharing)
    WARNING: You are launching IDE using OpenJDK Java runtime.
    
             THIS IS STRICTLY UNSUPPORTED DUE TO KNOWN PERFORMANCE AND GRAPHICS PROBLEMS!
    
    NOTE:    If you have both Oracle (Sun) JDK and OpenJDK installed
             please validate either PYCHARM_JDK, JDK_HOME, or JAVA_HOME environment variable points to valid Oracle (Sun) JDK installation.
             See http://ow.ly/6TuKQ for more info on switching default JDK
    
    Press Enter to continue.Code language: Bash (bash)

    Решается проблема просто
    Ставим JRE

    apt-get install sun-java6-jdk sun-java6-jreCode language: Bash (bash)

    и выбираем дефолтную жаву

    $ sudo update-alternatives --config java
    There are 2 choices for the alternative java (providing /usr/bin/java).
    
      Selection    Path                                      Priority   Status
    ------------------------------------------------------------
    * 0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      auto mode
      1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
      2            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manual modeCode language: Bash (bash)

    Выбираем 2 и жмём энтер.

    profit

  • WordPress + nginx + cache (Настройка nginx + кэширование + WP)

    У nginx с версии 0.7(чёта-там) появилась функция кэширования ответов от бэкэнда.
    штука крайне полезная, в условиях высоких нагрузок, но настроить на корректную работу для WP оказалось не так просто.

    Но попробуем
    Создаём каталог где будет храниться кэш, назначаем права работы с ним (у меня nginx работает под www-data)

    mkdir /var/cache/nginx
    chown www-data:www-data /var/cache/nginx/Code language: Bash (bash)

    в файле nginx.conf
    пишем

    ## Создаем кеш зону pagecache (память под ключи в 16Мб) с настройками:
    # inactive: xранить кеш 1 день (если к нему не было обращений)
    # max_size: максимальный размер кеш данные 256Мб
    proxy_cache_path /var/cache/nginx levels=2 keys_zone=pagecache:16m inactive=1d max_size=256m;Code language: Bash (bash)

    теперь для нужного нам Виртуал хоста в диррективе SERVER прописываем, привожу полный конфиг своего vhost

    server {
    listen 80;
    server_name www.krasfun.ru krasfun.ru krasfan.ru www.krasfan.ru;
    
    #access_log /var/log/nginx/krasfun/access2.log;
    access_log off;
    error_log  /var/log/nginx/krasfun/error3.log  error;
    
    
    #client_max_body_size 300m
    # Сетевое ускорение
    tcp_nopush on;
    tcp_nodelay on;
    
    #30 одновременных коннектов
    #limit_conn one 30;
    
    index index.php;
    
    if ($http_cookie ~* «comment_author_|wordpress_(?!test_cookie)|wp-postpass_» ) {
    set $do_not_cache 1;
    }
    
    root  /var/www/krasfun;
    
    fastcgi_cache_bypass $do_not_cache;
    fastcgi_no_cache $do_not_cache;
    fastcgi_pass_header Cookie;
    fastcgi_cache pagecache;
    fastcgi_cache_key $request_method|$host|$request_uri;
    fastcgi_cache_valid 301 8h;
    fastcgi_cache_valid 404 1h;
    fastcgi_cache_valid 200 15m;
    
    set $Mybackend unix:/tmp/php5-fpm.sock;
    
    location / {
    try_files $uri $uri/ @wordpress;
    }
    # Это чтоб Админка, логинизация, и регистрация не кэшировались
    location ~ ^/(wp-admin/.*\.php|wp-login\.php|wp-register\.php|(feed|comment/feed)(/.*)?)$ {
    try_files $uri @wordpress;
    set $do_not_cache 1;
    fastcgi_cache_bypass 1;
    fastcgi_no_cache 1;
    fastcgi_pass $Mybackend;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include /etc/nginx/fastcgi_params;
    }
    
    location ~ \.php$ {
    try_files $uri @wordpress;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass $Mybackend;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    if ($do_not_cache != «1″) {
    add_header Vary Cookie;
    }
    }
    
    location @wordpress {
    fastcgi_pass $Mybackend;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    include /etc/nginx/fastcgi_params;
    fastcgi_cache pagecache;
    fastcgi_param SCRIPT_NAME /index.php;
    if ($do_not_cache != "1") {
    add_header Vary Cookie;
    }
    }
    
    #Static files location
    location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|html|flv|mp3)$ {
    root /var/www/krasfun; }
    
    }Code language: Bash (bash)

    проверяем nginx -t и перезапускам nginx

    тыкаем по сайту и потом смотри что у нас появилось в /var/cache/nginx

    Прирост производительности? да конечно же есть.

    тест номер1

    # ab -n 1000 -c 5 http://www.krasfun.ru/
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking www.krasfun.ru (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Completed 600 requests
    Completed 700 requests
    Completed 800 requests
    Completed 900 requests
    Completed 1000 requests
    Finished 1000 requests
    
    
    Server Software:        nginx/0.8.53
    Server Hostname:        www.krasfun.ru
    Server Port:            80
    
    Document Path:          /
    Document Length:        37725 bytes
    
    Concurrency Level:      5
    Time taken for tests:   3.577 seconds
    Complete requests:      1000
    Failed requests:        0
    Write errors:           0
    Total transferred:      37972000 bytes
    HTML transferred:       37725000 bytes
    Requests per second:    279.54 [#/sec] (mean)
    Time per request:       17.887 [ms] (mean)
    Time per request:       3.577 [ms] (mean, across all concurrent requests)
    Transfer rate:          10365.83 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    2   1.0      2       6
    Processing:     7   16  46.0     14    1038
    Waiting:        1    3   2.1      2      26
    Total:          9   18  45.9     17    1039
    
    Percentage of the requests served within a certain time (ms)
      50%     17
      66%     17
      75%     18
      80%     18
      90%     19
      95%     21
      98%     28
      99%     31
     100%   1039 (longest request)Code language: Bash (bash)

    Без кэширования этот тест провалился куда-то

  • PECL memcache extension (debian)

    Для работы плагина кэширования в memcached к WordPress

    написано поставить PECL memcache extension
    ну чтож в тырнетах фигня всякая написана

    на самом деле нам нужно 2 комманды

    apt-get install memcached php5-dev php-pear
    pear install -f pecl/memcacheCode language: Bash (bash)

    и в php.ini добавить
    extension=memcache.so

  • Сколько можно заработать на sape и linkmaniya

    Выкладываю свой маленький отчёт, маленький юбилей

    И так, одним июльским вечером, ко мне в Асю постучался некий человек, и предложил выкупить у меня рекламу с сайта.. но в ходе обсуждения мне стало ясно, что это очередная биржа ссылок, только работает она по другому принципу, а не как в sape

    В общем поддался я соблазну влезть в ещё одну биржу ссылок, с условием что я не буду убирать sape, они согласились…

    в чём отличия их биржи?

    да просто у меня есть площадка я её добавляю на сайт размещаю код на сайте и всё, ни цены ничего я не регулирую, просто получаю фиксированный доход.

    для моего сайта это получилось 466р. в сутки, неплохо да после 150-200 саповских рублей?

    ну вот прошло 3 месяца с момента старта и деньги потикали уже полноценные, по 100% тарифу.

    Вот так выглядит кабинет на сайте, вот и весь функционал сайта, без всяких там лишних удобств

    запоминаем цифру с картинки
    37986.96 — доход с линкмании
    по sape всё немного похуже, число купленных ссылок упало, доход упал со 150 до 120-130р в сутки.

    запоминаем циферку с сапы
    64 160,87 — сапа

    37986.96 + 64 160,87 = 102 146
    Неплохо для пассивного дохода верно?

    на скриншотах сайт я не замазывал, вот такой он у меня 😉

    PS и ещё, вы наверное заметили что ссылки на сапу у меня пригласительные, ведь сапа чуть чуть доплачивает за новых приведённых пользователей

    Партнерское вознаграждение составляет 2,5% от оборота привлеченного пользователя (т.е. и от сделок покупки и от сделок продажи).

    и показываю вам статистику, она смешная, но ведь бложик у меня то не сеошный и не манимейкерский, а админский и читатель тут может быть совершенно случайный, но всёже.
    100р. мне принёс какой-то господин 😉

    Всем спасибо 😉