RelaxДом

RelaxДом (https://forum.relaxdom.net/index.php)
-   Gentoo Linux (https://forum.relaxdom.net/forumdisplay.php?f=380)
-   -   Настраиваем высокопроизводительный Web Сервер на базе Nginx + php-fpm (https://forum.relaxdom.net/showthread.php?t=53018)

BIT 06.04.2009 23:44

Настраиваем высокопроизводительный Web Сервер на базе Nginx + php-fpm
 
Вложений: 1
Документацию пишу сам, по личному опыту :)
  1. Работаем только со стабильными продуктами, поэтому убедимся что в файле /etc/make.conf прописаны стабильные ключи.
    Код:

    ACCEPT_KEYWORDS="x86"
  2. Обновим portage
    Код:

    emerge --sync
  3. Дабы использовать максимальную производительность нужно подогнать CFLAGS и CXXFLAGS.
    Для этого курим [Ссылка заблокирована: Зарегистрируйтесь!]
    под свой процессор.
    Мои настрйоки к примеру:
    Код:

    CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer -mmmx -msse3 -mfpmath=sse"
    CXXFLAGS="${CFLAGS}"

  4. Настройки готовы, закидываем USE Флаги для Nginx
    Код:

    echo "www-servers/nginx  fastcgi flv pcre perl status zlib -addition -debug -imap -ssl -sub -webdav" >> /etc/portage/package.use
    Главное не забыть fastcgi.
  5. Собираем
    Код:

    emerge nginx
  6. Если собрался без ошибок, начинаем править конфиг(nano /etc/nginx/nginx.conf):
    Код:

    user nginx nginx;

    worker_processes 100;
    # рекомендуют делать по количеству ядер
    # но время отклика реально уменьшяется если запутить побольше воркеров,
    # т.к. у меня памяти много сделал сразу 100
    worker_priority -1;
    # приоретет воркеров, сделал повыше
    # чтобы из за медленных скриптов и корявых мускульных запросов статика отдавалась без лагов

    worker_rlimit_nofile 51200;

    #пид файл
    pid /var/run/nginx.pid;

    events {
      worker_connections  6096;
      use epoll;
    }

    http {
        #подцепляем mime типы
        include            /etc/nginx/mime.types;
        default_type        application/octet-stream;


        #Директива разрешает или запрещает выдавать версию nginx'а в сообщениях об ошибках и в строке заголовка ответа "Server".
        server_tokens off;
       
        log_format main  '($gzip_ratio)$bytes_sent|$remote_user [$time_local] '
                        '"$request" $status ';

        log_format download  '$remote_addr - $remote_user [$time_local] '
                            '"$request" $status $bytes_sent '
                            '"$http_referer" "$http_user_agent" '
                            '"$http_range" "$sent_http_content_range"';

        # tcp options
        client_max_body_size 100m;
        server_names_hash_bucket_size 512;
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay        on;

        # fastcgi options
        fastcgi_intercept_errors      on;

        # Включаем GZIP на полную
        gzip            on;
        gzip_comp_level 9;
        gzip_buffers    32 64k;
        gzip_proxied    expired no-cache no-store private auth;
        gzip_types      text/plain
                        text/html
                        text/css
                        application/x-javascript
                        text/xml
                        application/xml
                        application/xml+rss
                        application/octet-stream
                        application/pdf
                        application/x-msdos-program
                        application/x-shockwave-flash
                        text/javascript;

    # кешируем открытые файлы
    open_file_cache            max=100000 inactive=40s;
    open_file_cache_valid      60s;
    open_file_cache_min_uses    2;
    open_file_cache_errors      on;

    # Теперь собственно начинается обработка хостов
        #  default
        include /etc/nginx/hosts/default.nginx;

    }

    Теперь нужно создать директорию для наших хостов
    Код:

    mkdir /etc/nginx/hosts
  7. Понеслась конфиг /etc/nginx/hosts/default.nginx
    Код:

        # Default virtual server
        server {
            # слушаем 80 порт
            listen  80;
            # название хоста
            server_name    default;
            # ежу понятно, что за 2 пункта снизу
            access_log  /var/log/nginx/default.access.log  main;
            error_log /var/log/nginx/default.info.error.log error;

            # Обрабатываем PHP через fastcgi сокет
            location ~ \.php$ {
                fastcgi_pass  unix:/var/run/php/php.default.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
                include        /etc/nginx/fastcgi_params;
            }
            # запрещаем  смотреть .ht* файлы
            location ~ /\.ht {
                deny  all;
            }
            # впринципе сама дислакация скриптов
            location / {
                root        /opt/www/default;
                index      index.php index.html index.htm;
            }


        }

  8. Отлично - Nginx готов к работе, вопрос за малым... PHP ))
    Тут все сложнее, не будем же мы извращаться и компилить руками php...
    Будем ставить PHP из своего ebuild`а, а чтобы не портить портажи - создаем Overlay.
    Для этого в файле /etc/make.conf дописываем строчку
    Код:

    PORTDIR_OVERLAY="/home/gentoo/portage"
    Соответственно создаем путь к нашему файлу
    Код:

    /home/gentoo/portage/www-servers/nginx/
    Адресс должен быть обязательно такой.
  9. Кладем из аттача Файл в созданную нами директорию и распаковываем.
    Overlay готов.
    не забываем указать USE="fpm"
    А также, чтобы не было проблем в дальнейшем с обновлением маскируем php
    Код:

    echo ">dev-lang/php-5.2.8-r1" >> /etc/portage/package.mask
    Добавляем что нужно для сборки и понеслась
    Код:

    emerge php
С утра допишу, чото интузиазм пропал, но ничего с голым Nginx`ом тоже можно много всего сделать :))
Вообще буду выкладывать свои заметки и наработки... мб кому поможет :)

Seefon 07.04.2009 00:35

Re: Настраиваем высокопроизводительный Web Сервер на базе Nginx + php-fpm
 
Не люблю я nginx, fastcgi и тому подобное, только фронтдентом к апачу, самый самолет :)
Так извращаться можно когда у тебя за место сервера какая-нибудь дравалетка стоит с 64 Мб ОЗУ, не так ли? :)

зыж. С Генту Красноглазым можно стать =)

BIT 07.04.2009 00:40

Re: Настраиваем высокопроизводительный Web Сервер на базе Nginx + php-fpm
 
Зачем нужен Apache ?
Если без него все просто летает. У меня 8гб ОЗУ. :)
Глаза давно красные. :)

Seefon 07.04.2009 00:45

Re: Настраиваем высокопроизводительный Web Сервер на базе Nginx + php-fpm
 
Под nginx нельзя использовать .htaccess (т.е. для большинства приложений нужно переписывать весь .htaccess в nginx) имеем кучу глюков с разными приложениями, которые работают через fast-cgi совсем не так, как под апачом. :)

:ps: Вообще если очень сильно хочется - ничего не мешает поставить nginx для отдачи статики, а динамику проксировать на апач.

BIT 07.04.2009 01:29

Re: Настраиваем высокопроизводительный Web Сервер на базе Nginx + php-fpm
 
Прямые руки и желание делают свое дело.
Уже ни за что не поставлю апач.

Если интересно могу выложить сравнения производительности.

FreeSky 25.09.2009 10:53

Re: Настраиваем высокопроизводительный Web Сервер на базе Nginx + php-fpm
 
давай, интересно поглядеть
Когда кстати допишешь статью? :)


Часовой пояс GMT +4, время: 18:30.

Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot