Russian English German Ukrainian

Компьютерная помощь

(066) 72-00-654     (098) 44-74-068

г. Днепр

ж/м Левобережный-3

Nginx: установка, настройка в Debian/Ubuntu

debian ubuntu

Nginx — простой, быстрый и надёжный HTTP-сервер, не перегруженный функциями. Применение nginx целесообразно прежде всего для статических веб-сайтов и как прокси-сервера перед динамическими сайтами.

 Установка Nginx

Для начала добавим репозиторий проекта Nginx:

sudo nano /etc/apt/sources.list

Добавим туда, официальное зеркало Nginx, то в каком виде представлен данный пакет, отражает видение его разработчиков:

deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx

Теперь нам нужно скачать GPG ключ:

wget http://nginx.org/keys/nginx_signing.key

Установим GPG ключ:

sudo apt-key add nginx_signing.key

Обновим список пакетов:

sudo aptitude update

Установим Nginx:

sudo aptitude install nginx

 

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

PHP-FPM — патч к PHP, предоставляющие альтернативный интерфейс FastCGI. Обычно используется с nginx в проектах с высокими нагрузками или дефицитом ресурсов.

sudo aptitude install php5-cli php5-common php5-mysql php5-suhosin php5-gd php5-fpm php5-cgi php-pear php5-mcrypt -y

Нам необходимо устранить уязвимость PHP:

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

Находим строку:

;cgi.fix_pathinfo = 1

Приводим ее к виду:

cgi.fix_pathinfo = 0

Далее, необходимо отрыть для редактирования файл /etc/php5/fpm/pool.d/www.conf:

sudo nano /etc/php5/fpm/pool.d/www.conf

найти строчку с параметров security.limit_extensions и привести её к виду:

security.limit_extensions = .php .php3 .php4 .php5

Сохраняем изменения и перезапустим PHP-FPM:

sudo /etc/init.d/php5-fpm restart

 

Создадим пользователя для работы с виртуальным хостом

Чтобы не заморачиваться, назовем его example. При создании пользователя, отключим ему доступ к шеллу, так безопаснее.

sudo useradd example -b /home/ -m -U -s /bin/false

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

Придумаем для пользователя example пароль:

sudo passwd example

Создадим необходимые, для работы WEB сайта, директории:

mkdir -p -m 755 /home/example/www
mkdir -p -m 754 /home/example/logs

Предоставляем пользователю example права на них:

sudo chown -R example: /home/example/www/
sudo chown -R example: /home/example/logs/

Предоставим Nginx доступ в домашнюю директорию пользователя example, добавив пользователя www-data в группу example

sudo usermod -a -G example www-data

 

Создадим виртуальный хост Nginx

Настаиваем первый виртуальный хост Nginx, назовем его site.com:

sudo nano /etc/nginx/conf.d/site.com.conf

С содержимым:
(Здесь только основные настройки, чтобы работало):

server {
       listen   80;
       root /var/www/site.com;
       access_log /var/log/site.access.log; # расположение логов данного хоста
       server_name site.com www.site.com;
       location / {
              index index.php index.html index.htm;
            }
       location ~ \.php$ {
              fastcgi_pass 127.0.0.1:9000;
              fastcgi_index index.php;
              fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
              include        fastcgi_params;
            }
# кеширование картинок
       location ~* \.(jpg|jpeg|gif|png|swf|tiff|swf|flv)$ {
              expires 4M;
              add_header Cache-Control public;
            }
# сжатие js, css скриптов                
       location ~* \.(css|js|ico) {
              gzip_static on;
              gzip_disable Firefox/([0-2]\.|3\.0);
              gzip_disable Chrome/2;
              gzip_disable Safari;
              expires 2M;
              add_header Cache-Control private;
            }
# запретить обращение к серверу по IP-адресу
       if ($host !~ ^(site.com|www.site.com)$ ) {
              return 444;
            }
# защищаем файлы .htpasswd и .htaccess
       location ~ /\.ht {
              deny all;
            }
# пароль на папку administrator и запрет на все IP кроме указанных
       location /administrator {
              index index.php index.html index.htm;
              auth_basic "Restricted";
              auth_basic_user_file /var/www/.htpasswd; # расположение файла с паролем
              allow 159.224.201.212;
              allow 192.168.168.0/24;
              deny all;
            }
    }

Внимание!
Все виртуальные хосты должны иметь в названии расширение .conf, иначе виртуальный хост не будет загружен. Чтобы это исправить, можно зайти в:

sudo nano /etc/nginx/nginx.conf

найти строку:

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

и привести к такому виду, с каким вы привыкли работать или тем что вам удобнее, лично я рекомендую оставлять все как есть!

Создадим тестовый файл, чтобы проверить работоспособность PHP5:

sudo nano /home/example/www/test.php

С содержимым:

<?php
phpinfo();
?>

Перезапустим Nginx, чтобы изменения вступили в силу:

sudo /etc/init.d/nginx restart

Переходим по тестовому адресу httр://example.org/test.php

Наш сервер уже работоспособен, осталось добавить сопутствующие приложения MySQL и memcached.

 

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

sudo aptitude install mysql-server mysql-client mysql-common

Придумываем пароль для пользователя root (Администратор сервера баз данных).

  • Сборка ПК для дома и офиса

  • Бесплатная диагностика

  • Гарантия

  • Самые низкие цены