Установка PHP-FPM, Nginx и eAccelerator на Ubuntu
Вход Регистрация

Установка PHP-FPM, Nginx и eAccelerator на Ubuntu

В этой статье мы будем устанавливать Nginx HTTP Server, PHP с PHP-FPM патчем, а также eAccelerator на чистую Ubuntu 11.10, прошу обратить внимание на программу WinSCP - графический клиент протоколов, которая облегчит установку данной сборки.

Поскольку Apache в большинстве случаев потребляет много памяти, люди начали искать различные способы замены, наш же выбор падёт на Nginx сервер с PHP патчем FPM.

  • Nginx - HTTP сервер, известный своей молниеносной скоростью в обслуживании статических файлов, в том числе богатым набором функций, простой конфигурацией, и низким потреблением ресурсов.
  • PHP-FPM (FastCGI Process Manager) - Улучшенный серверный протокол реализации "PHP FastCGI". Поставляется с официальным дистрибутивом PHP начиная с версии 5.3.3.
  • eAccelerator - Так называемый PHP акселератор, повышает производительность PHP, за счёт кеширования скомпилированных PHP скриптов.

Для начала работы нам потребуется добавить репозитории в дефолтный лист. Открываем файл "/etc/apt/sources.list" и просто копируем и заменяем уже имеющиеся репозитории:
deb http://archive.ubuntu.com/ubuntu oneiric main restricted universe
deb http://archive.ubuntu.com/ubuntu oneiric-updates main restricted universe
deb http://security.ubuntu.com/ubuntu oneiric-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu oneiric partner
deb http://nginx.org/packages/ubuntu/ lucid nginx
deb-src http://nginx.org/packages/ubuntu/ lucid nginx
deb http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main
deb-src http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main

Далее открываем консоль и добавляем ключи:
gpg --keyserver keyserver.ubuntu.com --recv-key ABF5BD827BD9BF62
gpg -a --export ABF5BD827BD9BF62 | apt-key add -
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8D0DC64F

Обновляем:
sudo apt-get update
sudo apt-get upgrade

Переходим к установке "Nginx":

sudo apt-get install nginx

Далее нам потребуется настроить конфигурационный фаил nginx'a, для этого открываем папку: /etc/nginx

Открываем файл nginx.conf и вставляем следующие настройки:


user www-data;
worker_processes  3;

