FreeBSD: установка и настройка NGINX + php-fpm

Автор: | 09/23/2012
 

В данной статье описана самая базовая установка NGINX + php-fpm.

Установка производится на FreeBSD 9.0.

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

# cd /usr/ports/www/nginx

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

# make config

# 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

И устанавливаем:

# make install clean

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

# 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 -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

Запускаем:

# 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 можно установить во врем конфигурирования РНР.

Для более ранних версий — его надо скачать с оф. сайта проекта тут>>>.

Описание установки для старых версий, к примеру — 5.2.

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

# cd /usr/ports/lang

Скачиваем архив:

# 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% of   10 kB 3133 kBps

Разирхивируем его:

# tar -zxf php-5.2.12-fpm-0.6.tar.gz

И выполняем установку:

# cd php5-fpm
make install clean

Вернемся к нашей установке.

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

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

Выбираем такие опции:

Редактируем файл конфигурации php-fpm:

# 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

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

# touch /var/log/php-fpm-error.log
# touch /var/log/php-fpm-slow.log

Проверяем:

# php-fpm -t
[23-Sep-2012 19:14:08] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful

Запускаем:

# /usr/local/etc/rc.d/php-fpm onestart
Starting php_fpm.

Проверяем:

# service php-fpm onestatus
php_fpm is running as pid 61317.

Создаем файл info.php с содержимым:

<?php
echo phpinfo();
?>

И сохраняем его в каталог, указанный в конфигурации NGINX:

root /usr/local/www/users

И проверяем, заходя на страницу http://YOUR_IP/info.php

Если все работает — добавляем в файл /etc/rc.conf две строки:

nginx_enable=»YES»
php_fpm_enable=»YES»

Далее — выполняем установку расширений PHP и сервера MySQL.

Т.к. никаких отличий нет, то об это можно прочитать тут>>>.

Ссылки по теме:

http://jhukov.blogspot.com
http://blog.magwai.ru
http://wiki.firstvds.ru
http://habrahabr.ru
http://nginx.org
http://php-fpm.org
http://habrahabr.ru