Блог Синявского
  • Разделы
  • Метки
  • Все статьи

Nginx php-fpm

1

Настройка Debian (Ubuntu) сервера для проекта на PHP, с использованием frontend сервера Nginx и backend php-fpm. Nginx будет отвечать за статику, а так же передавать запросы динамического контента в php-fpm. Данная связка отлично работает, экономит память, по сравнению с Apache. Недостатки в работе не замечены.

Подготовка сервера

Установим необходимый софт:

$ sudo su
# apt-get install nginx php5-fpm mysql-server -y

Корневая директория сайта: /usr/local/www/<somesite>

В корневой директории в том, числе статические файлы, /usr/local/www/<somesite>/static/ доступные по ссылке вида http://www.<somesite>.com/static/<filename>

Директория логов /var/log/nginx/<somesite>

Отредактируем конфигурацию php-fpm, раскомментируем директиву cgi.fix_pathinfo=1

# nano /etc/php5/fpm/php.ini

;cgi.fix_pathinfo=1
cgi.fix_pathinfo=1

Перезагрузим php5-fpm

# service php5-fpm restart

Настройка Nginx

Создадим конфигурацию нашего виртуального хоста. Для этого в директории /etc/nginx/sites-available созадим файл с названием нашего проекта:

# cd /etc/nginx/sites-available
# nano <somesite>

server {
    # без www редирект на www
    listen 80;
    server_name <somesite>.ru;
    rewrite ^ http://www.<somesite>.com$request_uri? permanent; #301 redirect
}

server {
    listen       80;
    server_name  www.<somesite>.com;
    access_log  /var/log/nginx/<somesite>/access.log;
    error_log /var/log/nginx/<somesite>/error.log info;

    root /usr/local/www/<somesite>;

    index index.php;

    # все index редирект на доменное имя
    if ($request_uri = /index.php) {
        rewrite ^ http://$host? permanent;
    }

    if ($request_uri = /index.htm) {
        rewrite ^ http://$host? permanent;
    }

    if ($request_uri = /index.html) {
        rewrite ^ http://$host? permanent;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
    }

    # статика сайта
    location /static/ {
        root /usr/local/www/<somesite>/static/;
        gzip  on;
        gzip_comp_level 6;
        gzip_proxied any;
        gzip_types text/css application/x-javascript text/javascript image/png image/svg+xml;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/local/www/nginx-dist;
    }
}

Перезагрузим nginx

# nginx -t
# service nginx restart


  • ← сюда
  • туда →

comments powered by Disqus

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

16.11.2014

Обновление

05.05.2022

Категории

nginx

Тэги

  • nginx 11
  • php-fpm 2

Всегда на связи

  • Блог Синявского - Ничего не переносить на завтра, это тоже проблема с прокастинацией?
  • © Алексей Синявский, по лицензии CC BY-SA если не указано иное.
  • С использованием Pelican. Тема: Elegant от Talha Mansoor