timer_resolution 200ms;
worker_rlimit_nofile 1500;
worker_priority 1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
    worker_connections  300;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 64;
    access_log off;
    server_tokens off;

    sendfile on;
    client_header_timeout       60;
    client_body_timeout         60;
    send_timeout                60;
    keepalive_timeout 60;
    reset_timedout_connection on;
    tcp_nodelay        on;
    # Размер файла который может выгружен. В данном случае 1GB.
    client_max_body_size 1g;

    gzip                on;
    gzip_disable        "msie6";
    gzip_proxied        any;
    gzip_min_length     1100;
    gzip_http_version   1.1;
    gzip_buffers        4 16k;
    gzip_comp_level     3;
    gzip_types          text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    include /etc/nginx/conf.d/*;
}

Далее открываем: /etc/nginx/conf.d. Если в данной папке есть какие то файлы удаляем их и создаём файл "default" и вписываем:


server {
    listen   80;
    server_name  _;
    access_log  off;

    # client_max_body_size 1g;

    location / {
        root   /var/www;
        index  index.php;
    }

    location ~ .php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   backend;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

    location ~ /\.ht {
        deny  all;
    }
}
upstream backend {
        server 127.0.0.1:9000;
}

Делаем рестарт: service nginx restart или invoke-rc.d nginx restart. После проделанных операций набираем свой адрес сайта и в ответ нам должна открыться страница с приветствием.

Переходим к установке php-fpm

sudo apt-get install php5-fpm php5-mysql php5-common php5-curl php5-gd php5-mcrypt

После установки настраиваем конфиг php-fpm, открываем папку /etc/php5/fpm и открываем файл: php-fpm.conf, заменяем на настройки:


[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
# Интервал времени, чтобы определить, когда FPM будет мягко перезагружен, в данном случае раз в день;
emergency_restart_interval = 1d

[www]
listen = 127.0.0.1:9000
user = www-data
group = www-data
# Менеджер процессов, в данном случае используется "static" для систем с малыми ресурсами, если у вас их хватает то измените на "dynamic" раскоментировав нижние три опции;
pm = static
# Кол-во запущеных воркетов;
pm.max_children = 8
;pm.start_servers = 5
;pm.min_spare_servers = 2
;pm.max_spare_servers = 6
# Число запросов дочернего процесса, после которого процесс будет перезапущен;
pm.max_requests = 300
# Таймаут для обслуживания одного запроса, после чего рабочий процесс будет завершен. Выставите значение равное опции 'max_execution_time' в php.ini.
request_terminate_timeout = 60s
request_slowlog_timeout = 0
chdir = /

Так же не забудем дописать в php.ini опцию: cgi.fix_pathinfo=0, которая запретит обращаться к файла по такому пути: site/img.jpg/.php. Если злоумышленник загрузит вам картинку в которой будет php код то он исполниться, но благодаря данной опции данная уязвимость закрывается.

Перейдём к установки eAccelerator

Самого eAccelerator в репозиториях Ubuntu нет, поэтому мы будем устанавливать данный пакет из исходников, да и сам проект уже заброшен вот уже как 2 года, но всё же eAccelerator актуален и по сей день.

Итак, для начала работы нам потребуется установить пакет "php5-dev" в котором будет содержаться нужная нам утилита "phpize", а также пакет "make" для сборки и установки пакета после компиляции, открываем консоль и прописываем следующию команду:
sudo apt-get install php5-dev make

Приступим к установке самого eAccelerator`a, скачиваем данный пакет, загружаем к примеру в папку "root", далее распаковываем архив:
unzip eaccelerator.zip

Переходим в папку:
cd eaccelerator

Запускаем компиляцию пакета:
phpize

Добавляем опцию:
./configure -enable-eaccelerator=shared

Команда сборки и установки:
make && make install

Создаём папку для хранения кеша:
mkdir /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator

Навсякий случай проверяем установку консольного редактора:
sudo apt-get install nano

Создаём файл "eaccelerator.ini", в папке "/etc/php5/conf.d/"
nano /etc/php5/conf.d/eaccelerator.ini

После чего вставляем:


extension = "eaccelerator.so"
eaccelerator.shm_size = "32"
eaccelerator.cache_dir = "/var/cache/eaccelerator/"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "3600"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "5"

Нажимаем "Ctrl+O" далее "Enter" и "Ctrl+X".

  • eaccelerator.shm_size - Объём памяти выделяемый для кеша.
  • eaccelerator.enable - Включает или выключает Eaccelerator. "1" для включения или "0" для отключения.
  • eaccelerator.optimizer - Включает или выключает внутренний оптимизатор, который может ускорить код. "1" для включения или "0" для отключения.
  • eaccelerator.check_mtime - Включает или выключает PHP проверку модификации файла. Вы должны установить его в "1", если хотите перекомпиляции PHP файлов после модификации.
  • eaccelerator.debug - Включение или выключение протоколирования отладки.
  • eaccelerator.filter - Определение, какие PHP файлы должны быть в кэше. Вы можете указать шаблон например "*. php *. phtml", который указывает на кэширование данных файлов найденных по шаблону. Если шаблон начинается с символа "!", это означает игнорировать файлы, которые соответствуют данной схеме. Значение по умолчанию "", означает все скрипты будут кэшироваться.
  • eaccelerator.shm_ttl - Когда Eaccelerator`у не удается получить память для нового кэша, он удаляет все кэш-скрипты, которые не были задействованы в "shm_ttl" секунд назад.
  • eaccelerator.shm_prune_period - Когда Eaccelerator`у не удаётся получить память для нового кэш-скрипта он удаляет старый кэш-скрипт, если предыдущая попытка была сделана более "shm_prune_period" секунд назад.
  • eaccelerator.shm_only - Включение или отключение кэширования скомпилированных скриптов на диске.
  • eaccelerator.compress_level - Уровень сжатия кэша.

Перезапускаем php-fpm:
service php5-fpm restart

Для проверки создайте файл вписав туда phpinfo(), должен появиться раздел с "eAccelerator".

Скачать архивы


Комментировать

captcha

Вход

Зарегистрируйтесь, если нет учетной записи

Напомнить пароль
Регистрация
Напомнить пароль
Войти в личный кабинет