Mac OS Server не работает web server (wiki). Или wiki не видит статьи и записи. Миграция (перенос) Wiki
|Довольно часто ко мне обращаются знакомые с просьбой помочь с Mac OS server, Mac OS, iPhone и iPad, да и вообще с различной техникой Apple. На этот раз меня попросили посмотреть что случилось с Web сервером на базе Mac OS. Точнее сам сервер поднят и работает, но статьи и записи не отображаются. Такая ситуация возникла после обновления до новой операционной системы.
Что у нас имеется на старте? Подняты такие службы:
- AFP
- Wiki, он же веб сервер.
- DNS
Ну и две CRM системы которые мы не берем пока в расчет. Служб не много, и это положительный момент, меньше времени уйдет на исправление различных ошибок.
Также невероятно радует что есть бекап Time Machine. Их системный администратор попробовал понизить операционную систему с 10.8 до 10.7.4 и восстановить из резервной копии, но ситуация таже.
Соответственно пробуем восстановить все руками.
В этом мануале GUI (интерфейс) нам не понадобится поскольку:
— в 90% действий потребуются права супер пользователя и GUI не умеет работает с postgreSQL
— Не умеет менять права, владельцев
— и.т.д.
Итак, для начала логинмся на сервер по SSH. Так удобнее копипастить команды. Для этого вбиваем:
1 | ssh admin@ip |
Получаем права супер пользователя. После ввода этой команды у вас попросят пароль администратора. Когда вы его будете вбивать, привычные звездочки отображаться не будут. Это нормально.
1 | sudo -s |
Далее нам нужно понять что Wiki грубо говоря состоит из 2 частей. Данные Wiki хранятся в /Library/Server/Wiki/FileData, а сама база postgreSQL делает каждый день свой самостоятельный бекап (дамп базы) и кладет его /Library/Server/PostgresSQL/Backup/dumpall.psql
Соответственно нам надо скопировать папку из бекапа FileData и PostgresSQL скажем на рабочий стол. Для этого пишем:
— Копируем бекап базу wiki на рабочий стол
1 | cp -r /Volumes/Backup/Backups.backupdb/Name_of server/2012-07-28- 001015/Macintosh\ HD/Library/Server/PostgreSQL ~/Desktop/ |
— Копируем данные wiki на рабочий стол
1 | cp -r /Volumes/Backup/Backups.backupdb/Name_of server/2012-07-28- 001015/Macintosh\ HD/Library/Server/Wiki ~/Desktop/ |
Из этих двух команд Нам надо поменять имя диска резервной копии (Backup), имя сервера(Name_of server) и дату когда с сервером все было хорошо (2012-07-28- 001015).
Останавливаем сервер wiki командой
1 | serveradmin stop wiki |
Удаляем старые данные и засовываем на их место новые данные командами:
1 | rm -r /Library/Server/Wiki/FileData |
1 | cp -R ~/Desktop/Wiki/FileData /Library/Server/Wiki/FileData |
6) Выставляем владельца и права
1 | chown -R _teamsserver:_teamsserver /Library/Server/Wiki/FileData |
1 | chmod -R +a "www allow read" /Library/Server/Wiki/FileData |
Запускаем SQL движок:
serveradmin start postgres
Убиваем базу:
У меня не получилось убить базу красиво командой
1 | rake -f /usr/share/collabd/server/Rakefile db:drop |
Потому что Apple поменяло расположение таких программ и расположены они в /Applications/Server.app/Contents/ServerRoot
и нужный нам Rakefile теперь находится в
/Applications/Server.app/Contents/ServerRoot/usr/share/collabd/coreclient/Rakefile
и нужно потратить еще пол дня чтобы понять что такое руби поскольку на команду
1 | rake -f /Applications/Server.app/Contents/ServerRoot/usr/share/collabd/coreclient/Rakefil e db:drop |
выдает:
1 2 3 | No Rakefile found (looking for: /applications/server.app/contents/serverroot/usr/share/collab/coreclient/Rakefile) /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.r b:2377:in `raw_load_rakefile' (See full trace by running task with --trace) |
поэтому убиваем базу командой
1 | dropdb -U _postgres collab |
Создаем новую базу
1 | createdb -U collab collab |
(База для Wiki называется collab с пользователем collab и паролем collab)
Импортируем старую базу
1 | psql -U _postgres -d collab -U collab -f ~/Desktop/PostgreSQL/Backup/dumpall.psql |
Запускам wiki командой
1 | serveradmin start wiki |
И наконец проверяем
Переезд Wiki с одного сервера на другой.
Этот мануал удалит все wiki с сервера на который переезжаем. Эту инструкцию опишу уже вкратце поскольку основная инструкция выше.
- На старом сервере копируем папку /Library/Collaboration на рабочий стол.
- Ставим владельца
1
sudo chown -R _teamsserver:_teamsserver ~/Desktop/Collaboration
- Используем программу wikiadmin чтобы переделать нашу wiki под новый сервер
1
sudo wikiadmin migrate -r ~/Desktop/Collaboration
или можем переехать одну тему, к примеру support
1
sudo wikiadmin migrate -r ~/Desktop/Collaboration -g support
- Снимаем дамп базы
1
wiki sudo pg_dump --format=c --compress=9 --blobs --username=collab -- file=~/Desktop/collab.pgdump collab
- Копируем наш дам и данные вики с рабочего стола на новый сервер
- Останавливаем сервер wiki командой
1
serveradmin stop wiki
- Удаляем старые данные и засовываем на их место новые данные командами:
1
rm -r /Library/Server/Wiki/FileData
1
cp -R ~/Desktop/Wiki/FileData /Library/Server/Wiki/FileData
- Выставляем владельца и права
1
chown -R _teamsserver:_teamsserver /Library/Server/Wiki/FileData
1
chmod -R +a "www allow read" /Library/Server/Wiki/FileData
- Запускаем SQL движок:
1
serveradmin start postgres
- Убиваем базу:
1
dropdb -U _postgres collab
- Создаем новую базы
1
createdb -U collab collab
(База для Wiki называется collab с пользователем collab и паролем collab)
- Импортируем старую базу s
1
udo -u _postgres pg_restore -d collab -U collab --single-transaction ~/Desktop/collab.pgdump collab
- Запускам wiki командой
1
serveradmin start wiki 
- Проверяем
Дополнительная информация которую нужно знать системному администратору:
Адресная книга, iCal, Profile Manager, Webmail, хранят свои данные в базе PostgreSQL как и wiki. И бекапить и восстанавливать их можно таким же способом.
PS: iCal и адресная книга пользуются одной базой на двоих. По умолчанию эти базы данных хранится в /var/PgSQL /. Если мы включили резервное копирование Time Machine, полный дамп базы данных производится ежедневно (с использованием pg_dumpall) в папку /Library/Server/PostgreSQL/BackUp. Настройками сервера Postgres можно поменять время бекапа, кол-во и место. Если мы хотии, чтобы резервное копирование и восстановление отдельных баз данных вне Time Machine, то можно сделать это в командной строке. Итак поехали:
iCal
Название базы — caldav
Резервную копию делаем командой
1 | PGUSER=_postgres ./usr/bin/pg_dump -U _postgres caldav -c -f /Library/Server/PostgreSQL/Backup/caldav.sql |
-с флаг означает, что, когда мы повторно будем импортировать данные, он очистит все данные из этой базы данных перед импортом, это предотвращает повторяющиеся записи.
Востанавливаем из резервной копии
1 | psql -U _postgres -d collab -f /Library/Server/PostgreSQL/Backup/caldav.sql |
Profile Manager:
Название базы — device_management
Резервную копию делаем командой
1 | PGUSER=_postgres ./usr/bin/pg_dump -U _postgres device_management -c -f /Library/Server/PostgreSQL/Backup/device_management.sql |
останавливаем из резервной копии
1 | psql -U _postgres -d device_management -f /Library/Server/PostgreSQL/Backup/device_management.sql |
WebMail:
Название базы — roundcubemail
Резервную копию делаем командой
1 | PGUSER=_postgres ./usr/bin/pg_dump -U _postgres roundcubemail -c -f /Library/Server/PostgreSQL/Backup/roundcubemail.sql |
Востанавливаем из резервной копии
1 | psql -U _postgres -d roundcubemail -f /Library/Server/PostgreSQL/Backup/roundcubemail.sql |
На этом все, но если у вас возникли какие-то вопросы или пожелания, пишите в комментариях, попробую вам помочь.