Установка 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
Примечание: на современных системах 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, измените путь к сокету (например, /run/php/php7.2-fpm.sock).
Шаг 3 — Установка и настройка MySQL
MediaWiki хранит все страницы и настройки в базе данных. В примере используем MySQL.
Установите MySQL:
sudo apt install mysql-server mysql-client -yВо время установки вас попросят ввести пароль для пользователя root базы данных.

После установки запустите и включите автозапуск:
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;
Рекомендация по безопасности: используйте сложный пароль и по возможности ограничьте доступ к базе только по локальному сокету или через пользовательские правила брандмауэра.
Шаг 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
Запустите composer в папке проекта (без dev-зависимостей для продакшн):
cd /var/www/mediawiki
composer install --no-dev
После установки зависимостей назначьте владельца 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).



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

Совет: Настройте автоматическое обновление сертификатов (например, 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
Совет: для продакшн используйте более строгие настройки SSL (списки шифров, HSTS) и протестируйте результат на SSL Labs.
Шаг 7 — Веб-инсталляция MediaWiki
Откройте браузер и перейдите по домену (http будет автоматически перенаправлен на https):

Нажмите «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
Возвратитесь на сайт и войдите в вики.

Шаг 8 — Установка и активация дефолтной темы Vector
Клонируем скин Vector и включим его в LocalSettings.php:
cd /var/www/mediawiki/skins/
sudo git clone https://gerrit.wikimedia.org/r/mediawiki/skins/Vector
Отредактируйте LocalSettings.php и добавьте в конец:
wfLoadSkin( '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 перед автоматизацией.
Частые проблемы и их решение
- Nginx возвращает 502 Bad Gateway
- Причина: PHP-FPM не запущен или сокет другой версии. Проверьте systemctl status php7.0-fpm и путь к сокету в nginx-конфигурации.
- Исправление: скорректируйте fastcgi_pass unix:/run/php/<ваша-версия>-fpm.sock; перезапустите сервисы.
- Ошибки прав на файлы при установке
- Причина: веб-сервер не имеет права записывать в папку images или кеш.
- Исправление: chown -R www-data:www-data /var/www/mediawiki; проверьте права на директории uploads и cache.
- База не подключается
- Причина: неверные учетные данные или привилегии.
- Исправление: пересоздайте пользователя с нужными привилегиями или проверьте host (localhost vs 127.0.0.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)
- Подготовка сервера: обновление пакетов, настройка firewall
- Установка LEMP компонентов в порядке: Nginx → PHP-FPM → MySQL
- Скачивание MediaWiki и установка зависимостей
- Конфигурация виртуального хоста и SSL
- Веб-инсталляция и загрузка LocalSettings.php
- Настройка бэкапов и мониторинга
- Тестирование и передача заказчику
Диаграмма принятия решения для стека
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, автоматическое обновление сертификатов и бэкапы.
Ссылки
- Официальный сайт MediaWiki: https://www.mediawiki.org/wiki/
Итог: после выполнения всех шагов ваша вики будет доступна по HTTPS, с корректной интеграцией Nginx/PHP-FPM/MySQL и базовыми мерами безопасности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента