htmlbook.ru - настольная книга администратора

Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
Loading

Go Back   форум vBSupport.org > > >
Register Изображения Меню vBsupport Files Manager Аллея Звёзд Реклама на форуме Search Today's Posts Mark Forums Read
  • Мемберка
  • Администраторам
  • Premoderation
  • For English speaking users
  • Изменения в правах
  • Каталог Фрилансеров
Пароли на скачивание файлов в Member Area меняются автоматически каждый день
Если вам нужно скачать какой то скрипт, за паролем ко мне в ЛС
привет какирам kerk
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Не можете скачать вложение?
Изменения в правах групп пользователей
внимательно читаем эту и эту темы
Короткая версия - тут
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

 
 
Old  
tarasus
Простоузер
Default [Обзор] История одного восстановления из бэкапа. 9

Доброго всем времени суток, уважаемые Форумчане!
Думал, куда бы разместить свою скромную историю, но, наверное, здесь ей место более логично. Надеюсь, мой, хоть и не слишком глубокий, опыт, кому-нибудь пригодится. Начнём.
Зародилась идея прикрутить к форуму портал vBadvanced. Но так как на "живом" экспериментировать что-то б0язно, решил восстановиться из какой-нибудь древней копии на локалке. Благо tar.gz домашнего веб-каталога в закромах Родины лежит, не отсвечивает, да и дамп с тех времён рядышком почивает. Дамп, правда, кривоват, ибо делан был во время падения форума и содержит в себе кучу мусора, в том числе и таблиц t_aggregate_temp_xxxxxx.
Ну да не об этом. Ставить решил на давно полюбившуюся операционку FreeBSD, заодно и посмотреть "в глаза" "десятке", ибо видел её только издалека, но слышал о многих хороших изменениях.
Процедуру установки ОС описывать не буду, ибо это предмет отдельной темы, перейду сразу к подготовке системы для установки vB.
Так как сервак в демилитаризованной зоне и кроме меня навряд ли кто туда полезет, использую "стандартную" связку: Apache+Php+Mysql, без разделения на "фронтэнд" и "бэкэнд".
Обновив порты системы решил ставить все самые свежие версии софта: апач 2.2.29 (на 2.4 пока переходить не хочу), мускль 5.6.25, пхп 5.6.11.
Обычно собирал весь необходимый софт вручную: брал архив, распаковывал, делал configure --help | more и выписывал нужные для себя опции, с которыми потом конфигурял makefile для последующей сборки. Но зачастую такой путь не позволял установить все необходимые зависимости, без которых устанавливаемый софт не будет работать должным образом, а вручную шерстить дерево dependencies для того, чтобы потом так же вручную их ставить слишком долго и утомительно. Ибо зависимостей иногда бывает не один десяток.
Умные люди не так давно показали один очень интересный системный скрипт под названием portmaster, который расширяет "стандартные" возможности портов во FreeBSD. Этот скрипт при запуске сначала проверяет все зависимости, выдаёт экран настройки и установки опций для каждого связанного порта, генерируя config.status и makefile для каждого, после чего собирая и устанавливая всё в нужной последовательности. Скрипт писан на шелле и использует все стандартные функции системы работы с портами, что на самом деле очень радует.
В общем, находясь в каталоге нужного порта, пишем мантру "portmaster" и начинаем расставлять опции во всплывающих окошках конфигов для последующей сборки. При установке апача вылезло десятка три всяких зависимостей, благополучно настроенных. Сама установка напоминает "подсматривание за подсматривающим": всё делается само, всё тянется само, всё собирается и ставится само. При установке насторожило, что в конфиге апача нет опции --enable-so и нет упоминания о сборке пхп модуля. Ну да ладно, думаю, опции всегда можно изменить в процессе.
Потом поставил мускля. Там ничего, как помнится, отдельно в опциях указывать необходимости нет. Далее пошёл пых. Помнится, была известная проблема с пыхом версии 5.4, когда движок не желал работать с этой версией интерпретатора, но раз уж люди эту проблему решают, значит, подумал я, и мне нефиг делать кислую рожу, и начал устанавливать. При конфигурянии тоже не увидел старой "доброй" позиции --with-apxs.
В общем, всё поставилось, настала пора конфигурирования всего этого добра.
Первым делом решил разобраться с пыхом. Создал в /usr/local/etc/ файл php.ini, скопировав и переименовав файл php.ini.production. В принципе для более-менее нагруженного сервера более-менее типовой конфигурации эта настройка в б0льшей мере удовлетворяет. Поправил там работу с ошибками:

