Настройка WEB сервера под управлением ОС Debian (включает: Nginx, php-fpm, MySQL

Woin
Администратор
Сообщения: 440
Зарегистрирован: 28 дек 2009
Установка основных приложений (Nginx,php-fpm,mysql)

Подключаем репозитории Nginx и php-fpm
Переходим в режим суперпользователя (root):

Редактируем список репозиториев:

Код: Выделить всё

nano /etc/apt/sources.list

Добавляем в него следующие адреса серверов:

Код: Выделить всё

deb http://packages.dotdeb.org squeeze all
deb http://ftp.debian.org.ua/debian-dou/ squeeze main

Теперь нам необходимо добавить GPG ключи репозиториев в систему:

Код: Выделить всё

wget -q http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add -
wget -q http://ftp.debian.org.ua/debian-dou/archive.key -O- | apt-key add -

Для справки: Почему выбраны именно эти репозитории?
Ответ: В dotdeb.org лежит пакет PHP-FPM, там еще есть пакет Nginx, но его работа мне не понравилась(глючит).
ftp.debian.org.ua лежит нормально собранный Nginx.
Обновляем список пакетов и всю систему:

Код: Выделить всё

aptitude update && aptitude upgrade



Устанавливаем PHP-FPM

Код: Выделить всё

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

Закрываем уязвимости в PHP
Переходим по тестовому адресу httр://example.org/test.php
Получаем то что написано на экране, нас интересует строка Server API ( на скриншоте обведено красным) там указывается, кто у нас обрабатывает скрипты PHP.
В данный момент существует уязвимость, что любой пользователь может загрузить на сервер файл и выполнить его с правами под которыми работает PHP, чтобы это исправить, необходимо отредактировать php.ini

Код: Выделить всё

nano /etc/php5/fpm/php.ini

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

Код: Выделить всё

;cgi.fix_pathinfo = 1

Снимаем с нее комментарий, чтобы выглядело:

Код: Выделить всё

cgi.fix_pathinfo = 0

Если этого не сделать, то любой желающий, залив на сервере файл, под видом картинки, может выполнять его как скрипт, со всеми вытекающими последствиями.

Остальные настройки работы PHP-FPM находятся по пути /etc/php5/fpm/pool.d/www.comf которые необходимо изменить в соответствии с наличием системных ресурсов. Описать все варианты довольно сложно и зачастую, необходимо подбирать эксперементальным путем. (хотя рекомендаций в сети хватает, даже на сайтах хостеров)

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

Код: Выделить всё

aptitude install nginx -y


(На момент написания, там лежала версия Nginx 1.0.10-1)

Создадим первый виртуальны хост, назовем его example.org

Код: Выделить всё

nano /etc/nginx/sites-available/example.org

Код: Выделить всё

server {
        listen   80;
        root /home/example/www;
     
        access_log  /home/example/logs/nginx.access.log; #расположение логов данного хоста

        server_name example.org www.example.org;

        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;
        }
}


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

Создадим символическую ссылку:

Код: Выделить всё

ln -s /etc/nginx/sites-available/example.org /etc/nginx/sites-enabled/

Создаем нового пользователя:

Код: Выделить всё

useradd example -b /home/ -m -U

Добавим ему пароль:

Код: Выделить всё

passwd example

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

Код: Выделить всё

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

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

Код: Выделить всё

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

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

Код: Выделить всё

usermod -a -G example www-data

Создадим тестовый файл:

Код: Выделить всё

nano /home/example/www/test.php

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

Код: Выделить всё

<?php
phpinfo();
?>

Теперь, нам необходимо перезагрузить Nginx:

Код: Выделить всё

/etc/init.d/nginx restart

api.png


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

Установим необходимые пакеты:

Код: Выделить всё

aptitude install mysql-server mysql-client mysql-common libmysqlclient18



На этом основную часть можно завершить. Если дойти до этого места, то сервер уже будет работоспособен!
Но ему можно добавить, немного дополнительных функций.

Установка Xcache

Код: Выделить всё

aptitude install php5-xcache -y

После завершения установки, необходимо перезапустить PHP-FPM

Код: Выделить всё

/etc/init.d/php-fpm restart

Для того чтобы удостовериться в подключении модуля, переходим по адресу httр://example.org/test.php
Находим пункт:
xcache.png


Установка Memcached

Код: Выделить всё

aptitude install memcached php5-memcached

необходимо перезапутить PHP-FPM

Код: Выделить всё

/etc/init.d/php-fpm restart


Для того чтобы удостовериться в подключении модуля, переходим по адресу httр://example.org/test.php
находим пункт memcached, как на скриншоте ниже:
memcached.png

Управление приложениями:

Код: Выделить всё

/etc/init.d/nginx stop | start| restart

/etc/init.d/php-fpm stop | start| restart

/etc/init.d/mysql stop | start| restart

/etc/init.d/memcached stop | start| restart


Источник http://howitmake.ru/blog/debian/62.html

Вернуться в «Linux / Unix / ...»