ЧТМ:Отладка/Перенос на основной домен: различия между версиями
Новая страница: «<markdown> </markdown>» |
Нет описания правки |
||
| Строка 1: | Строка 1: | ||
<markdown> | <markdown> | ||
Перенос сайта MediaWiki на новую версию и другую базу данных — это большая работа, и то, что вы успешно провели ее на тестовом домене, значительно упрощает задачу. | |||
Описанный вами план (переместить файлы, заменить старый сайт архивной копией и обновить параметр `$wgServer` в `LocalSettings.php`) действительно составляет основу процесса. Однако, чтобы перенос прошел безболезненно и без неожиданных сбоев, необходимо учесть еще несколько важных деталей. | |||
Ниже приведен чек-лист критических моментов и пошаговый план переноса. | |||
--- | |||
### Что нужно проверить помимо `$wgServer` | |||
#### 1. Разделение баз данных (Тест vs Продакшн) | |||
Если ваша тестовая база данных и продакшн-база будут находиться на одном сервере MySQL под одним именем, то переносить базу не нужно. Но **крайне рекомендуется** держать их отдельно (например, `wiki_test` и `wiki_prod`). | |||
Если базы разные, вам потребуется: | |||
* Экспортировать дамп базы данных с тестового сайта и импортировать его в чисто созданную продакшн-базу. | |||
* Обновить в `LocalSettings.php` параметры подключения к БД: `$wgDBname`, `$wgDBuser`, `$wgDBpassword` и `$wgDBserver`. | |||
#### 2. Физические пути на сервере | |||
Если на хостинге путь к основной папке сайта отличается от пути к тестовой (например, `/var/www/test-wiki/` и `/var/www/main-wiki/`), проверьте, чтобы в `LocalSettings.php` не было жестко прописанных старых путей. Обратите внимание на: | |||
* `$wgScriptPath` (если меняется вложенность папок, например, с `/test` на корневную директорию `/`). | |||
* `$wgUploadDirectory` и `$wgUploadPath` (если они заданы абсолютно, а не через относительный `$IP/images`). | |||
* `$wgCacheDirectory` или `$wgTmpDirectory`. | |||
#### 3. Права на папки (Permissions) | |||
При перемещении файлов часто сбиваются права доступа. Веб-серверу (обычно пользователю `www-data`, `nginx` или `apache`) обязательно нужны права на запись в папку картинок: | |||
* Убедитесь, что для папки `images/` (и всех вложенных) установлены корректные права (обычно `755` или `775` и правильный владелец). В противном случае пользователи не смогут загружать новые медиафайлы. | |||
#### 4. Конфигурация веб-сервера (Nginx / Apache) и ЧПУ (Short URLs) | |||
Если вы используете «красивые ссылки» (Short URLs, например, `/wiki/Заглавная_страница` вместо `/index.php?title=...`), убедитесь, что конфигурационный файл веб-сервера (например, `.htaccess` для Apache или конфигурация `nginx.conf`) для основного домена указывает на новую рабочую директорию. | |||
#### 5. Кэширование | |||
MediaWiki активно кэширует данные. Чтобы избежать ситуации, когда старый дизайн или старые пути «зависли» в кэше: | |||
* Если у вас настроено объектное кэширование (Memcached, Redis, APCu) через параметр `$wgMainCacheType`, желательно очистить этот кэш. | |||
* Рекомендуется сбросить системный кэш локализации. Для этого запустите скрипт из консоли: | |||
```bash | |||
php maintenance/rebuildLocalisationCache.php --force | |||
``` | |||
* Сбросьте кэш PHP OPcache (проще всего сделать это перезапуском веб-сервера или службы PHP-FPM). | |||
#### 6. Сессии и файлы Cookie | |||
Чтобы у пользователей не возникло конфликтов сессий (поскольку домен изменился, а куки могли остаться старыми), рекомендуется временно изменить префикс кук в `LocalSettings.php`: | |||
* Найдите или добавьте параметр `$wgCookiePrefix` и задайте ему новое уникальное значение (например, измените `my_wiki_` на `my_wiki_v145_`). Это заставит всех пользователей просто заново авторизоваться на сайте, избежав ошибок сессии. | |||
--- | |||
### Рекомендуемый пошаговый план переноса | |||
1. **Подготовка:** | |||
* Сделайте резервную копию файлов и базы данных старого сайта (1.34 на SQLite), а также тестового сайта (1.45 на MySQL). | |||
* Включите на старом сайте режим «только чтение», добавив в его `LocalSettings.php` строку `$wgReadOnly = 'Переезд на новую версию...';` (если на нем еще кто-то успевает писать в этот момент). | |||
2. **Работа с БД (если базы разные):** | |||
* Экспортируйте базу тестового сайта: `mysqldump -u имя -p имя_тест_бд > wiki_dump.sql` | |||
* Импортируйте её в продакшн-базу: `mysql -u имя -p имя_прод_бд < wiki_dump.sql` | |||
3. **Перемещение файлов:** | |||
* Переместите файлы старого сайта (1.34) в архивную папку (например, `old_wiki_backup`). | |||
* Скопируйте файлы тестового сайта (1.45) в основную директорию вашего домена. | |||
4. **Корректировка `LocalSettings.php`:** | |||
* Откройте файл в основной директории. | |||
* Обновите `$wgServer` на адрес вашего основного домена (обязательно проверьте протокол `http://` или `https://`). | |||
* При необходимости обновите параметры подключения к БД (`$wgDBname`, `$wgDBuser`, `$wgDBpassword`). | |||
* Измените `$wgCookiePrefix` для сброса старых сессий. | |||
5. **Финальные штрихи на сервере:** | |||
* Проверьте права доступа на папку `images/`. | |||
* Обновите конфигурацию веб-сервера (Nginx/Apache), если пути к папкам на сервере изменились. | |||
* Запустите из папки нового сайта консольный скрипт обновления (хуже не будет, он проверит целостность структуры БД): | |||
```bash | |||
php maintenance/update.php | |||
``` | |||
* Перезапустите PHP-FPM / Apache для очистки OPcache. | |||
После выполнения этих шагов зайдите на основной домен, проверьте авторизацию, отображение картинок, корректность работы поиска и ЧПУ. | |||
</markdown> | </markdown> | ||
Текущая версия от 03:16, 25 мая 2026
Перенос сайта MediaWiki на новую версию и другую базу данных — это большая работа, и то, что вы успешно провели ее на тестовом домене, значительно упрощает задачу.
Описанный вами план (переместить файлы, заменить старый сайт архивной копией и обновить параметр $wgServer в LocalSettings.php) действительно составляет основу процесса. Однако, чтобы перенос прошел безболезненно и без неожиданных сбоев, необходимо учесть еще несколько важных деталей.
Ниже приведен чек-лист критических моментов и пошаговый план переноса.
Что нужно проверить помимо $wgServer
1. Разделение баз данных (Тест vs Продакшн)
Если ваша тестовая база данных и продакшн-база будут находиться на одном сервере MySQL под одним именем, то переносить базу не нужно. Но крайне рекомендуется держать их отдельно (например, wiki_test и wiki_prod).
Если базы разные, вам потребуется:
- Экспортировать дамп базы данных с тестового сайта и импортировать его в чисто созданную продакшн-базу.
- Обновить в
LocalSettings.phpпараметры подключения к БД:$wgDBname,$wgDBuser,$wgDBpasswordи$wgDBserver.
2. Физические пути на сервере
Если на хостинге путь к основной папке сайта отличается от пути к тестовой (например, /var/www/test-wiki/ и /var/www/main-wiki/), проверьте, чтобы в LocalSettings.php не было жестко прописанных старых путей. Обратите внимание на:
$wgScriptPath(если меняется вложенность папок, например, с/testна корневную директорию/).$wgUploadDirectoryи$wgUploadPath(если они заданы абсолютно, а не через относительный$IP/images).$wgCacheDirectoryили$wgTmpDirectory.
3. Права на папки (Permissions)
При перемещении файлов часто сбиваются права доступа. Веб-серверу (обычно пользователю www-data, nginx или apache) обязательно нужны права на запись в папку картинок:
- Убедитесь, что для папки
images/(и всех вложенных) установлены корректные права (обычно755или775и правильный владелец). В противном случае пользователи не смогут загружать новые медиафайлы.
4. Конфигурация веб-сервера (Nginx / Apache) и ЧПУ (Short URLs)
Если вы используете «красивые ссылки» (Short URLs, например, /wiki/Заглавная_страница вместо /index.php?title=...), убедитесь, что конфигурационный файл веб-сервера (например, .htaccess для Apache или конфигурация nginx.conf) для основного домена указывает на новую рабочую директорию.
5. Кэширование
MediaWiki активно кэширует данные. Чтобы избежать ситуации, когда старый дизайн или старые пути «зависли» в кэше:
- Если у вас настроено объектное кэширование (Memcached, Redis, APCu) через параметр
$wgMainCacheType, желательно очистить этот кэш. - Рекомендуется сбросить системный кэш локализации. Для этого запустите скрипт из консоли:
php maintenance/rebuildLocalisationCache.php --force - Сбросьте кэш PHP OPcache (проще всего сделать это перезапуском веб-сервера или службы PHP-FPM).
6. Сессии и файлы Cookie
Чтобы у пользователей не возникло конфликтов сессий (поскольку домен изменился, а куки могли остаться старыми), рекомендуется временно изменить префикс кук в LocalSettings.php:
- Найдите или добавьте параметр
$wgCookiePrefixи задайте ему новое уникальное значение (например, изменитеmy_wiki_наmy_wiki_v145_). Это заставит всех пользователей просто заново авторизоваться на сайте, избежав ошибок сессии.
Рекомендуемый пошаговый план переноса
- Подготовка:
- Сделайте резервную копию файлов и базы данных старого сайта (1.34 на SQLite), а также тестового сайта (1.45 на MySQL).
- Включите на старом сайте режим «только чтение», добавив в его
LocalSettings.phpстроку$wgReadOnly = 'Переезд на новую версию...';(если на нем еще кто-то успевает писать в этот момент).
- Работа с БД (если базы разные):
- Экспортируйте базу тестового сайта:
mysqldump -u имя -p имя_тест_бд > wiki_dump.sql - Импортируйте её в продакшн-базу:
mysql -u имя -p имя_прод_бд < wiki_dump.sql
- Экспортируйте базу тестового сайта:
- Перемещение файлов:
- Переместите файлы старого сайта (1.34) в архивную папку (например,
old_wiki_backup). - Скопируйте файлы тестового сайта (1.45) в основную директорию вашего домена.
- Переместите файлы старого сайта (1.34) в архивную папку (например,
- Корректировка
LocalSettings.php:- Откройте файл в основной директории.
- Обновите
$wgServerна адрес вашего основного домена (обязательно проверьте протоколhttp://илиhttps://). - При необходимости обновите параметры подключения к БД (
$wgDBname,$wgDBuser,$wgDBpassword). - Измените
$wgCookiePrefixдля сброса старых сессий.
- Финальные штрихи на сервере:
- Проверьте права доступа на папку
images/. - Обновите конфигурацию веб-сервера (Nginx/Apache), если пути к папкам на сервере изменились.
- Запустите из папки нового сайта консольный скрипт обновления (хуже не будет, он проверит целостность структуры БД):
php maintenance/update.php - Перезапустите PHP-FPM / Apache для очистки OPcache.
- Проверьте права доступа на папку
После выполнения этих шагов зайдите на основной домен, проверьте авторизацию, отображение картинок, корректность работы поиска и ЧПУ.