Code:
error_reporting = E_ALL & ~(E_DEPRECATED & E_STRICT & E_NOTICE)
и

Code:
display_errors = Off
чтобы не орало на экран. Ещё мне посоветовали поставить переключатель

Code:
expose_php = Off
типа для секурности. Хотя на локалке....

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

Code:
<FilesMatch "\.php$">                        
    SetHandler application/x-httpd-php       
    </FilesMatch>                            
<FilesMatch "\.phps$">                       
    SetHandler application/x-httpd-php-source
    </FilesMatch>
А раньше нужно было либо в основном конфиге, либо в mime_types добавлять
Code:
AddType application/x-httpd-php .php            
AddType application/x-httpd-php-source .phps
Ну я решил закосить под умного, создал в каталоге апача в extras отдельный файл, назвал его php.conf и впихнул туда предлагаемые параметры. Ибо хз, может быть в "новой" версии апача поддержка пхп делается именно так.

Так как сервер - локальный, ДНСов нет, описание домашнего каталога форума сделал просто алиасом, а не через виртуалхост. И тут смотрю, в списке подключаемых модулей ну нету ни mod_php, ни libphp, ничего такого подобного, что раньше само вставлялось при сборке пхп. Оказывается, сейчас каждый сам по себе: пых - сам по себе, апач - сам по себе, а модуль пыха для апача - вообще четвёртый поросёнок по имени "нах-нах" и приходит по отдельному приглашению. Идём в /usr/ports/www/mod_php56 (так как у нас всё-таки пых версии 5.6) и ставим его дополнительно. По окончании установки, как в старые времена, модуль сам прописывается в конфиг апача. Будем на сей момент считать, что пых вроде бы настроен.
Идём к мусклю, ибо он заждался. При установке мускль сам создал дефолтовый файл настроек себя любимого (my.cnf), который положил в /usr/local/. Чтобы не думалось, копируем этот файл в /var/db/mysql/, где будет лежать база (пути пока решил не менять, ибо всё-таки всю эту конструкцию полагаю как "временную" и "тестовую").
Добавил в /etc/rc.conf строчку mysql_enable="YES" для того, чтобы и при перезагрузке мускль стартовал, и при рукопашном старте/стопе сервиса через скрипт rc.d не ругался, а нормально работал.
Запустил мускля (/usr/local/etc/rc.d/mysql-server start) и выполнил команду первичной инициализации сервера, перейдя в каталог /usr/local/ сделал командочку bin/mysql_install_db
Рутовый пароль я поменять сразу как-то подзабыл, поэтому после инициализации базы остановил мускля, в my.cnf добавил строчку skip-grant-tables для того, чтобы база стартовала, не зная, у кого какие пароли и права, и снова запустил мускль.
Далее mysql -u root -p пустил в базу, где sql-запросом

Code:
UPDATE USER SET PASSWORD=PASSWORD('new_password') WHERE USER='root' AND HOST='localhost';
FLUSH PRIVILEGES;
изменил пароль суперпользователя на нужный и обновил права.

Всё, рута сделали, теперь надо базу создать для движка. Но так как, помнится, при прошлой попытке восстановления из бэкапа был какой-то конкретный косяк с кодировкой, оттого, что где-то в двухгиговом дампе collate было устангвлено на 'latin_swedish1_ci' и просто так, "в лоб", этот дамп поправить в те времена мне не удалось, при создании базы решил жёстко указать и кодировку и сортировку.

