Гид по технологиям

Установка MediaWiki с Nginx на Ubuntu 16.04 — пошаговая инструкция

8 min read DevOps Обновлено 26 Nov 2025
MediaWiki на Nginx: установка на Ubuntu 16.04
MediaWiki на Nginx: установка на Ubuntu 16.04

Важное: пример использует Ubuntu 16.04 и PHP 7.0. При использовании других версий адаптируйте команды и пути (например, /etc/php/<версия>/).

О чём эта инструкция

Данная инструкция подробно показывает, как развернуть MediaWiki — свободное ПО на PHP, изначально разработанное для Википедии — на связке LEMP (Linux, Nginx, MySQL, PHP-FPM) под Ubuntu 16.04. Вы получите рабочую вики-систему под HTTPS с управлением доступом к файлам, базой данных, и базовой защитой.

Коротко: что мы сделаем

  • Установим и настроим Nginx
  • Установим и настроим PHP-FPM (PHP 7.0 в примере)
  • Установим MySQL и создадим базу данных для MediaWiki
  • Скачиваем и собираем MediaWiki, установим зависимости через Composer
  • Получим SSL-сертификат от Let’s Encrypt
  • Создадим и активируем виртуальный хост Nginx для MediaWiki
  • Пройдём веб-инсталляцию MediaWiki и установим тему Vector
  • Добавим рекомендации по безопасности, бэкапам и обслуживанию

Кому это пригодится

  • Системным администраторам и девопсам, которые настраивают внутренние или публичные вики
  • Разработчикам, которым нужна локальная или тестовая инстанция MediaWiki
  • Тем, кто хочет понять взаимодействие Nginx + PHP-FPM + MySQL для PHP-приложений

Требования

  • Сервер с Ubuntu 16.04
  • Привилегии root или sudo
  • Доменное имя, указывающее на сервер (для SSL)
  • Доступ в интернет для установки пакетов и получения зависимостей

Варианты и совместимость

MediaWiki совместима с разными версиями PHP и баз данных. В этом руководстве используется PHP 7.0 и MySQL. Можно использовать MariaDB вместо MySQL и новые версии PHP (требуется адаптация путей и пакетов). Если вы предпочитаете Apache, альтернативный сценарий описан ниже.


Шаг 1 — Установка Nginx на Ubuntu 16.04

Первым устанавливаем веб-сервер Nginx, запускаем и добавляем автозапуск.

Подключитесь к серверу и обновите пакеты:

sudo apt update  
sudo apt upgrade -y

Установите Nginx:

sudo apt install nginx -y

Запустите и включите автозапуск:

systemctl start nginx  
systemctl enable nginx

Проверьте, что порт 80 слушается Nginx:

netstat -plntu

Проверка, что nginx запущен

Примечание: на современных системах netstat может отсутствовать; используйте ss -plntu.

Шаг 2 — Установка и настройка PHP-FPM

MediaWiki требует PHP. В примере используется PHP 7.0 и набор расширений, необходимых для работы и производительности.

Установите PHP и расширения:

sudo apt install imagemagick php7.0-fpm php7.0-intl php7.0-xml php7.0-curl php7.0-gd php7.0-mbstring php7.0-mysql php-apcu

После установки откройте конфигурацию PHP-FPM и увеличьте лимиты для загрузки файлов и памяти:

cd /etc/php/7.0  
vim fpm/php.ini

Измените значения:

upload_max_filesize = 20M  
memory_limit = 128M

Сохраните и перезапустите сервисы:

systemctl restart php7.0-fpm  
systemctl enable php7.0-fpm

Проверьте наличие unix-сокета PHP-FPM:

netstat -pl | grep php

Конфигурация сокета PHP-FPM

Важно: если вы обновите версию PHP, измените путь к сокету (например, /run/php/php7.2-fpm.sock).

Шаг 3 — Установка и настройка MySQL

MediaWiki хранит все страницы и настройки в базе данных. В примере используем MySQL.

Установите MySQL:

sudo apt install mysql-server mysql-client -y

Во время установки вас попросят ввести пароль для пользователя root базы данных.

Установка пароля root для MySQL

После установки запустите и включите автозапуск:

systemctl start mysql  
systemctl enable mysql

Создайте базу данных и пользователя для MediaWiki. В примере:

  • База: mediawikidb
  • Пользователь: mediawiki
  • Пароль: mypassword

Подключитесь к MySQL и выполните запросы:

mysql -u root -p

Внутри mysql:

create database mediawikidb;  
grant all privileges on mediawikidb.* to mediawiki@'localhost' identified by 'mypassword';  
flush privileges;  
exit;

Создание базы данных MediaWiki

Рекомендация по безопасности: используйте сложный пароль и по возможности ограничьте доступ к базе только по локальному сокету или через пользовательские правила брандмауэра.

Шаг 4 — Скачивание и подготовка MediaWiki

Скачаем исходники MediaWiki и установим PHP-зависимости через Composer.

Установите нужные утилиты:

sudo apt install composer git zip unzip -y

Клонируем репозиторий и установим зависимости:

mkdir -p /var/www/mediawiki  
git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git /var/www/mediawiki

Загрузка MediaWiki

Запустите composer в папке проекта (без dev-зависимостей для продакшн):

cd /var/www/mediawiki  
composer install --no-dev

Выполнение composer

После установки зависимостей назначьте владельца www-data:

chown -R www-data:www-data /var/www/mediawiki

Пояснение: MediaWiki генерирует кэш и файлы, для которых нужен доступ пользователя веб-сервера.

Шаг 5 — Получение SSL от Let’s Encrypt

Рекомендуется запускать Wiki по HTTPS. Для бесплатных сертификатов используем Letsencrypt.

Установим клиент letsencrypt (в некоторых репозиториях он называется certbot):

sudo apt install letsencrypt -y

Чтобы получить сертификат, временно остановите Nginx (если он мешает):

systemctl stop nginx

Запустите генерацию сертификата интерактивно:

letsencrypt certonly

Вас попросят ввести email для уведомлений и согласиться с условиями. Затем укажите домен (в примере wiki.hakase-labs.co).

Запрос email для Letsencrypt

Принятие условий Letsencrypt

Ввод доменного имени

После успешного создания сертификата вы увидите путь к файлам в /etc/letsencrypt/live/

Результат создания SSL сертификата

Совет: Настройте автоматическое обновление сертификатов (например, cron/ systemd timer для letsencrypt renew).

Шаг 6 — Конфигурация виртуального хоста Nginx для MediaWiki

Создадим файл конфигурации сайти и активируем его. Пример ниже можно использовать «как есть», заменив домен на ваш.

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

cd /etc/nginx/  
vim sites-available/mediawiki

Вставьте конфигурацию:

# HTTP Request will be Redirected to the HTTPS  
 server {  
     listen 80;  
     listen [::]:80;  
     server_name wiki.hakase-labs.co;  
     return 301 https://$host$request_uri;  
 }  
   
 # HTTPS Configuration  
 server {  
   
     listen 443 ssl;  
     listen [::]:443;  
       
     server_name wiki.hakase-labs.co;  
     root /var/www/mediawiki;  
   
     index index.php;  
     autoindex off;  
   
     # SSL Certificate Configuration  
     ssl_certificate /etc/letsencrypt/live/wiki.hakase-labs.co/fullchain.pem;  
     ssl_certificate_key /etc/letsencrypt/live/wiki.hakase-labs.co/privkey.pem;  
   
     client_max_body_size 5m;  
     client_body_timeout 60;  
   
     location / {  
         try_files $uri $uri/ @rewrite;  
     }  
   
     location @rewrite {  
         rewrite ^/(.*)$ /index.php?title=$1&$args;  
     }  
   
     location ^~ /maintenance/ {  
         return 403;  
     }  
   
     # PHP Configuration  
     location ~ \.php$ {  
         fastcgi_pass unix:/run/php/php7.0-fpm.sock;  
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
         include fastcgi_params;  
         include snippets/fastcgi-php.conf;  
     }  
   
     location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {  
         try_files $uri /index.php;  
         expires max;  
         log_not_found off;  
     }  
   
     location = /_.gif {  
         expires max;  
         empty_gif;  
     }  
   
     location ^~ ^/(cache|includes|maintenance|languages|serialized|tests|images/deleted)/ {  
         deny all;  
     }  
   
     location ^~ ^/(bin|docs|extensions|includes|maintenance|mw-config|resources|serialized|tests)/ {  
         internal;  
     }  
   
     # Security for 'image' directory  
     location ~* ^/images/.*.(html|htm|shtml|php)$ {  
         types { }  
         default_type text/plain;  
     }  
   
     # Security for 'image' directory  
     location ^~ /images/ {  
         try_files $uri /index.php;  
     }  
   
 }

Активируйте сайт и перезапустите nginx:

ln -s /etc/nginx/sites-available/mediawiki /etc/nginx/sites-enabled/
nginx -t  
systemctl restart nginx

Проверьте, что порт 443 слушается:

netstat -plntu

Конфигурация Nginx

Совет: для продакшн используйте более строгие настройки SSL (списки шифров, HSTS) и протестируйте результат на SSL Labs.

Шаг 7 — Веб-инсталляция MediaWiki

Откройте браузер и перейдите по домену (http будет автоматически перенаправлен на https):

http://wiki.hakase-labs.co

Инсталлятор MediaWiki

Нажмите «set up the wiki» для начала установки.

Языковая конфигурация: выберите язык интерфейса.

Конфигурация языка

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

Проверка окружения

Настройка базы данных: используйте mediawikidb, пользователя mediawiki и пароль, который вы задали.

Конфигурация базы данных

Создайте администратора, задайте данные сайта и параметры.

Создание админа

При успешной установке скачайте файл LocalSettings.php и загрузите его в /var/www/mediawiki:

scp LocalSettings.php [email protected]:/var/www/mediawiki/  
chown -R www-data:www-data /var/www/mediawiki

Скачивание LocalSettings.php

Возвратитесь на сайт и войдите в вики.

MediaWiki установлена

Шаг 8 — Установка и активация дефолтной темы Vector

Клонируем скин Vector и включим его в LocalSettings.php:

cd /var/www/mediawiki/skins/  
sudo git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector

Загрузка темы Vector

Отредактируйте LocalSettings.php и добавьте в конец:

wfLoadSkin( 'Vector' );

Обновите страницу в браузере и убедитесь, что интерфейс вики использует тему Vector.

Скин Vector

Поддержка и обслуживание

Развернуть — только начало. Вот рекомендации по обслуживанию:

  • Резервные копии: регулярно экспортируйте дамп базы данных (mysqldump) и копируйте каталог images и LocalSettings.php.
  • Обновления: следите за релизами MediaWiki и PHP. Тестируйте обновления в окружении staging перед продом.
  • SSL: настройте автоматическое обновление certbot/letsencrypt (crontab или systemd timer).
  • Мониторинг: следите за загрузкой CPU, памяти, свободным местом на диске и временем отклика.

Пример простого скрипта для бэкапа БД (скрипт — пример, адаптируйте под свою политику):

#!/bin/bash
DATE=$(date +"%F")
mysqldump -u mediawiki -pmypassword mediawikidb > /var/backups/mediawikidb-$DATE.sql
tar -czf /var/backups/mediawiki-files-$DATE.tar.gz /var/www/mediawiki/images

Безопасность и жёсткие практики

  • Права на файлы: владельцем должен быть www-data, но ограничьте права (chmod 750/640 для чувствительных файлов).
  • Firewall: откройте только 80 и 443 (ufw allow 80,443). Закройте все лишние порты.
  • Fail2ban: рассмотрите защиту от брутфорса панелей и SSH.
  • Защита Nginx: ограничьте доступ к внутренним папкам, как в конфигурации выше (internal/deny).
  • HSTS и политики CSP: добавьте заголовки безопасности при необходимости.

Пример правил UFW:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Автоматическое обновление сертификатов

Добавьте cron-задание для регулярного обновления сертификатов (пример раз в сутки):

0 3 * * * /usr/bin/letsencrypt renew --quiet && systemctl reload nginx

Проверьте работу с –dry-run перед автоматизацией.

Частые проблемы и их решение

  1. Nginx возвращает 502 Bad Gateway
  • Причина: PHP-FPM не запущен или сокет другой версии. Проверьте systemctl status php7.0-fpm и путь к сокету в nginx-конфигурации.
  • Исправление: скорректируйте fastcgi_pass unix:/run/php/<ваша-версия>-fpm.sock; перезапустите сервисы.
  1. Ошибки прав на файлы при установке
  • Причина: веб-сервер не имеет права записывать в папку images или кеш.
  • Исправление: chown -R www-data:www-data /var/www/mediawiki; проверьте права на директории uploads и cache.
  1. База не подключается
  • Причина: неверные учетные данные или привилегии.
  • Исправление: пересоздайте пользователя с нужными привилегиями или проверьте host (localhost vs 127.0.0.1).
  1. Let’s Encrypt не может проверить домен
  • Причина: домен не указывает на сервер или Nginx мешает временной проверке.
  • Исправление: убедитесь, что DNS A-запись указывает на IP сервера; временно остановите Nginx для некоторых способов проверки или используйте webroot-проверку.

Критерии приёмки

  • Сайт доступен по HTTPS без предупреждений
  • Веб-инсталлятор MediaWiki прошёл успешно, LocalSettings.php размещён в /var/www/mediawiki
  • Права файлов настроены (www-data владелец)
  • Автоматическое обновление SSL настроено и протестировано
  • Регулярный бэкап базы данных и файлов реализован

Контрольные списки по ролям

Администратор сервера:

  • Установка пакетов (nginx, php-fpm, mysql)
  • Настройка автозапуска и проверка статусов
  • Настройка firewall и fail2ban
  • Настройка автоматического обновления SSL

Разработчик/интегратор:

  • Установка composer-зависимостей
  • Проверка совместимости расширений PHP
  • Настройка дополнительного кеширования (APCu)

Контент-менеджер:

  • Настройка прав пользователей в MediaWiki
  • Тестирование шаблонов и расширений на тестовом стенде
  • Планирование резервного копирования контента

Альтернативные подходы

  • Apache вместо Nginx: если вы привыкли к .htaccess и mod_php, используйте LAMP.
  • MariaDB как замена MySQL: API-совместима и часто предпочтительна.
  • Docker-контейнеры: для изоляции окружения и простоты развёртывания.

Когда этот подход не подходит

  • У вас ограниченная версия Ubuntu с устаревшими пакетами; лучше использовать контейнеры или обновить ОС.
  • Если требуется высокая доступность и горизонтальное масштабирование, нужна отдельная архитектура с балансировщиком и кластером БД.

Мини-методология развертывания (SOP)

  1. Подготовка сервера: обновление пакетов, настройка firewall
  2. Установка LEMP компонентов в порядке: Nginx → PHP-FPM → MySQL
  3. Скачивание MediaWiki и установка зависимостей
  4. Конфигурация виртуального хоста и SSL
  5. Веб-инсталляция и загрузка LocalSettings.php
  6. Настройка бэкапов и мониторинга
  7. Тестирование и передача заказчику

Диаграмма принятия решения для стека

flowchart TD
  A[Нужна вики система?] --> B{Публичная или внутренняя}
  B --> |Публичная| C[Используйте Nginx + Let's Encrypt]
  B --> |Внутренняя| D[Можно использовать самоподписанный SSL или внутренний CA]
  C --> E{Нужна высокая доступность}
  E --> |Да| F[Развертывание с балансировщиком и кластером БД]
  E --> |Нет| G[Один сервер LEMP]
  D --> G
  G --> H[Разворачиваем MediaWiki по шагам]

Тесты и критерии приёмки

  • Доступность главной страницы: HTTP 200 по HTTPS
  • Логин админа: успешная авторизация и создание страницы
  • Загрузка изображений: файлы сохраняются в /var/www/mediawiki/images
  • Обновление сертификата: выполняется без ошибок (letsencrypt renew –dry-run)

Сравнение и причины выбора

  • Nginx хорошо масштабируется и эффективен по памяти — подходит для больших вики
  • Apache проще при использовании готовых CMS с .htaccess, но в MediaWiki можно успешно использовать Nginx

Краткое резюме

  • Следуя шагам, вы получите рабочую MediaWiki под Nginx на Ubuntu 16.04 с SSL от Let’s Encrypt.
  • Не забудьте про безопасность: правильно настройте права, firewall, автоматическое обновление сертификатов и бэкапы.

Ссылки


Итог: после выполнения всех шагов ваша вики будет доступна по HTTPS, с корректной интеграцией Nginx/PHP-FPM/MySQL и базовыми мерами безопасности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро