В этой статье я расскажу как установить на Raspberry Pi 3 полноценный WEB сервер на Nginx с php-fpm и MySQL (MariaDB) для того, чтоб в конечном счете установить WordPress на данную платформу. Операционную систему я выбрал Rasbian Mini, т.к. весь необходимый софт я накачу сам.

И так начнем.

Установка веб-сервера Nginx

Nginx – это популярный легковесный web-сервер.

С чего же начать, ну как всегда с обновления нашей ОС.

sudo apt update && sudo apt dist-upgrade -y

Вот теперь можем накатить пакет nginx на нашу систему.

Установка nginx

sudo apt install nginx

Сразу после установка Nginx должен начать работать. Проверим командой:

sudo service nginx status

Если не запущен:

sudo service nginx start

Для проверки работоспособности web-сервера попробуем зайти по ip-адресу нашей Raspberry.

По умолчанию тестовая страница храниться в каталоге

/var/www/html

Настройка Nginx

Итак, мы установили web-сервер. Теперь его нужно немного настроить. Из коробки Nginx довольно хорошо оптимизирован, однако есть несколько важных настроек, изменив которые можно улучшить производительность.

Для начала узнаем количество ядер в нашей системе:

cat /proc/cpuinfo | grep processor
processor    : 0
processor : 1
processor : 2
processor : 3

По данному выводу видно что в системе процессор с четырьмя ядрами на борту.

ulimit -n

данная команда выведет максимальное количество одновременно обрабатываемых соединений.

1024

Вот теперь открываем конфигурационный файл nginx:

sudo nano /etc/nginx/nginx.conf

Внесите следующие изменения для повышения потенциальной производительности. Устанавливаем значение worker_processes по кол-ву ядер в системе:

worker_processes       4; 

А также меняем директиву worker_connections :

worker_connections     1024;

Снимаем комментарий со строки со значением

multi_accept on;

данный параметр информирует nginx о принятии максимального количества соединений за один раз.

Снимаем комментарий с пункт:

server_tokens off;

данный параметр отключить вывод номера версии Nginx в сообщениях об ошибках и заголовках ответов, что в свою очередь улучшает безопасность.

Буфер обмена

Размер буфера – следующий невероятно важный аспект, который требует тонкой настройки. Если размер буфера слишком мал, то Nginx придется писать во временный файл, из-за чего диску придется постоянно считывать и записывать. Прежде чем принимать какое-либо решение, нужно учесть некоторые директивы.

client_body_buffer_size        10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;

client_body_buffer_size: данная директива обрабатывает размер буфера клиента, то есть любые POST-запросы, отправленные на Nginx.

client_header_buffer_size: эта директива подобна предыдущей, только вместо размера буфера она обрабатывает размер заголовка клиента. Для всех целей 1K, как правило, достаточно.

client_max_body_size: максимально допустимый размер запроса клиента. Если максимальный размер превышен, то Nginx выведет ошибку 413 (Request Entity Too Large).

large_client_header_buffers: максимальное количество и размер буферов больших заголовков клиентов.

Время ожидания

Лимит времени ожидания может также резко повысить производительность.

client_body_timeout             12; 
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;

client_body_timeout и client_header_timeout: отвечают за интервал времени, на протяжении которого сервер будет ждать тело запроса или заголовок запроса от клиента. Если ни тело или заголовок не были получены, сервер выдаст ошибку 408 (Request time out).

keepalive_timeout: устанавливает лимит времени ожидания Keep-Alive соединения с клиентом. Проще говоря, Nginx закроет соединения с клиентом по истечении этого периода времени.

send_timeout: ограничивает время ответа клиенту. Она устанавливается не на всю передачу ответа, а только на две операции чтения; если по истечении этого времени клиент ничего не примет, то Nginx прервет соединение.

Gzip сжатие

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

gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

gzip_comp_level: установим значение 5. Данный уровень сжатия приблизительно на 75% уменьшает размер файлов ASCII любого типа без существенного потребления процессора.

gzip_min_length 256: файл, не превышающий 256 байт, не будет разархивирован.

Проверка nginx

Для проверки наших изменений набираем следующую команду

sudo nginx -t

Если Nginx не ругается на ошибки, перегружаем его:

sudo service nginx restart

Установка php-fpm

Для установки php-fpm выполним следующую команду:

sudo apt install php php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-zip php7.0-mcrypt php7.0-bz2 php7.0-cgi

Включить выполнение php в nginx

Отредактируем конфигурационный файл.

sudo nano /etc/nginx/sites-available/default

Найдем строку

index index.html index.htm index.nginx-debian.html;

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

index index.php index.html index.htm;

Пролистаем вниз и найдем такую секцию:

# pass PHP scripts to FastCGI server     #

Отредактируем, убрав кое-где знак #, чтобы получилось вот так:

    # pass PHP scripts to FastCGI server     #     
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets): #
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# With php-cgi (or other tcp sockets): #
# fastcgi_pass 127.0.0.1:9000; }

и перезапустим наш web-сервер:

sudo service nginx reload

Тест PHP

Проверим, работает ли php. Для этого создадим файл  index.php

sudo nano /var/www/html/index.php

и добавим в него такой текст:

<?php  phpinfo(); ?>

Сохраните файл и зайдите интернет-браузером на сайт. Если все хорошо, то отобразятся логотип, версия и текущие настройки PHP.

Настройка PHP

Открываем конфигурационный файл php

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

Необходимо найти строку upload_max_filesize и установить значение, одинаковое значению client_max_body_size в файле nginx.conf

upload_max_filesize = 8m

Также необходимо найти параметр  cgi.fix_pathinfo и поменять его значение с ‘1’ на ‘0’.

cgi.fix_pathinfo=0

И в завершении, для корректного отображения времени установим свой часовой пояс:

date.timezone = Europe/Moscow

Нажмите Control-X и Y для сохранения конфигурации.

MySQL (MariaDB)

Установка MySQL (MariaDB)

Если вы знакомы с установкой MySQL, то вы найдете, что эта процедура для MariaDB практически не отличается.

sudo apt-get install mysql-server mysql-client

Настройка MySQL (MariaDB)

Теперь нам нужно усилить параметры безопасности MySQL (MariaDB).

sudo mysql_secure_installation

Установка phpmyadmin (adminer)

Для установки программ управления базами данных при помощи WEB интерфейсов необходимо набрать следующую команду:

sudo apt install phpmyadmin

при установке не ставим галочки на вопрос для какого сервера требуется настроить наш phpmyadmin

Далее, после установки phpmyadmin давайте скачаем adminer:

wget https://github.com/vrana/adminer/releases/download/v4.7.1/adminer-4.7.1-mysql.php

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

sudo nano /etc/nginx/conf.d/phpmyadmin.inc

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


location /phpmyadmin {
alias /usr/share/phpmyadmin/;
location ~ /(libraries|setup) {
return 404;
}
location ~ ^/phpmyadmin/(.*\.php)$ {
alias /usr/share/phpmyadmin/$1;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}

Также добавим в конфигурационный файл домена следующую строчку:

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

Данную секцию добавьте перед последней закрывающейся }

Теперь можно перезагрузить nginx

sudo service nginx restart

И зайти по IP адресу типа: 10.5.5.20/phpmyadmin. Замените 10.5.5.20 на ваш IP

вводим пользователя phpmyadmin и ваш пароль на этапе установки phpmyadmin и подключаемся к БД mysql

Альтернативным методом станет adminer. Для начала переименуем скрипт и создадим необходимую директорию

sudo mkdir /var/www/html/adminer
sudo cp ~/adminer-4.7.1-mysql.php /var/www/html/adminer/index.php

Подключаемся к БД при помощи adminer. В браузере набираем 10.5.5.20/adminer

Ну а дальше по аналогии с phpmyadmin.

Вот и все!

[endtxt]

RSS

Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

5 3 голоса
Рейтинг статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять