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

Ответить
Woin
Сообщения: 436
Зарегистрирован: 28.12.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

Ответить