Mac OS Server не работает web server (wiki). Или wiki не видит статьи и записи. Миграция (перенос) Wiki

Довольно часто ко мне обращаются знакомые с просьбой помочь с Mac OS server, Mac OS, iPhone и iPad, да и вообще с различной техникой Apple. На этот раз меня попросили посмотреть что случилось с Web сервером на базе Mac OS. Точнее сам сервер поднят и работает, но статьи и записи не отображаются. Такая ситуация возникла после обновления до новой операционной системы.

Что у нас имеется на старте? Подняты такие службы:

  1. AFP
  2. Wiki, он же веб сервер.
  3. 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 с сервера на который переезжаем. Эту инструкцию опишу уже вкратце поскольку основная инструкция выше.

  1. На старом сервере копируем папку /Library/Collaboration на рабочий стол.
  2. Ставим владельца
    1
    
    sudo chown -R _teamsserver:_teamsserver ~/Desktop/Collaboration
  3. Используем программу wikiadmin чтобы переделать нашу wiki под новый сервер
    1
    
    sudo wikiadmin migrate -r ~/Desktop/Collaboration

    или можем переехать одну тему, к примеру support

    1
    
    sudo wikiadmin migrate -r ~/Desktop/Collaboration -g support
  4. Снимаем дамп базы
    1
    
    wiki sudo pg_dump --format=c --compress=9 --blobs --username=collab -- file=~/Desktop/collab.pgdump collab
  5. Копируем наш дам и данные вики с рабочего стола на новый сервер
  6. Останавливаем сервер wiki командой
    1
    
    serveradmin stop wiki
  7. Удаляем старые данные и засовываем на их место новые данные командами:
    1
    
    rm -r /Library/Server/Wiki/FileData
    1
    
    cp -R ~/Desktop/Wiki/FileData /Library/Server/Wiki/FileData
  8. Выставляем владельца и права
    1
    
    chown -R _teamsserver:_teamsserver /Library/Server/Wiki/FileData
    1
    
    chmod -R +a "www allow read" /Library/Server/Wiki/FileData
  9. Запускаем SQL движок:
    1
    
    serveradmin start postgres
  10. Убиваем базу:
    1
    
    dropdb -U _postgres collab
  11. Создаем новую базы
    1
    
    createdb -U collab collab

    (База для Wiki называется collab с пользователем collab и паролем collab)

  12. Импортируем старую базу s
    1
    
    udo -u _postgres pg_restore -d collab -U collab --single-transaction ~/Desktop/collab.pgdump collab
  13. Запускам wiki командой
    1
    
    serveradmin start wiki 
  14.  Проверяем

Дополнительная информация которую нужно знать системному администратору:

Адресная книга, 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

На этом все, но если у вас возникли какие-то вопросы или пожелания, пишите в комментариях, попробую вам помочь.

загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *