Как установить Nginx, MySQL и PHP-FPM (FEMP) на сервер FreeBSD 10.1

Install-Nginx-PHP-FPM-Caching-MySQL-on-Ubuntu-12.04В этой заметке я предлагаю перевод лучшей, я считаю, инструкции по быстрой установке и настройке Nginx, MySQL и PHP-FPM на сервер под упралением FreeBSD 10.1

Введение

Nginx, MySQL и PHP-FPM могут в связке создать очень быстрый и мощный веб-сервер. Эти три вещи могут быть быстро установлены и сконфигурированы на сервере FreeBSD и назывывается такой набор – FEMP stack. Этот набор обладает рядом приимуществ.

Установка компонентов

Для начала установки мы должны использовать систему установки пакетов FreeBSD. Команда “install” установит все необходимые перечисленные пакеты:

sudo pkg install nginx mysql56-server php56 php56-mysql

Подтверждаем установку пакетов нажав “Y”, затем Enter.

Сделаем рехэш:

rehash

После окончания установки пакетов можно приступать к настройке.

Включаем все компоненты

In the last section, we downloaded three separate services that will need to run on our server.

Любые установленные службы FreeBSD нуждаются в разрешении запуска. Посмотреть, что нам нужно разрешить можно следующей командой:

grep rcvar /usr/local/etc/rc.d/*

Получаем что-то вроде этого:

/usr/local/etc/rc.d/avahi-daemon:rcvar=avahi_daemon_enable
/usr/local/etc/rc.d/avahi-dnsconfd:rcvar=avahi_dnsconfd_enable
/usr/local/etc/rc.d/dbus:rcvar=dbus_enable
/usr/local/etc/rc.d/mysql-server:rcvar=mysql_enable
/usr/local/etc/rc.d/nginx:rcvar=nginx_enable
/usr/local/etc/rc.d/php-fpm:rcvar=php_fpm_enable
/usr/local/etc/rc.d/rsyncd:rcvar=rsyncd_enable

И чтобы разрешить наши службы, нам необходимо отредактировать файл /etc/rc.conf (необходимо иметь доступ root):

sudo vi /etc/rc.conf

И добавим в него следующие строки:

mysql_enable="YES"
nginx_enable="YES"
php_fpm_enable="YES"

Сохраняем и закрываем файл.

Настроим PHP

Следующий шаг – настройка PHP-FPM службы.

Перейдем в каталог /usr/local/etc:

cd /usr/local/etc

И отредактируем конфиг:

sudo vi php-fpm.conf

Внутри мы видим много настроек, но нам надо изменить всего несколько. Сначала настроим на исколькование Unix сокета вместо использования порта. Это более безопасный вариант работы PHP-FPM.

Ищем такую строку:

listen = 127.0.0.1:9000

И меняем на такую:

listen = /var/run/php-fpm.sock

далее нам нужно настроить права доступа к директории веб-сервера. Ищем следующие строки:

;listen.owner = www
;listen.group = www
;listen.mode = 0660

Раскомментируем их:

listen.owner = www
listen.group = www
listen.mode = 0660

Сохраняем и закрываем файл.

Далее нам нужно создать файл php.ini, скопируем его из примера:

sudo cp php.ini-production php.ini

Открываем и редактируем:

sudo vi php.ini

Внутри нам нужно найти параметр cgi.fix_pathinfo, раскомментировать его и установить значание “0”.

Получится вот так:

cgi.fix_pathinfo=0

Сохраняем и закрываем файл.

Теперь мы имеем настроенный PHP-FPM и мы можем его запустить:

sudo service php-fpm start

Переходим к настройке MySQL.

Настройка MySQL

Перед настройкой MySQL нам нужно его запустить:

sudo service mysql-server start

После того, как MySQL сервер запущен, мы вызываем mysql_secure_installation, и настраиваем по шагам:

sudo mysql_secure_installation
. . .

Enter current password for root (enter for none):

Скрип спрашиваем MySQL root пароль. И так как у нас его еще нет, нажимаем “ENTER”.

Set root password? [Y/n]

Далее нам нужно указать каким будет пароль MySQL пользователя root. Жмем “ENTER” чтобы подтвердить. Устанавливаем пароль, подтверждаем.

Далее будут другие настройки безопасности. На начальном этапе рекомендуется отвечать утвердительно просто нажимая “ENTER”.

Перезагрузим сервер MySQL для применения настроек:

sudo service mysql-server restart

Наш сервер MySQL готов к использованию.

Настройка Nginx

Наша следующая задача – настроить Nginx. Для начала запустим веб-сервер:

sudo service nginx start

Перейдем в директорию с конфигурациями:

cd /usr/local/etc/nginx

Откроем конфиг:

sudo vi nginx.conf

Внутри кое-что поменяем. Расскоментируем (если параметр закомментирован) параметр “user” и отредактируем до следующего вида:

user www;

Выставим количество воркеров в соответствии с количеством ядер в процессоре вашего сервера. (Чтобы узнать количество ядер пишем в консоли sysctl hw.ncpu и жмем Enter):

worker_processes 4;

Далее настроим логирование ошибок в параметре error_log:

error_log /var/log/nginx/error.log info;

Укажем путь к логу доступа:

access_log /var/log/nginx/access.log;

В блоке server мы должны изменить директиву server_name на имя сервера или его IP, а так же можем указать другой порт:

server {
    listen          80;
    server_name     example.com www.example.com;

    . . .

Укажем путь к корневой директории веб-сервера и index файлы. Можно указать специфический путь, напрмер, к странице с ошибкой 404:

server {

    . . .

    root /usr/local/www/nginx;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    . . .

Нам осталось добавить директивы, чтобы работал php.

Приведем соответствующий блок к следующему виду:

server {

    . . .

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include fastcgi_params;
    }

Итак. Вся конфигурация Nginx без комментариев будет выглядеть как-то так:

user  www;
worker_processes  4;
error_log /var/log/nginx/error.log info;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    access_log /var/log/nginx/access.log;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  example.com www.example.com;
        root /usr/local/www/nginx;
        index index.php index.html index.htm;

        location / {
            try_files $uri $uri/ =404;
        }

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

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                include fastcgi_params;
        }
    }
}

Сохраняем и закрываем конфиг.

Создадим директорию для логирования:

sudo mkdir -p /var/log/nginx

Дале создадим пустые файлы в ней:

sudo touch /var/log/nginx/access.log
sudo touch /var/log/nginx/error.log

Теперь мы готовы перейти к корневой директории нашего веб-сервера. Удалим ссылку и создадим нормальную директорию:

sudo rm /usr/local/www/nginx
sudo mkdir /usr/local/www/nginx

Скопируем в нее наш главный файл index.html:

sudo cp /usr/local/www/nginx-dist/index.html /usr/local/www/nginx

Для проверки работы php создадим файл info.php:

sudo vi /usr/local/www/nginx/info.php

Поместим в него код, котрый покажет нам информацию о компонентах PHP:

<?php phpinfo(); ?>

Сохраняем и закрываем.

Проверяем конфиг на ошибки командой:

sudo 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

Тогда смотрим логи.

Если же все хорошо, перезагружаем Nginx для применения новой конфигурации:

sudo service nginx restart

Тестируем сервер

Итак, все готово! Перейдем в браузере на наш сервер (можно по имени, можно по IP адресу):

http://example.com

И видим содержимое страницы index.html:

default_index

Это говорит о том, что наш веб-сервер работает.

Далее проверим работу модуля PHP добавив к адресу /info.php:

http://example.com/info.php

Если все работает, мы увидим что-то подобное:

php_info

Поздравляю, мы только что настроили FEMP веб-сервер на FreeBSD.

Удалим ненужный файл info.php:

sudo rm /usr/local/www/nginx/info.php

Послесловие

Теперь у нас есть отличный веб-сервер на базе Nginx с поддержкой PHP контента и базами данных MySQL. Связка этих трех компонентов показывает отличные характеристики и пока лидирует среди конкурентов.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2023

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!