В этой статье я расскажу как установить Nginx, php5-fpm и MariaDB для того, чтоб в конечном счете установить WordPress на платформу Raspberry Pi c операционной системой Raspbian.
Nginx – это популярный легковесный web-сервер, PHP-FPM (FastCGI Process Manager) – это альтернативное PHP FastCGI приложение с некоторым улучшениями, которые пригодятся для сайтов любых размеров. MariaDB – это одна из самых популярных серверных баз данных от разработчика оригинальной версии MySQL.
У нас уже есть установленная операционная система Rasbian. Для начала обновим ee:
sudo apt update && sudo apt upgrade -y
Установка Nginx.
Как и Apache, Nginx может как отдавать html-файлы через http, так и генерировать динамические страницы с помощью, например, PHP. Сначала установим Nginx выполнив в терминале команду:
sudo apt install nginx
Сразу после установка Nginx должен начать работать. Проверим командой:
sudo service nginx status
Если не запущен:
sudo service nginx start
Для проверки работоспособности web-сервера попробуем зайти по ip-адресу нашей Raspberry.
По умолчанию тестовая страница храниться в каталоге /var/www/html
Настройка Nginx
Итак, мы установили web-сервер. Теперь его нужно немного настроить. Из коробки Nginx довольно хорошо оптимизирован, однако есть несколько важных настроек, , изменив которые можно улучшить производительность.
sudo nano /etc/nginx/nginx.conf
Внесите следующие изменения для повышения потенциальной производительности:
1) Раскомментируйте пункт multi_accept и установите значение on, который информирует nginx о принятии максимального количества соединений за один раз.
2) Измените параметр keepalive_timeout с 65 на 5. Значение keepalive_timeout определяет, сколько секунд соединение с клиентом должно оставаться открытым. Его следует уменьшить, чтобы холостые соединения можно было закрыть раньше.
3) Раскомментируйте пункт server_tokens и убедитесь, что он в положении off. Это отключит вывод номера версии Nginx в сообщениях об ошибках и заголовках ответов, что в свою очередь улучшает безопасность.
4) Строкой ниже server_tokens, добавьте параметр client_max_body_size и установите значение 16m.
Несмотря на то, что повсюду в мире распространился широкополосный интернет, не следует забывать о мобильных устройствах, где скорость подчас оставляет желать лучшего. Поэтому отредактируем несколько строк, посвященных сжатию отдаваемой информации.
5) Раскомментируем gzip_vary on
6) Раскомментируем gzip_proxied и установим значение any
7) Раскомментируем gzip_comp_level и установим значение 5. Данный уровень сжатия приблизительно на 75% уменьшает размер файлов ASCII любого типа без существенного потребления процессора.
8) Раскомментируйте gzip_http_version 1.1 Это позволит включить сжатие как для HTTP / 1.0, так и для HTTP / 1.1.
9) Добавим строку gzip_min_length 256; перед пунктом gzip_types. Это гарантирует, что файл, не превышающий 256 байт, не будет разархивирован. Значение по умолчанию установлено на 20 байт, это слишком мало и может привести к лишним накладным расходам на процессор.
10) Чтобы избежать сбоев теста Google PageSpeed на некоторых типах файлов, заменим директиву gzip_types:
gzip_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/svg+xml image/x-icon text/css text/plain text/x-component;
Это гарантирует, что в дополнение к типу файла HTML будут также сжиматься JavaScript, CSS и даже SVG.
Сохраните изменения, нажав Control-X, а затем Y на терминале. Чтобы убедиться, что ошибок нет, проверьте конфигурационный файл с помощью следующей команды:
sudo nginx -t
Если Nginx не ругается на ошибки, перегружаем его:
sudo service nginx restart
Установка php5-fpm
Для установки php5-fpm выполним следующую команду:
sudo apt install php5-fpm php5-mysqlnd php5-xmlrpc php5-curl php5-gd php5-imagick php5-imap php5-mcrypt -y
Включить выполнение 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 the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # # location ~ \.php$ {
Отредактируем, убрав кое-где знак #, чтобы получилось вот так:
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; }
и перезапустим наш web-сервер:
sudo service nginx reload
Тест PHP
Проверим, работает ли php. Для этого создадим файл index.php
sudo nano /var/www/html/index.php
и добавим в него такой текст:
<html><body> <?php phpinfo(); ?> </body></html>
Сохраните файл и зайдите интернет-браузером на сайт. Если все хорошо, то отобразятся логотип, версия и текущие настройки PHP.
Отредактируем настройки PHP.
sudo nano /etc/php5/fpm/php.ini
Необходимо найти строку upload_max_filesize и установить значение, одинаковое значению client_max_body_size в файле nginx.conf
upload_max_filesize = 16m
Также необходимо найти параметр cgi.fix_pathinfo и поменять его значение с ‘1’ на ‘0’.
cgi.fix_pathinfo=0
И в завершении, для корректного отображения времени установим свой часовой пояс:
date.timezone = Europe/Moscow
Нажмите Control-X и Y для сохранения конфигурации.
Установка MariaDB
Если вы знакомы с установкой MySQL, то вы найдете, что эта процедура для MariaDB практически не отличается.
sudo apt-get install mariadb-server mariadb-client
Выберите пароль для пользователя root во время установки. После завершения установки мы можем войти в систему, используя учетную запись root
mysql -u root -p
Не рекомендуется использовать учетную запись root для повседневной работы. Поэтому мы хотим создать суперпользователя со всеми привилегиями как root для администрирования и отключить удаленный доступ учетной записи root позже.
create user username@localhost identified by 'password';
Замените username на имя по вашему выбору, и password на пароль, который вы хотите использовать для входа в систему. Так как затем мы будем устанавливать WordPress, сразу создадим базу wordpressdb. Далее мы предоставим права только что созданному пользователю.
create database wordpressdb; grant all privileges on wordpressdb.* to username@localhost identified by 'password'; flush privileges; exit
Теперь нам нужно усилить параметры безопасности MariaDB.
sudo mysql_secure_installation
Мы уже установили пароль во время установки MariaDB, поэтому мы пропустим вопрос «change root password». Отвечаем «y» на вопрос «remove anonymous users», отвечаем «y» на вопрос «disallow root login remotely», так как теперь у нас есть только что созданный пользователь с соответствующими правами. В отличие от Mysql, в MariaDB нет предварительно установленной базы данных «test», поэтому на вопрос «remove test database» мы отвечаем «n». И в завершении нужно согласился «reload privilege tables».
На этом все. Теперь можно приступать к установке WordPress.