Главная Новости

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


Опубликовано: 05.09.2018

В этой статье мы будем устанавливать 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" и просто копируем и заменяем уже имеющиеся репозитории:


6 - Готовим CentOS 7. Установка php7-fpm

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".

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

4318

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

rss