Code:
CREATE DATABASE dbname CHARACTER SET cp1251 COLLATE cp1251_general_ci;
Отработало. Теперь надо сделать юзера. Не под рутом же жить (хотя такая крамольная мысль проскакивала: ну типа же "локалка" и "тест", но "тест", я думаю, должен быть более приближен к "живой" системе). Но так как не помнил сразу строку создания юзера с назначением прав и пароля, а искать было лень, просто создал юзера
Code:
CREATE USER dbuser;
думаю, сначала юзера просто создам, а потом ему и права и пароль назначу, в чём проблема?

назначаю пароль

Code:
UPDATE USER SET PASSWORD=PASSWORD('new_password') WHERE USER='dbuser' AND HOST='localhost';
FLUSH PRIVILEGES;
запрос вроде правильный, мускль не ругается, но пишет 0 rows affected, 0 changes made
что за хрень... Плюс в истории команд - сброс привилегий остался, а апдейт пароля - нет. Ничего не понимаю.
Полез посмотрел табличку

Code:
SHOW USERS FROM USERS;
юзер, показывает, есть. Ладно, думаю. Есть, значит есть. "Может быть смена пароля не считается изменением в базе?" - подумалось у меня в чердаке. Почесав волосистую часть верхней точки полез раздавать права вновь созданному юзеру.

Code:
GRANT ALL PRIVILEGES ON dbname.* TO 'dbuser'@'localhost' IDENTIFIED BY 'mypassword';
опять 0 raws affected, 0 changes made.

делаю командочку

Code:
SHOW GRANTS FOR dbuser;
а в ответ выводится только возможность USAGE, но для всего. Ладно, думаю, сделаю по-другому. И выполнил запрос без указания пароля:

Code:
GRANT ALL PRIVILEGES ON dbname.* TO 'dbuser'@'localhost';
отработало!
Ура, думаю я, пойду редактировать config.php форума и заливать дамп в мускль. Не единожды натыкался на форуме на то, что при более свежих версиях пыха в config.php движка нужно в dbtype ставить значение mysqli вместо mysql, что и было сделано. Ну и конечно же вписал имя бд, имя и пароль пользователя для работы движка.

Потом залил дамп базы

Code:
mysql -u root -p -D dbname < mydumpfile.sql
После некоторого времени ожидания, настало время и пытаться что-нибудь запускать. Мускль уже крутится, апач вроде худо-бедно настроен, пых стоит, пора!

service apache22 start

захожу браузером на адрес восстанавливаемого форума:

http://192.168.35.1/forum/

а в ответ вываливается содержимое файла index.php

япона мать. Что такое.
Пытаюсь запустить спец файлик с пхпинфо - на экране содержимое файла. не отрабатывает пхпинфо.
Полез смотреть конфиги апача и сравнивать с тем, что предлагал пых (а это было заботливо сохранено в файле). Проверил по буквам - один-в-один. Посмотрел список модулей апача - libphp5 прописан и при старте не ругается. Но не работает, и всё. Бился, бился, в итоге в основной файл httpd.conf добавил строчку

Code:
AddType application/x-httpd-php .php
прямо в секции модуля компрессии после описания x-gzip и x-compress.

Перезапуск апача, и.... Файл с пхпинфо отработал! Отлично! Вот только непонятно, почему же установщик требует добавить в конфиг апача одну конфигурацию настройки модуля, а работает - другая? Ответ очень прост: в httpd.conf строки подключения модулей из extra закомментированы..... А я тут сексом с плясками страдаю.... В общем, результата добился, причину нашёл. Конфиг изменять уж не стал, пусть работает, как работает.
Захожу в корневой каталог восстанавливаемого форума - и вижу пустой экран. Исходный код страницы также пустой. Что за хрень, опять какие-то грабли... Но так как пых отрабатывает, закрались сомнения относительно настройки соединения с бд, хотя если бы было что-то не то с бд, по идее бы рисовалась database error, а не пустой экран. Ну да ладно, полез проверять.
пытаюсь залогиниться в мускль под созданным и настроенным юзером - а вотхрен там. Аксесс, говорит, тебе денаед, и делай, что х0шь. Иду рутом, думаю, хз, может пароль криво набрал. Делаю снова UPDATE USER SET PASSWORD... , выхожу, пытаюсь зайти - хрен.
Полез искать ответов в Интернетах.
ОКАЗЫВАЕТСЯ! Юзеры 'user'@'localhost' и 'user'@'%' - это РАЗНЫЕ юзеры!!! Для меня это было великое открытие (поясню: я - не специалист в MySQl или SQL, и у меня в голове не укладывается, как так может быть, что при запросе select user from user; может в таблице вылазить несколько юзеров с одинаковыми именами???).
В общем, создал юзера 'dbuser'@'localhost':

Code:
CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'password';
дал ему права на нужную базу:

Code:
GRANT ALL PRIVILEGES ON dbname.* TO 'dbuser'@'localhost';
ну и обновил права. Вышел/зашёл - пускает! Фух... Юзер в базе есть, права у него есть, пробуем запуск форума.

шЫш. В смысле белый экран.

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

В организм начала закрадываться мысль "а, поомнишь, - говорил я сам с собой в черепной коробке, - "когда настраивал форум во время обновления системы, не отображалась часть админки из-за отсутствующего расширения пыха?". Помню... Хорошо, пхпинфо отрабатывает и показывает нужную информацию. В соседней вкладке запустил пхпинфо с другого локального сервака, где уверенно крутится такая же "тестовая" "ксюха". Ага. Половины модулей нет. Ну правильно. Если в старые времена модули и расширения для пыха собирались вместе с пыхом, путём добавления нужных опций при конфигурации исходника, то сейчас php56-extensions - это отдельный "продукт". Хорошо. Идём в порты, портмастером ставим.
После установки сравниваем результаты phpinfo: практически идентичны.
Так как не нашёл здесь на форуме (возможно, плохо искал, но неоднократно уже задавался этим вопросом и находил ответы в других местах), списка необходимых расширений php для корректной отработки движком своих функций. Напишу его тут (пусть даже только для себя):
Code:
CORE
Ctype
Date
DOM
Ereg
filter
gd
hash
iconv
json
libxml
mhash
mysql
mysqli
mysqlnd
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
Posix
reflection
session
Simplexml
SPL
SQLite3
tokenizer
xml
xmlreader
xmlwriter
ZendOPcache
Zlib
Ну, думаю, щщасьте наступило. Щаз как заработает!! Перезапускаю апача для переинициализации расширений пыха (кстати, список установленных расширений пыха находится в файле /usr/local/etc/php/extensions.ini. При переезде или апгрейде можно его сохранить в укромное место и всегда подсмотреть, что же было в системе установлено из расширений php) - белый экран.......

В качестве одного из советов по восстановлению работоспособности встречал, что глючить может какой-то из установленных хаков. Там их несколько штук есть (превент даблпост, мини-статистика на главной, комментарий модератора/администратора и ещё пара штук). Ну мало ли, ХЗ, может быть при дампе криво слились данные, или по их таблицам какая ошибка, полез в config.php и, как советовали, после строки

Code:
$config['Mysqli']['ini_file'] = '';
вставил
Code:
define ('DISABLE_HOOKS',true);
А нифига... белый экран атакуэ и никуда уходить не желает.

Что жжж. Остаётся крайнее средство диагностики. Включаем в php.ini вывод всех ошибок на экран.

Code:
display_errors = On
пеереезаапуускаааем....
И при заходе на экран повалилось..." Ой, неправильные форматы даты", что-то там ещё, но в конце после всех ворнингов вижу еррор: (вольный перевод) "при инициализации модуля GeoIP в тех путях, где его надо искать, его и нету!!! За сим звыняйте, откланиваюсь и закрываю лавочку".
Хех. Путь копанья ясен. Лезем в config.php и видим там абсолютный путь до местонахождения модуля. А путь-то по сравнению со старым местоположением форума в файловой системе естественно не совпадает. Меняю путь на свой, сохраняю, перезапускаю апач, захожу и..... Уря! После всех (ещё пока неотключенных) ошибок нарисовался "вельком срин форума".
Ещё раз внимательно просмотрел сообщения об ошибках, кроме ворнингов про формат даты ничего больше не нашёл. Ну и хрен с ним, значит можно снова отключать вывод ошибок на экран.

