Freebsd настройка php-fpm и nginx

Freebsd настройка php-fpm и nginx

Ранее я уже рассказывал, как установить и настроить Freebsd 10.1 в качестве web сервера ( 1 часть, 2 часть, 3 часть ) Там мы использовали Apache, nginx и php.

Здесь же я хочу рассказать об установке и настройке связки nginx+php-fpm. По общепризнанному мнению, такая комбинация работает быстрее, чем связка с apache. Я на своем опыте в этом убедился.

При прочих равных условиях, сайт wordpress выдерживает большую нагрузку с nginx и php fpm, нежели apache и php.

Приступим. У нас имеется:

# uname -v FreeBSD 10.1-RELEASE

Обновим до последней версии с помощью вот этой инструкции. Проверяем, что получилось:

# uname -v FreeBSD 10.1-RELEASE-p8

Отлично, обновления прошли. Я не буду давать общие рекомендации по настройке сервера, я их уже давал во 2-й части инструкции, ссылки на которую я приводил выше. Можно посмотреть при желании. Приступим сразу к делу.

Установка и настройка mysql на Freebsd

Устанавливаем mysql:

# cd /usr/ports/databases/mysql55-server # make config-recursive # make install clean

Добавляем Mysql в автозагрузку:

echo 'mysql_enable=»YES»' >> /etc/rc.conf

Создаем для него конфигурационный файл:

# touch /etc/my.cnf

Конфигурацию каждый под свои потребности может сделать, описаний настроек в интернете много. Я предлагаю свой универсальный вариант:

[client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 bind-address = 127.0.0.1 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M thread_concurrency = 8 log-bin=mysql-bin log=/var/log/mysql.log binlog_format=mixed server-id = 1 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 128M sort_buffer_size = 128M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout

В моем варианте сервер жестко привязан к локальному интерфейсу и удаленно с ним работать нельзя. Если вам нужны удаленные подключения, то в параметре bind-address добавьте внешний адрес сервера.

Создадим файл логов:

touch /var/log/mysql.log chown mysql:mysql /var/log/mysql.log

Запускаем Mysql:

# /usr/local/etc/rc.d/mysql-server start

Проверяем, все ли в порядке:

# sockstat | grep mysql mysql mysqld 46460 13 tcp4 127.0.0.1:3306 *:* mysql mysqld 46460 15 stream /tmp/mysql.sock

Демон запущен и слушает локальный интерфейс.

Теперь запустим скрипт для настройки безопасности:

# /usr/local/bin/mysql_secure_installation

Задаем пароль для root и далее на все вопросы отвечаем утвердительно:

На этом установка и настройка mysql закончена. Идем дальше.

Установка и настройка PHP-FPM на Freebsd

Начиная с версии php 5.3 php-fpm идет как модуль, поэтому просто начинаем установку php и указываем в опциях fpm:

# cd /usr/ports/lang/php5 # make config-recursive# make install clean

Ставим теперь дополнения php-extentions:

# cd /usr/ports/lang/php5-extensions # make config-recursive

Дополнений много, все ставить не обязательно, можно будет остальное доставить потом в случае необходимости. Я обычно выбираю наиболее популярные и необходимые:

BZ2, CTYPE, CURL, DOM, EXIF, FILTER, FTP, GD, GETTEXT, HASH, ICONV, JSON, MBSTRING, MCRYPT, MYSQL, MYSQLI, PDF, PDO, PDO_SQLITE, PHAR, POSIX, SESSION, SIMPLEXML, SQLITE3, YOKENIZER, XML, XMLREADER, XMLWRITER, ZIP

# make install clean

Добавляем php-fpm в автозагрузку:

# echo 'php_fpm_enable=»YES»' >> /etc/rc.conf

Редактируем файл с настройками, приводим его к следующему виду:

# mcedit /usr/local/etc/php-fpm.conf [global] pid = run/php-fpm.pid [www] user = www group = www # работа через unix сокет, а не tcp, дает небольшой прирост производительности listen = /tmp/php-fpm.sock # права доступа к сокету listen.owner = www listen.group = www listen.mode = 0660 # как будут создаваться новые рабочие процессы pm = dynamic # максимальное оличество рабочих процессов pm.max_children = 10 # число запущенных процессов при старте сервера pm.start_servers = 2 # минимальное и максимальное количество процессов в простое pm.min_spare_servers = 1 pm.max_spare_servers = 3

Проверяем синтаксис настроек:

# php-fpm -t NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful

Стартуем php-fpm:

# /usr/local/etc/rc.d/php-fpm start

Проверяем запустился ли:

# sockstat | grep php-fpm www php-fpm 504 0 stream /tmp/php-fpm.sock www php-fpm 503 0 stream /tmp/php-fpm.sock root php-fpm 502 4 stream -> ?? root php-fpm 502 6 stream -> ?? root php-fpm 502 7 stream /tmp/php-fpm.sock

Все в порядке. Идем дальше.

Установка и настройка nginx на Freebsd

Устанавливаем nginx на наш Freebsd сервер:

# cd /usr/ports/www/nginx # make config-recursive

Выбираем настройки по-умолчанию.

# make install clean

Добавляем nginx в автозагрузку:

# echo 'nginx_enable=»YES»' >> /etc/rc.conf

Редактируем файл настроек. Я приведу пример с двумя виртуальными серверами, на одном из которых будут настройки для wordpress, другой будет для phpmyadmin, я люблю его вешать на отдельный поддомен.

# mcedit /usr/local/etc/nginx/nginx.conf user www; worker_processes 1; pid /var/run/nginx.pid; error_log /var/log/nginx-error.log warn; events { worker_connections 1024; use kqueue; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr — $remote_user [$time_local] ' '»$request» $status $bytes_sent ' '»$http_referer» «$http_user_agent» ' '»$gzip_ratio»'; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; server_tokens off; fastcgi_intercept_errors on; client_max_body_size 50m; server { listen 80; server_name www.site1.ru; rewrite ^ http://site1.ru$request_uri? permanent; } # wordpress server { listen 80; server_name site1.ru; root /web/sites/site1.ru/www/; index index.php index.html index.htm; access_log /web/sites/site1.ru/log/access.log main; error_log /web/sites/site1.ru/log/error.log; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ { access_log off; expires max; } location ~ .php$ { fastcgi_pass   unix:/tmp/php-fpm.sock; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /web/sites/site1.ru/www/; fastcgi_param SCRIPT_FILENAME /web/sites/site1.ru/www$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /web/sites/site1.ru/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 = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /.ht { deny all; } } # phpmyadmin server { listen 80; server_name pma.site1.ru; root /web/sites/pma.site1.ru/www/; index index.php index.html index.htm; access_log /web/sites/pma.site1.ru/log/access.log main; error_log /web/sites/pma.site1.ru/log/error.log; location ~ .php$ { fastcgi_pass   unix:/tmp/php-fpm.sock; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /web/sites/pma.site1.ru/www/; fastcgi_param SCRIPT_FILENAME /web/sites/pma.site1.ru/www$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /web/sites/pma.site1.ru/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; } } }

Создаем необходимые каталоги:

# mkdir /web && mkdir /web/sites && mkdir /web/sites/site1.ru && mkdir /web/sites/site1.ru/www && mkdir /web/sites/site1.ru/log && mkdir /web/sites/pma.site1.ru && mkdir /web/sites/pma.site1.ru/www && mkdir /web/sites/pma.site1.ru/log # chown -R www:www /web

Проверяем конфигурацию:

# rehash # nginx –t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: [emerg] mkdir() «/var/tmp/nginx/client_body_temp» failed (2: No such file or directory) nginx: configuration file /usr/local/etc/nginx/nginx.conf test failed

Почему-то nginx не смог создать папку во временном каталоге. Поможем ему сами:

# mkdir /var/tmp/nginx # nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

Все в порядке. Наш web сервер на Freebsd готов. Запускаем nginx и проверяем, нормально ли запустился:

# /usr/local/etc/rc.d/nginx start # sockstat | grep nginx www nginx 3488 10 tcp4 *:80 *:* www nginx 3488 11 stream -> ?? root nginx 3487 3 stream -> ?? root nginx 3487 10 tcp4 *:80 *:* root nginx 3487 11 stream -> ??

Все в порядке, сервер запущен и слушает 80-й порт. Теперь проверим работу web сервера с помощью тестовой странички. Создаем ее:

# touch /web/sites/site1.ru/www/index.php # mcedit /web/sites/site1.ru/www/index.php

Переходим на сайт по адресу http://site1.ru Не забудьте настроить DNS для доступа к установленному серверу, либо отредактируйте в windows файл hosts, добавив туда строку:

192.168.1.21 site1.ru

где 192.168.1.21 адрес web сервера Freebsd 10.

Вы должны увидеть картинку:

Если видите ее у себя, поздравляю, вы все настроили правильно и web сервер полностью готов к работе. Остался только маленький штрих. Для удобства управления mysql установим phpmyadmin.

Установка phpmyadmin на web сервер Freebsd

# cd /usr/ports/databases/phpmyadmin # make install clean

Перемещаем файлы из установочной директории по-умолчанию в наш поддомен pma.site1.ru:

# mv /usr/local/www/phpMyAdmin/* /web/sites/pma.site1.ru/www # mv /usr/local/www/phpMyAdmin/.* /web/sites/pma.site1.ru/www

Меняем владельца:

# chown -R www:www /web/sites/pma.site1.ru/www

Настраиваем DNS записи на pma.site1.ru или просто добавляем в винде в файл hosts строку

192.168.1.21 pma.site1.ru

И заходим по адресу http://pma.site1.ru

У вас должно открыться окно приветствия phpmyadmin. Вводим сюда пользователя и пароль root, которые мы задали в самом начале настройки и попадаем в панель управления базами.

На этом настройка web сервера на базе Freebsd 10.1 и связки nginx + php-fpm закончена.

Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по Freebsd

Рекомендую полезные материалы по Freebsd:
Описание установки Freebsd 11 на одиночный диск, либо на софтовый raid1, сделанный средствами zfs, которые поддерживает стандартный установщик.Базовая настройка Freebsd, которую можно выполнить после установки сервера общего назначения. Представлены некоторые рекомендации по повышению удобства пользования и безопасности.Описание и нюансы обновления системы Freebsd с помощью утилиты freebsd-update. Показано пошагово на конкретном примере обновления.Настройка Freebsd шлюза для обеспечения выхода в интернет. Используется ipfw и ядерный нат, dnsmasq в качестве dhcp и dns сервера. Мониторинг сетевой активности с помощью iftop.Настройка максимально быстрого web сервера на базе Freebsd и nginx + php-fpm. Существенный прирост производительности по сравнению с классическим apache.

Источник: https://serveradmin.ru/freebsd-nastroyka-php-fpm-i-nginx/

Установка и настройка NGINX + php-fpm в Freebsd

Устанавливать и настраивать NGINX будем в ОС FreeBSD 10.3

Приступаем к установке NGINX

root@linux-in:/usr/ports/www/nginx # whereis nginx nginx: /usr/ports/www/nginx root@linux-in:~ # cd /usr/ports/www/ngin

Выполняем конфигурирование nginx в Freebsd 10.3:

root@linux-in:~ # make config

или

root@linux-in:~ # make showconfig | grep on ===> The following configuration options are available for nginx-1.2.3_1,1: HTTP=on: Enable HTTP module HTTP_ADDITION=on: Enable http_addition module HTTP_CACHE=on: Enable http_cache module HTTP_DAV=on: Enable http_webdav module HTTP_FLV=on: Enable http_flv module HTTP_PERL=on: Enable http_perl module HTTP_REALIP=on: Enable http_realip module HTTP_REWRITE=on: Enable http_rewrite module HTTP_SSL=on: Enable http_ssl module HTTP_STATUS=on: Enable http_stub_status module HTTP_SUB=on: Enable http_sub module WWW=on: Enable html sample files HTTP_RESPONSE=off: 3rd party http_response module ENCRYPTSESSION=off: 3rd party encrypted_session module ICONV=off: 3rd party iconv module RDS_JSON=off: 3rd party rds_json module ====> Options available for the single VIDEO: you have to select exactly one of them ===> Use ‘make config’ to modify these settings

Затем производим установку устанавливаем:

root@linux-in:~ # make install clean

Подготавливаем конфигурационный nginx.conf файл WEB-сервера nginx
Приводим его к такому виду:

root@linux-in:~ # cat /usr/local/etc/nginx/nginx.conf | grep -v ^#user www; worker_processes 1; pid /var/run/nginx.pid; error_log /var/log/nginx-error.log warn; events { worker_connections 1024; use kqueue; } http { include mime.types; default_type application/octet-stream; # log options log_format main ‘$remote_addr – $remote_user [$time_local] ‘ ‘”$request” $status $bytes_sent ‘ ‘”$http_referer” “$http_user_agent” ‘ ‘”$gzip_ratio”‘; # nginx options sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; server_tokens off; # fastcgi fastcgi_intercept_errors on; # virtual server server { listen 80; server_name www.example.com.ua example.com.ua; access_log /var/log/nginx.example.com.ua.log main; # server root directory location / { root /usr/local/www/example.com.ua; index index.php index.html index.htm; } # php location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/www/example.com.ua$fastcgi_script_name; include fastcgi_params; } } }

Проверяем синтаксис конфигурационного файла nginx.conf:

Читайте также:  Звонок-оповещение zabbix через asterisk на мобильный телефон

root@linux-in:~# nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

Запускаем  наш web-сервер:

root@linux-in:~# service nginx onestart Performing sanity check on nginx configuration: nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful Starting nginx.

Когда РНР уже установлен, его нужно будет пересобрать. В версии PHP 5.3.3 и выше, модуль php-fpm можно установить во время конфигурирования РНР.

Пример установки  для старых версий PHP, возьмем  – 5.2

Переходим в порты:

root@linux-in:~# cd /usr/ports/lang

Скачиваем архив php и разархивируем его:

root@linux-in:~# fetch http://rit-kpi.org/php-fpm/php-5.2.12-fpm-0.6.tar.gz php-5.2.12-fpm-0.6.tar.gz 100% | tar -zxf php-5.2.12-fpm-0.6.tar.gz

Теперь выполняем установку PHP 5.2:

root@linux-in:~# cd php5-fpm make install clean

Продолжаем нашу настройку php 5.3.3

Производим конфигирование:

root@linux-in:~# cd /usr/ports/lang/php5 root@linux-in:~# make config

Нам нужны следующие опции:
Изменяем файл конфигурации php-fpm:

root@linux-in:~# cat /usr/local/etc/php-fpm.conf | grep -v ^; | less [global] pid = run/php-fpm.pid error_log = /var/log/php-fpm-error.log [www] user = www group = www listen = 127.0.0.1:9000 pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 request_slowlog_timeout = 5s slowlog = /var/log/php-fpm-slow.log

Создадим файлы лога NGINX и проверим:

root@linux-in:~# touch /var/log/php-fpm-error.log root@linux-in:~# touch /var/log/php-fpm-slow.log root@linux-in:~# php-fpm -t [23-Sep-2012 19:14:08] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful

Запускаем php-fpm на нашем сервере:

root@linux-in:~# /usr/local/etc/rc.d/php-fpm onestart Starting php_fpm. root@linux-in:~# service php-fpm onestatus php_fpm is running as pid 52318.

Создаем файл info.php с содержимым:
После создания файл info.php, мы добавим его в каталог, как сказано в конфигурации NGINX

и проведем проверку нашего NGINX с php-fpm на FreeBSD 10.3:

Источник: http://linux-in.com/ustanovka-i-nastroika-nginx-php-fpm-freebsd/

Настройка сервера FreeBSD + Nginx + PHP 5 + PHP-FPM + MySQL 5

В Магвае для хостинга сайтов клиентов и собственных проектов используем европейский dedicated хостинг. Покупка, установка, настройка и поддержание работы сервера — задачи на самом деле простые, если не хостить тяжелые проекты и не отбиваться от досов.

После покупки, саппорт хостинга в автоматическом режиме устанавливает OS, поднимает SSH и дает реквизиты для доступа. После этого настройку можно производить самостоятельно. Проще всего заказать и поставить какую-нибудь контрольную панель, которая сама установит и настроит все сервисы.

Но можно все сделать вручную и иметь полный контроль над всеми тонкостями настройки сервисов.

Будем настраивать FreeBSD 8.2, nginx 0.8, PHP 5.3.5, Mysql 5.5.

Итак, рассматриваем ситуацию, что у вас есть IP и пароль root от выделенного сервера, на который мы все будем ставить. Первым делом подключаемся к нему по SSH.

Это стандартный протокол связи с удаленным сервером, через который можно выполнять все операции администрирования. Для подключения нужна программа, которая этот SSH поддерживает.

В Linux и MacOS — это консоль, в Windows — это Putty.

Для подключения в Linux и MacOS открываем терминал и пишем:

При запросе пароля вводим его. В Windows запускаем Putty.exe в поле Host Name пишем IP сервера, жмем Open и вводим логин и пароль когда спросит.

Если подключились, то можно продолжать. Если нет, то либо разбираемся с подключением к интернету, либо просим саппорт хостинга поднять сервер в многопользовательском режиме, чтобы он был доступен для подключения по SSH.

После подключения первым делом ставим коллекцию портов. Порты — это большая коллекция программ (пакетов), которые могут быть вами скомпилированы и установлены.

Коллекция портов — это  их список, который содержит информацию о версии пакета. Даже если коллекция портов уже была установлена при установке OS, все равно будет не лишним ее обновить.

Для установки/обновления портов выполняем команду:

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

После установки портов мы можем начинать ставить программы. Первым делом удобно получить файловый менеджер с графической оболочкой, чтобы просмотривать файловую систему, котпировать и редактировать файлы. Я использую Midnight Commander.

 Это популярный консольный файловый менеджер. Он при установке потянет за собой кучу пакетов. Все будет автоматически скачано и установлено. Вам нужно только быть рядом и жать OK во всплывающих окнах. Все опции можно оставить по-умолчанию.

Для установки mc переходим в каталог пакета:

Компилируем mc:

Устанавливаем mc:

После установки вводим команду:

Она обновит переменные окружения и вы сможете сразу запустить файловый менеджер не указывая полный путь к нему, а лишь название программы.

Теперь можно приступить к установке сервера nginx. Попробуем найт нужный пакет в коллекции портов. прееходим:

Ищем nginx:

В результатх находим нужный пакет (в нашем случае nginx-0.8.54) и переходим в его каталог:

Компилируем его. Параметры выбираем под свои нужды. Можно просто оставить все по-умолчанию:

Устанавливаем:

Настраиваем nginx. Запускаем mc:

Переходим в каталог /usr/local/etc/nginx и настраиваем nginx: правим файл nginx.conf. Настройки приводить не буду — все очень специфично. Приведу лишь блок server:

В приведенном примере мы перенаправляем все запросы, которые не ведут на существующие файлы на скрипт index.php. А он в свою очередь обрабатывается PHP, запущенном в режиме CGI на нашем сервере на порту 9000.

Теперь для того, чтобы сервер nginx заработал во FreeBSD, его нужно разрешить в файле /etc/rc.conf. Открываем его в mc и дописываем строчку:

И запускаем nginx командой:

В дальнейшем, для управления работой серверов можно использовать команду service. Самые распространенные собыимя: start, restart, stop, reload.
После запуска nginx при заходе через браузер на IP сервера мы увидим «Welcome to nginx» — это хорошие новости. Сервер работает, но у него нет интерпритатора PHP для обработки запросов.

Ставим PHP. Переход в /usr/ports:

Ищем PHP:

Находим нужный порт и преходим в него:

Компилируем. В настройках выбираем обе версии CLI и CGI, а также FPM — он позволит нам запускать PHP в CGI режиме без лишних программ.

После сборки устанавливаем:

Затем идем в директорию расширений PHP и устанавливаем их. П списке ставим крестики напротив нужных:

Сразу рекомендую поставить memcached:

И для того, чтобы он работал с php, ставим расшиерние:

Также сразу поставим APC — систему кэширования PHP скриптов:

Теперь в /etc/rc.conf нужно дописать 2 строчки. Он разрешат запуск PHP и Memcached:

И запускаем их поочереди:

Проверить работоспособность PHP можно, разместив  в каталоге nginx сервера файл index.php с любым проверочным кодом. Если вы не правили конфиг nginx.conf, то этот каталог имеет путь /usr/local/www/nginx.
Ну и напоследок можно поставить MySQL сервер.

В /etc/rc.conf разрешаем mysql:

Запускаем:

На что следует обратить внимание. После установки у вас будет работающий веб-сервер, настроенный в основном по-умолчанию. Первым делом на сервере нужно включить файрвол и закрыть ненужные порты. Нужно активировать php.ini файл . Для этого в каталоге /usr/local/etc находим файл php.

ini-production и переименовываем его просто в php.ini. Сразу можно произвести необходимые настройки — задать лимиты памяти, контроль ошибок, прописать нужную timezone, настроить APC. Также можно настроить пользователя и группу под которыми работает PHP. В файле /usr/local/etc/php-fpm.conf есть соответствующие строчки.

Каталог баз данных mysql находится в /var/db/mysql.

Пользоваться всем этим достаточно просто. Мониторить нагрузку на сервер можно командами top и ps, перезапускать сервисы — командой service имя_сервиса restart. Желательно настроить ротацию логов для nginx, чтобы они каждый день очищались и не накапливалось много мусора.

Источник: http://magwai.ru/blog/831/

Установка и настройка Nginx+PHP-FPM на FreeBSD | Записки системного администратора

1.Установка и настройка Nginx

cd /usr/ports/www/nginx

make install clean

cd /usr/local/etc/nginx/

cp nginx.conf nginx.conf~

nano nginx.conf (см.ниже)

nginx –t

mkdir -p /var/tmp/nginx/client_body_temp

mkdir -p /var/log/nginx

nano conf.d/joomla.to.conf (см.ниже)

nano conf.d/wordpress.to.conf (см.ниже)

htpasswd -c .htpasswd tom

htpasswd .htpasswd bob

Создаем символьную ссылку  phpmyadmin для phpMyAdmin’а

ln -s /usr/local/www/phpMyAdmin /usr/local/www/apache22/data/phpmyadmin

/usr/local/www/apache22/data/ — это DocumentRoot для сервера по умолчанию

nginx –t

nano /etc/rc.conf

nginx_enable=»YES»

/usr/local/etc/rc.d/nginx start

2.Установка и настройка PHPFPM

Начиная с версии php-5.3.3 php-fpm идет в составе php ,как опция при сборке из портов php

Мои опции сборки PHP

cat /var/db/ports/lang_php5/options | grep -v UNSET

_OPTIONS_READ=php5-5.4.17

OPTIONS_FILE_SET+=CLI

OPTIONS_FILE_SET+=CGI

OPTIONS_FILE_SET+=FPM

OPTIONS_FILE_SET+=APACHE

OPTIONS_FILE_SET+=LINKTHR

для версий младше 5.3.3. инструкцию смотрим на сайте

http://php-fpm.org/download/

cp /usr/local/etc/php-fpm.conf /usr/local/etc/php-fpm.conf~

nano  /usr/local/etc/php-fpm.conf

Создаем необходимые файлы

/var/log/{php-fpm.log,php-fpm.slow.log,php-fpm.www.log}

Проверка синтаксиса

php-fpm -t

nano /etc/rc.conf

php_fpm_enable=»YES»

/usr/local/etc/rc.d/php-fpm start

cat  /usr/local/etc/nginx/nginx.conf

user  www www;

worker_processes  1;

error_log  /var/log/nginx/error.log  notice;

pid        /var/run/nginx.pid;

events {

worker_connections  1024;

use kqueue;

}

http {

include       mime.types;

default_type  application/octet-stream;

log_format  main  ‘$remote_addr — $remote_user [$time_local] «$request» ‘

‘$status $body_bytes_sent «$http_referer» ‘

‘»$http_user_agent» «$http_x_forwarded_for»‘;

access_log  /var/log/nginx/access.log  main;

client_header_timeout 10;

client_body_timeout 10;

send_timeout 10;

connection_pool_size 256;

client_header_buffer_size 1k;

large_client_header_buffers 4 2k;

request_pool_size 4k;

sendfile        on;

#tcp_nopush     on;

tcp_nodelay     on;

server_tokens   off;

gzip            on;

gzip_static     on;

gzip_comp_level 5;

gzip_min_length 1024;

gzip_buffers 4 8k;

gzip_disable msie6;

gzip_types text/plain  application/json text/xml text/css text/comma-separated-values text/javascript application/x-javascript application/atom+xml;

keepalive_timeout  5 5;

limit_conn_zone   $binary_remote_addr  zone=addr:10m;

output_buffers 1 32k;

client_body_buffer_size 8K;

postpone_output 1460;

index index.html;

client_max_body_size 80m;

index  index.html index.htm index.php;

include /usr/local/etc/nginx/conf.d/*.conf;

server {

listen       192.168.1.42:80 default_server;

server_name  _;

#charset koi8-r;

location / {

root /usr/local/www/apache22/data;

try_files $uri $uri/ /index.php;

}

location ~ .php$ {

#    root           html;

#            fastcgi_pass   127.0.0.1:9000;

fastcgi_pass unix:/tmp/php-fpm.sock;  #Если nginx и php-fpm запущены на одном и том            # же сервере,тогда подключаемся через сокет вместо использования портов

fastcgi_index  index.php;

#            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

# Здесь у меня почему-то не завелось через переменную $document_root, пришлось #принудительно указывать полный путь

fastcgi_param  SCRIPT_FILENAME  /usr/local/www/apache22/data$fastcgi_script_name;

include        fastcgi_params;

}

# phpMyAdmin

location ~ ^/phpmyadmin/(.*.php)$ {

#       fastcgi_pass 127.0.0.1:9000;

fastcgi_pass unix:/tmp/php-fpm.sock;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME /usr/local/www/phpMyAdmin/$1;

fastcgi_param DOCUMENT_ROOT /usr/local/www/phpMyAdmin;

}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html

#

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   /usr/local/www/nginx-dist;

}

location ~ /.ht {

deny  all;

}

location /server-status {

stub_status on;

access_log on;

allow 127.0.0.1;

allow 192.168.1.0/24;

deny all;

}

}

}

cat /usr/local/etc/nginx/conf.d/joomla.to.conf

server {

listen       192.168.1.42:80;

server_name  joomla.to  www.joomla.to;

location /server-status {

stub_status on;

access_log on;

allow 127.0.0.1;

allow 192.168.1.0/24;

deny all;

}

location / {

root   /usr/local/www/joomla.to;

try_files $uri $uri/ /index.php;

satisfy any;

allow 192.168.1.0/24;

allow 127.0.0.1/32;

deny all;

auth_basic «Restricted»;

auth_basic_user_file /usr/local/etc/nginx/.htpasswd;

}

location ~ .php$ {

root           /usr/local/www/joomla.to;

#            fastcgi_pass   127.0.0.1:9000;

fastcgi_pass unix:/tmp/php-fpm.sock;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

include        fastcgi_params;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

Читайте также:  Установка zabbix 3 на nginx + php-fpm

root   /usr/local/www/nginx-dist;

}

}

cat /usr/local/etc/nginx/conf.d/wordpress.to.conf

server {

listen       80;

server_name  wordpress.to  www.wordpress.to;

location /server-status {

stub_status on;

access_log on;

allow 127.0.0.1;

allow 192.168.1.0/24;

deny all;

}

location / {

root   /usr/local/www/wordpress.to;

try_files $uri $uri/ /index.php;

satisfy any;

allow 192.168.1.0/24;

allow 127.0.0.1/32;

deny all;

auth_basic «Restricted»;

auth_basic_user_file /usr/local/etc/nginx/.htpasswd;

}

location ~ .php$ {

root           /usr/local/www/wordpress.to;

#            fastcgi_pass   127.0.0.1:9000;

fastcgi_pass unix:/tmp/php-fpm.sock;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

include        fastcgi_params;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   /usr/local/www/nginx-dist;

}

}

cat /usr/local/etc/php-fpm.conf | grep -v ;

[global]

pid = run/php-fpm.pid

error_log = /var/log/php-fpm.log

log_level = notice

emergency_restart_threshold = 10

emergency_restart_interval = 1m

process_control_timeout = 5

daemonize = yes

events.mechanism = kqueue

[www]

user = www

group = www

listen.backlog = -1

listen.owner = www

listen.group = www

listen.mode = 0666

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

slowlog = /var/log/php-fpm.slow.log

request_slowlog_timeout = 10

rlimit_files = 1024

rlimit_core = 0

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/local/bin:/usr/bin:/bin

env[TMP] = /tmp

env[TMPDIR] = /tmp

env[TEMP] = /tmp

php_flag[display_errors] = on

php_admin_value[error_log] = /var/log/php-fpm.www.log

php_admin_flag[log_errors] = on

php_admin_value[memory_limit] = 32M

Источники:

Источник: https://kamaok.org.ua/?p=130

Linux/BSD Проще не бывает!

Давно у меня в голове засела идея избавиться от apache2 на своих серверах. Зачем нужен этот древний тяжеленный мамонт? Ради модуля php? Ну так все хостинги давно уже обкатали режим php-fpm -это когда специфически собранный PHP работает сам по себе как сервис для компиляции php файликов.

Стабильность и функциональность данного варианта работы PHP отличная! Остается статика, всякие картинки, стили, java-скрипты …. тут среди попсовых решений Nginx впереди планеты всей! Таким образом получаем простенькую систему из PHP-FPM + Nginx способную заменить Apache2 + mod_php + PHP.

К тому же для большей безопасности и гибкости в настройке PHP-FPM поддерживает pools — это значит что PHP под каждый отдельный web-ресурс можно сконфигурить отдельно, к примеру сайту #1 дать 64MB RAM, а сайту #5 — 2048MB и тд, а любые превышения лимитов одним пулом не будут влиять на работу других.

Для большей безопасности каждый пул можно разместить в его личном chroot-окружении, что на уровне FS изолирует все пулы друг от друга. Сладко??? Тогда в бой!
Установка PHP с флагом FPM:
Устанавливаем порт /usr/ports/lang/php5 с опцией PHP-FPM.

При необходимости устанавливаем /usr/ports/lang/php5-extensions
Установка nginx:
Также из портов устанавливаем nginx, у меня он собран с такими опциями:

HTTP=on: Enable HTTP module
HTTP_ADDITION=on: Enable http_addition module
HTTP_CACHE=on: Enable http_cache module
HTTP_GZIP_STATIC=on: Enable http_gzip_static module
HTTP_GUNZIP_FILTER=on: Enable http_gunzip_filter module
HTTP_IMAGE_FILTER=on: Enable http_image_filter module
HTTP_PERL=on: Enable http_perl module
HTTP_REALIP=on: Enable http_realip module
HTTP_REWRITE=on: Enable http_rewrite module
HTTP_STATUS=on: Enable http_stub_status module
WWW=on: Enable html sample files

Не забываем про автозагрузку сервисов:
В /etc/rc.conf добавляем такие строчки для автостарта сервисов nginx и php-fpm

# #
nginx_enable=»YES»
# #
php_fpm_enable=»YES»

Создание пользователя и окружения для chroot:
Создаем юзера, который у нас будет использоваться для виртуального web-хостинга. У меня это wwwuser. В его домешнем каталоге создаем необходимые директории для chroot php-fpm:

root@srv1:~# cd /home/wwwuser
root@srv1:/home/wwwuser# mkdir wwwchroot
root@srv1:/home/wwwuser# mkdir wwwchroot/{etc,htdocs,logs,tmp,usr}
root@srv1:/home/wwwuser# mkdir wwwchroot/usr/local
root@srv1:/home/wwwuser#

Создаем симлинки на некоторые конфиги и сокет mysql-сервера:

root@srv1:/home/wwwuser# cd wwwchroot/
root@srv1:/home/wwwuser/wwwchroot# ln -s /etc/hosts etc/hosts
root@srv1:/home/wwwuser/wwwchroot# ln -s /etc/host.conf etc/host.conf
root@srv1:/home/wwwuser/wwwchroot# ln -s /etc/resolv.

conf etc/resolv.conf
root@srv1:/home/wwwuser/wwwchroot# ln -s /etc/nsswitch.conf etc/nsswitch.conf
root@srv1:/home/wwwuser/wwwchroot# ln -s /etc/localtime etc/localtime
root@srv1:/home/wwwuser/wwwchroot# ln -s /tmp/mysql.sock tmp/mysql.

sock

Создаем симлинки на библиотеки:

root@srv1:/home/wwwuser/wwwchroot# ln -s /lib lib
root@srv1:/home/wwwuser/wwwchroot# ln -s /usr/local/lib usr/local/lib
root@srv1:/home/wwwuser/wwwchroot#

Настройка php-fpm:
Для удобства я «розбил» конфигурацию на основную часть [global] в конфиге /usr/local/etc/php-fpm.conf и настройки каждого веб-ресурса [pool] отдельно в директории /usr/local/etc/fpm.d/
Содержимое основного конфига:

include=etc/fpm.d/*.conf
[global]
pid = run/php-fpm.pid
events.mechanism = kqueue

Конфиги веб ресурсов нужно создавать в директории /usr/local/etc/fpm.d/. Их может быть много, поэтому удобно каждому юзеру создавать отдельный файлик. Вот пример содержимого одного из таких конфигов — /usr/local/etc/fpm.d/wwwuser_pool.conf:

[wwwuser]
prefix = /usr/home/$pool user = wwwuser group = wwwuser

listen = wwwchroot/tmp/php5-fpm.sock

listen.owner = www listen.group = www listen.mode = 0600 pm = dynamic

pm.max_children = 5

pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 50  

slowlog = logs/$pool.log.slow

request_slowlog_timeout = 5
request_terminate_timeout = 25  

chroot = $prefix/wwwchroot

chdir = /htdocs  

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f wwwuser@srv1.mydomain.ua

php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M

После этого у вас должен нормально запуститься сервис php-fpm. Пробуем:

root@srv1:~# service php-fpm start Starting php_fpm.

root@srv1:~#

Отлично! Поехали дальше! Настройка nginx:

Тут я не очень разобрался, но скажем так, добился реально рабочего результата. Поэтому с удовольствием прочитаю замечания по настройке nginx в комментах. В стандартный конфиг /usr/local/etc/nginx/nginx.conf добавил секцию server для CMS Drupal версии 7:

    server {
        listen       80;         server_name  mydomain.kiev.ua www.mydomain.kiev.ua;

        gzip on;

        gzip_static on;         gzip_vary on;

        gzip_http_version 1.1;

        gzip_min_length 700;
        gzip_comp_level 6;
        gzip_disable «msie6»;

        access_log  /usr/home/wwwuser/logs/drupal-access.log;

        error_log   /usr/home/wwwuser/logs/drupal-error.log;

        root /usr/home/wwwuser/wwwchroot/htdocs/drupal7;

        location = /favicon.ico {

                log_not_found off;                 access_log off;

        }

 

        location = /robots.txt {

                allow all;                 log_not_found off;                 access_log off;

        }

        # Very rarely should these ever be accessed outside of your lan

        location ~* .(txt|log)$ {
                allow 127.0.0.0/8;                 deny all;

        }

 

        location ~ ..*/.*.php$ {

                return 403;
        }  

        # No no for private

        location ~ ^/sites/.*/private/ {
                return 403;
        }  

        # Block access to «hidden» files and directories whose names begin with a

        # period. This includes directories used by version control systems such
        # as Subversion or Git to store control files.
        location ~ (^|/). {
                return 403;
        }

        location / {

                # This is cool because no php is touched for static content
                try_files $uri @rewrite;
        }  

        location @rewrite {

                # You have 2 options here
                # For D7 and above:
                # Clean URLs are handled in drupal_environment_initialize().
                rewrite ^ /index.php;
                # For Drupal 6 and bwlow:
                # Some modules enforce no slash (/) at the end of the URL
                # Else this rewrite block wouldn't be needed (GlobalRedirect)
                #rewrite ^/(.*)$ /index.php?q=$1;
        }

        location ~ .php$ {

        fastcgi_split_path_info ^(.+.php)(/.+)$;         fastcgi_intercept_errors on;

        fastcgi_param SCRIPT_FILENAME /htdocs/drupal7$fastcgi_script_name;

        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT /htdocs/drupal7;
        fastcgi_pass   unix:/usr/home/wwwuser/wwwchroot/tmp/php5-fpm.sock;         include        fastcgi_params;

                 }

        # This is for D7 and D8

        location ~ ^/sites/.*/files/styles/ {
                try_files $uri @rewrite;
        }  

        location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {

                expires max;                 log_not_found off;

        }

       

        location ~ /. {

        deny  all;

        }

    }

Как видно из конфига, drupal у меня установлен в отдельной директории в htdocs, вот полный путь — /usr/home/wwwuser/wwwchroot/htdocs/drupal
После сохранения конфига можно запустить nginx:

root@srv1:~# service nginx start Performing sanity check on nginx configuration:

nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok

nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful Starting nginx.

root@srv1:~#

Ну и после этого пробуем в браузере открыть наш сайт: http://mydomain.kiev.ua Я розпаковал в директорию drupal сам CMS — поэтому увидел приглашение к установке … все заработало с «пол-пинка».

Пробовал аналогичный образом настраивать wordpress и phpBB — отлично работает, правда настройки в nginx.

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

Хай щастить!

Источник: http://diff.org.ua/archives/2106

Настройка Nginx+PHP-FPM на FreeBSD

Пропустить и перейти к содержимому

В дополнение к предыдущей статье решил описать как настроить это дело без Apache.
Пересобираем php5 с поддержкой php-fpm

deathstar# cd /usr/ports/lang/php5 deathstar# make config

deathstar# make deinstall clean && make install clean

Настраиваем PHP-FPM

deathstar# cp /usr/local/etc/ deathstar# cp php-fpm.conf.default php-fpm.conf

deathstar# ee php-fpm.conf

И приводим примерно к такому виду

;;;;;;;;;;;;;;;;;;;;; ; FPM Configuration ;

;;;;;;;;;;;;;;;;;;;;;

; All relative paths in this configuration file are relative to PHP's install ; prefix (/usr/local). This prefix can be dynamicaly changed by using the

; '-p' argument from the command line.

; Include one or more files. If glob(3) exists, it is used to include a bunch of ; files from a glob(3) pattern. This directive can be used everywhere in the ; file. ; Relative path can also be used. They will be prefixed by: ; — the global prefix if it's been set (-p arguement) ; — /usr/local otherwise

Читайте также:  Обзор, отзыв и сравнение с redmi xiaomi mi4c

;include=etc/fpm.d/*.conf

;;;;;;;;;;;;;;;;;; ; Global Options ;

;;;;;;;;;;;;;;;;;;

[global] ; Pid file ; Note: the default prefix is /var ; Default Value: none

pid = run/php-fpm.pid

; Error log file ; Note: the default prefix is /var ; Default Value: log/php-fpm.log

;error_log = log/php-fpm.log

; Log level ; Possible Values: alert, error, warning, notice, debug ; Default Value: notice

;log_level = notice

; If this number of child processes exit with SIGSEGV or SIGBUS within the time ; interval set by emergency_restart_interval then FPM will restart. A value ; of '0' means 'Off'. ; Default Value: 0

;emergency_restart_threshold = 0

; Interval of time used by emergency_restart_interval to determine when ; a graceful restart will be initiated. This can be useful to work around ; accidental corruptions in an accelerator's shared memory. ; Available Units: s(econds), m(inutes), h(ours), or d(ays) ; Default Unit: seconds ; Default Value: 0

;emergency_restart_interval = 0

; Time limit for child processes to wait for a reaction on signals from master. ; Available units: s(econds), m(inutes), h(ours), or d(ays) ; Default Unit: seconds ; Default Value: 0

;process_control_timeout = 0

; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging. ; Default Value: yes

;daemonize = yes

;;;;;;;;;;;;;;;;;;;; ; Pool Definitions ;

;;;;;;;;;;;;;;;;;;;;

; Multiple pools of child processes may be started with different listening ; ports and different management options. The name of the pool will be ; used in logs and stats. There is no limitation on the number of pools which

; FPM can handle. Your system will tell you anyway 🙂

; Start a new pool named 'www'. ; the variable $pool can we used in any directive and will be replaced by the ; pool name ('www' here)

[www]

; Per pool prefix ; It only applies on the following directives: ; — 'slowlog' ; — 'listen' (unixsocket) ; — 'chroot' ; — 'chdir' ; — 'php_values' ; — 'php_admin_values' ; When not set, the global prefix (or /usr/local) applies instead. ; Note: This directive can also be relative to the global prefix. ; Default Value: none

;prefix = /path/to/pools/$pool

; The address on which to accept FastCGI requests. ; Valid syntaxes are: ; 'ip.add.re.ss:port' — to listen on a TCP socket to a specific address on ; a specific port; ; 'port' — to listen on a TCP socket to all addresses on a ; specific port; ; '/path/to/unix/socket' — to listen on a unix socket. ; Note: This value is mandatory.

listen = 127.0.0.1:9000

; Set listen(2) backlog. A value of '-1' means unlimited. ; Default Value: 128 (-1 on FreeBSD and OpenBSD)

;listen.backlog = -1

; List of ipv4 addresses of FastCGI clients which are allowed to connect. ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address ; must be separated by a comma. If this value is left blank, connections will be ; accepted from any ip address. ; Default Value: any

;listen.allowed_clients = 127.0.0.1

; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. ; Default Values: user and group are set as the running user ; mode is set to 0666 ;listen.owner = www ;listen.group = www

;listen.mode = 0666

; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = www

group = www

Источник: https://deathstar.name/nastrojka-nginxphp-fpm-na-freebsd/

Установка nginx + php-fpm + memcache + eaccelerator на FreeBSD

Зачем всё это? — спросите вы. Да просто захотелось поделиться с общественностью некоторым опытом, полученным в процессе оптимизации vds под нужды одного общеизвестного блого-социального движка, который на обычном хостинге чувствует себя, мягко скажем, некомфортно.

Началось всё с того, что я ушёл от firstvds, где уже ничто не спасёт от тормозов. Ушел на ганди.нет, взял одну шару (1 share), которую дали на месяц бесплатно. Кстати, акция эта (This summer, your server is free!) вроде еще не закончилась.

😉 И начал на этой шаре проводить зверские эксперименты с установкой разного ПО. Тестировал результаты с помощью siege.

В итоге конфигурация из сабжа оказалась самая быстрая. Опытом её установки и настройки я и хотел бы с вами поделиться.

Перво-наперво обновляем дерево портов, если давно этого не делали. А если никогда не делали, то без этого дальше никуда:

NGINX

Устанавливаем последнюю стабильную версию nginx из портов: Добавляем строку 'nginx_enable=«YES»' в файл '/etc/rc.conf'.

Основные настройки nginx по-умолчанию, чтобы знать где искать:

  • Конфиг: /usr/local/etc/nginx/nginx.conf
  • Порты http / https: 80 / 443
  • Логи ошибок: /var/log/nginx-error.log
  • Логи доступа: /var/log/nginx-access.log
  • Коневая папка: /usr/local/www/nginx/

PHP-FPM

Сначала ставим сам php: Поддержка PHP в FreeBSD построена по модульному принципу, поэтому базовая установка обладает ограниченной функциональностью. Дополнительные расширения могут быть легко добавлены при помощи порта php5-extensions. Установим расширения, которые нам необходимы (например, mbstring, gd, mysql…

):
Далее ставим патч php-fpm. В портах freebsd этот патч отсутствует, но это не беда. Предлагаю всё-таки поставить его через порт, а не собрать из исходников. Скачиваем порт для FreeBSD с сайта php-fpm.

org и распаковываем в директорию портов по-умолчанию, откуда и устанавливаем:
Добавляем строку 'php_fpm_enable=”YES»' в файл '/etc/rc.conf'.

Дружим NGINX и PHP

Заходим в кофиг нашего http-сервера. По-умолчанию он находится здесь '/usr/local/etc/nginx/nginx.conf'. Стираем всё. Для начала конфиг будет такой с минимумом настроек:
Детальное описание настроек конфигурационного файла можно найти тут и тут, поэтому подробно останавливаться не буду.

Давеча вышла статья на Хабре про настройку nginx — рекомендую к просмотру. Далее редактируем конфигурацию php-fpm. По-дефолту он лежит тут '/usr/local/etc/php-fpm.conf'. Находим в файле строки: И меняем их на:
Тем самым указав пользователя и группу, под которыми будет крутиться php.

Подробное описание этих и других настроек php-fpm есть на официальном сайте на русском языке.

MEMCACHE

Ставим расширение memcache: После чего заходим в файл '/usr/local/etc/php/extensions.ini', где добавляем строчку:

EACCELERATOR

Устанавливаем: Аналогично memcache заходим в файл '/usr/local/etc/php/extensions.ini' и добавляем строчку: Создаем папку, где eAccelerator будет хранить свой кэш, задаем владельца www и устанавливаем права:

РЕЗУЛЬТАТ

Запускаем php и nginx: Пришло время проверить, получилось ли у нас что-нибудь. 🙂 Создаем файл '/usr/local/www/nginx/info.php' c содержимым «». И смотрим результат в браузере: httр://ваш-домен/info.

рhр — должно быть как-то так:

За рамки данной заметки вышли: установка mysql (ставится так же просто, как и всё остальное из портов) и куча различных настроек, читай тюнинга, всего этого великолепия. Но это огромный материал, который регулярно освещается на Хабре в той или иной мере по частям.

Есть ли смысл собирать тюнинг всей связки в одной статье — пока не знаю. Спасибо за внимание. Мой первый топик здесь за два года присутствия. 🙂

Источник: https://habr.com/post/67152/

FreeBSD установка nginx, mysql, php-fpm, memcache, eaccelerator

Недавно пришлось поднимать веб сервер, и не долго думая решил попробовать, как писал ранее поднять все это дело под nginx. В топку предисловие, погнали.
Сначала обновим дерево портов:

Устанавливаем nginx, можно поставить свежую версию (nginx-devel), а можно последнюю стабильную, что я и сделаю:

# cd /usr/ports/www/nginx

Зачастую необходимо отметить следующие пункты:

а если нужна поддержка SSL, то и

устанавливаем его:

Добавим его теперь в автозагрузку:

# echo 'nginx_enable=»YES»' >> /etc/rc.conf

Файл настроек: /usr/local/etc/nginx/nginx.conf Корневая папка сервера: /usr/local/www/nginx/

Настроим его позже, сейчас поставим мускул.

# cd /usr/ports/databases/mysql51-server/

Устанавливаем БД:

# /usr/local/bin/mysql_install_db

Выставляем права на папку с БД:

# chown -R mysql /var/db/mysql/

Запускаем мускул:

# /usr/local/etc/rc.d/mysql-server onestart

Устанавливаем пароль на рута:

# /usr/local/bin/mysqladmin -u root password 'пароль'

Ставим его в автозагрузку:

# echo 'mysql_enable=»YES»' >> /etc/rc.conf

Устанавливаем php:

# cd /usr/ports/lang/php52

Ставим необходимые нам расширения:

# cd /usr/ports/lang/php52-extensions/

Установка PHP-FPM:

# fetch http://ru2.php.net/get/php-5.2.14.tar.gz/from/ru.php.net/mirror# tar -xzf php-5.2.14.tar.gz# fetch http://php-fpm.org/downloads/php-5.2.14-fpm-0.5.14.diff.gz# gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1# ./configure —enable-fastcgi —enable-fpm# cp /tmp/php-5.2.10/sapi/cgi/fpm/php-fpm /usr/local/etc/rc.d/# chmod +x /usr/local/etc/rc.d/php-fpm

Проверим версию php после установки:

PHP 5.2.14 (cli) (built: Feb  1 2011 22:53:19)Copyright (c) 1997-2010 The PHP GroupZend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

Если «built» сегодняшний, то всё ок.
Как всегда, добавляем его в автозагрузку:

# echo 'php_fpm_enable=»YES»' >> /etc/rc.conf

Добавляем поддержку php в nginx, для этого открываем файл /usr/local/etc/nginx/nginx.conf, чистим его, и добавлем следующие строки:

default_type application/octet-stream;log_format main      '$remote_addr — $remote_user [$time_local] ''»$request» $status $bytes_sent ''»$http_referer» «$http_user_agent» 'fastcgi_intercept_errors    on;root /usr/local/www/nginx;index index.php index.html index.htm;location ~* .(jpg|jpeg|gif|png|ico|css|zip|js|swf)$ {root /usr/local/www/nginx;error_page 500 502 503 504 /50x.html;root /usr/local/www/nginx-dist;fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx$fastcgi_script_name;

Далее редактируем конфигурацию php-fpm. По-дефолту он лежит тут ‘/usr/local/etc/php-fpm.conf’. Находим в файле строки:

<!–- <value name=”user”>nobody</value> -–><!–- <value name=”group”>nobody</value> -–>

И меняем их на:

<value name=”user”>www</value><value name=”group”>www</value>

Тем самым указав пользователя и группу, под которыми будет крутиться php. MEMCACHE

Ставим расширение memcache:

# cd /usr/ports/databases/pecl-memcache

После чего заходим в файл ‘/usr/local/etc/php/extensions.ini’, где добавляем строчку:

EACCELERATOR
Устанавливаем:

# cd /usr/ports/www/eaccelerator

Аналогично memcache заходим в файл ‘/usr/local/etc/php/extensions.ini’ и добавляем строчку:

extension=eaccelerator.so

Создаем папку, где eAccelerator будет хранить свой кэш, задаем владельца www и устанавливаем права:

# mkdir /tmp/eaccelerator# chown www /tmp/eaccelerator# chmod 0700 /tmp/eaccelerator

Настраиваем eAccelerator:

ee /usr/local/etc/php.ini
[php]extension="eaccelerator.so"eaccelerator.shm_size="16"; Путь до каталога файлов кешаeaccelerator.cache_dir="/tmp/eaccelerator"; Переключатель модуля (1 — вкл и 0 — выкл)eaccelerator.enable="1"; Переключатель оптимизатора  (1 — вкл и 0 — выкл)eaccelerator.optimizer="1"; Добавляет отладочную информацию в лог (1 — вкл и 0 — выкл)eaccelerator.debug="0"eaccelerator.log_file = "/var/log/eaccelerator_log"; Проверять время модификации файлов кеша для перекомпиляции оных (1 — вкл и 0 — выкл)eaccelerator.check_mtime="1"; Фильтр расширений файлов которых надо кешировать. Например, "*.php *.phtml".eaccelerator.filter=""; Размер выделяемой памяти, в байтах. Допустимо вводить в формате 10240, 10K, 1M и т.д. При 0 — безлимитeaccelerator.shm_max="0"eaccelerator.shm_ttl="120"; Период удаления старых данных из памяти, сек (при 0 не удаляет)eaccelerator.shm_prune_period="0"; Использовать для кеша только память. При 0 используется диск и памятьeaccelerator.shm_only="0"; Переключатель компресии (1 — вкл и 0 — выкл)eaccelerator.compress="1"eaccelerator.compress_level="9"# /usr/local/etc/rc.d/php-fpm start# /usr/local/etc/rc.d/nginx start

Проверим что мы из этого всего получили, создадим файлик /usr/local/www/nginx/test.php со следующим содержимым:

[php]<!—?php phpinfo(); ?—>и пробуем открыть в браузере по адресу:http://IP-Servera/test.php

Если все прошло успешно то вы увидите описание вашего пхп, модулей и прочего

Источник: https://i-notes.org/freebsd-nginx/

Ссылка на основную публикацию