Code:
display_errors = Off
Пытаемся зайти в админку (эээххх, вспомнить бы пароль 2010 года ) - естественно, нифига не выходит.
Ладно, думаю, зайду с фасада. Типа "кто тут в цари крайний? Никого?" Ввожу имя, пароль, выскакивает сообщение:

Quote:
не удается добавить cookies, header уже отправлен
Что за зверь.... Впервые такое вижу.... Но при перезагрузке страницы, вижу, вроде на форум-то пустило. По-крайней мере, "добро пожаловать", сказало. Ну уже хорошо. Пытаюсь зайти в тему - то же самое сообщение. Ладно. Полез искать в тырнетах. Люди пишут, мол, надо в настройках форума (в админке) проверить домен размещения печенюх. А в админку-то я зайти не могу. Ну, думаю, горе-то какое. Ч0 делать? Подумалось, а не грохнуть ли мне таблицу (в смысле, очистить) vb3_session, по которой вечно множество косяков именно из-за большого числа просроченных сессий, которые по разным причинам не удаляются из базы. Но снова зашёл на форум - о! В одну тему зашёл, в другую зашёл - нормально, читает. Зашёл в личку - там что-то всё пишется вопросиками в ромбиках. Ну, вот, думаю, вот и кодировочка проявилась. Без особой надежды ткнул на сохранённое сообщение - а оно нормально открылось, по-русски. Нажал показать список - нормально, всё по-русски. Ну и хорошо, думаю, процесс идёт.
Ну а тут вспомнился старый пароль на админку. Зашёл, пустило, нормально. Пошёл сразу в "обслуживание" восстановить/оптимизировать таблицы, потом перестроить информацию о разделах, о темах, перестроить счётчик сообщений.....
И всё, движок ожил, всё показывается, поиск работает, сообщения добавляются/удаляются. Отлично!
Проверяю работы хаков. Комментирую в config.php строку

define ('DISABLE_HOOKS',true)

на всякий случай перезапускаю апач и захожу. Всё работает. Даблпосты слиты, комментарии админов стоят, статистика рисуется.
Значит, считаем, что цель - достигнута? Думаю, да. Дальнейшие настройки, проверки исполнения крона - это уже отдельная песня. Главное, что двиг - живой и информация - на месте.

Спасибо всем, кто дочитал до конца. Надеюсь, хоть кому-нибудь моя информация окажется полезной и хоть один человек не наступит на те грабли, по которым протанцевал свою "джигу" я. Прошу прощения за много букв, но я люблю приукрасить текст
Прошу прощения у Администрации и Гуру, если ещё раз описал то, что уже миллион раз было на Форуме, находится в FAQах и инструкциях - честно пытался искать, но нашлось не всё. Ну и если вдруг ошибся разделом.... Сильно не ругайте
Спасибо ещё раз. Всем желаю высокопроизводительных серверов, корректной работы движков, скриптов и дополнений, ну и просто хорошего настроения!

Last edited by tarasus : 08-05-2015 at 04:37 PM. Reason: удалил глюк из середины
 
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
Old  
Luvilla
Блондинка с электро......
 
Luvilla's Avatar
Default 0

Quote:
Originally Posted by tarasus View Post
А поправить не могу....
правь
в этом разделе есть права
отличный опус!
 
Old  
tarasus
Простоузер
Default 1

Quote:
Originally Posted by Luvilla View Post
правь
в этом разделе есть права
отличный опус!
Спасибо большое за лестную оценку моего печатного творения Если честно, именно Ваше мнение для меня очень ценно

да, смотрю, кнопка редактирования появилась. Спасибо большое. А то я уже Уважаемым людям в личку стучусь, чтобы помогли пост подкорректировать....
 
 

Tags
белый экран, восстановление из дампа, пустая страница, содержимое php

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 10:12 PM.


Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.