Сохранение правильного конфига при переносе сайта
Самый простой способ перенести сайт с одного хостинга/аккаунта на другой — скопировать заранее конфиги в новом месте для сайта, чтобы потом руками не менять везде пути и логин/пароль к БД. Можно делать с помощью mc, как описано в разделе помощи Modhost, а можно руками в консоли писать команды. Или даже с помощью файлового менеджера через (S)FTP.
А можно еще проще, если есть доступ к SSH — запустить скрипт и выбрать режим работы:
1) Сохранить конфиги
2) Восстановить конфиги
Суть проста: если на MODHOST Вы создаете новый сайт, автоматически устанавливается MODX с правильными конфигами. При переносе готового сайта из другого места указанные конфиги лучше сохранить, чтобы вручную не менять везде пути, оставляя шанс на ошибку. На собственном сервере по этой причине тоже удобнее создавать готовый сайт, а не только место под него.
Скрипт копирует конфиги в ~/config_backup выбранного пользователя либо, наоборот, из указанного каталога в правильные места сайта.
Запускать необходимо по SSH. Если вызывать без параметров, копирование произойдет для текущего пользователя — удобно на MODHOST. Если первым (единственным) параметром указать имя пользователя, копирование произойдет для него. Во втором случае лучше запускать через sudo.
Сам скрипт:
А можно еще проще, если есть доступ к SSH — запустить скрипт и выбрать режим работы:
1) Сохранить конфиги
2) Восстановить конфиги
Суть проста: если на MODHOST Вы создаете новый сайт, автоматически устанавливается MODX с правильными конфигами. При переносе готового сайта из другого места указанные конфиги лучше сохранить, чтобы вручную не менять везде пути, оставляя шанс на ошибку. На собственном сервере по этой причине тоже удобнее создавать готовый сайт, а не только место под него.
Скрипт копирует конфиги в ~/config_backup выбранного пользователя либо, наоборот, из указанного каталога в правильные места сайта.
Запускать необходимо по SSH. Если вызывать без параметров, копирование произойдет для текущего пользователя — удобно на MODHOST. Если первым (единственным) параметром указать имя пользователя, копирование произойдет для него. Во втором случае лучше запускать через sudo.
Сам скрипт:
#!/bin/bash
USER=$1
if [ "$USER" == "" ];
then
USER=$(getent passwd $UID | sed -e 's/\:.*//')
fi
# Home directory
HOME=$(getent passwd $USER)
HOME=${HOME#*:/}
HOME='/'$(echo $HOME | cut -f1 -d:)
# Site directory
SDIR=$HOME'/www'
# Backup directory
BDIR=$HOME'/config_backup'
echo 'Running for user "'$USER'"'
echo "Enter mode (1 - backup config; 2 - restore config; 0 - exit):"
read MODE
if [ "$MODE" == "1" ];
then
if ! [ -d $BDIR ]; then
echo 'Backup directory '$BDIR' is not exists. Creating'
mkdir $BDIR
fi
cp $SDIR/connectors/config.core.php $BDIR
cp $SDIR/core/config/config.inc.php $BDIR
chown -R $USER:$USER $BDIR
echo "Done."
elif [ "$MODE" == "2" ];
then
cp $BDIR/config.core.php $SDIR
cp $BDIR/config.core.php $SDIR/connectors
cp $BDIR/config.core.php $SDIR/manager
cp $BDIR/config.inc.php $SDIR/core/config
chown $USER:$USER $SDIR/config.core.php
chown $USER:$USER $SDIR/connectors/config.core.php
chown $USER:$USER $SDIR/manager/config.core.php
chown $USER:$USER $SDIR/core/config/config.inc.php
echo "Done."
elif [ "$MODE" == "0" ];
then
exit;
else
echo "Unknown MODE. Do nothing. Exit."
exit;
fi
Комментарии: 8
Так пути то всё равно придется править. Я не прав?
В этом вся суть — когда создаешь новый пустой сайт, в его конфигах правильные пути. При разворачивании дампа сайта с другого хостинга конфиги перезаписываются, пути в них становятся неправильными. Если же ты следующим шагом скопируешь конфиги от пустого сайта поверх старых от готового, все заработает без ручной правки.
Или я снова путано объяснил?
Или я снова путано объяснил?
Или я снова путано объяснил?
скопировать заранее конфиги в новом месте для сайта, чтобы потом руками не менять везде пути и логин/пароль к БД.Я вот почему то подумал про конфиги со старого сайта.
А теперь всё ясно, конец беготне по /manager/ /core /connectors/ и правке конфигов.
Закину в избранное, люблю баш скрипты =)
Спасибо!
А теперь всё ясно, конец беготне по /manager/ /core /connectors/ и правке конфигов.Именно ради этого и написан скрипт :)
В результате у меня теперь выкладывание сайта с тестового сервера на modhost сводится к:
1) запуску скрипта резервного копирования;
2) закачиванию архива на MH (напрямую, через wget);
3) запуску этого скрипта в режиме 1;
4) распаковке архива;
5) заливке БД;
6) запуску скрипта в режиме 2.
Выглядит все еще громоздко, но, фактически, работы на 2-3 минуты без учета длительности процесса архивирования и скачивания.
Было бы не плохо еще после восстановления конфигов из бэкапа удалять /core/cache/*
За скрипт — спасибо!
За скрипт — спасибо!
Лучше в бэкап не брать /core/cache
С этим никто не спорит, но если надо развернуть бэкап, которые создавал сервер, проще в скрипт добавить удаление (лишним точно не будет), чем сначала из архива удалить, а потом закачивать.
Ну или, по такой же логике, лучше в бэкап не брать: /config.core.php, /connectors/config.core.php, /manager/config.core.php, /core/config/config.inc.php
И тогда скрипт можно не использовать.
Ну или, по такой же логике, лучше в бэкап не брать: /config.core.php, /connectors/config.core.php, /manager/config.core.php, /core/config/config.inc.php
И тогда скрипт можно не использовать.
Пользуйся, только осторожно!
Добавил: При восстановлении конфигов — очищает /core/cache
Добавил: При восстановлении конфигов — очищает /core/cache
#!/bin/bash
USER=$1
if [ "$USER" == "" ];
then
USER=$(getent passwd $UID | sed -e 's/\:.*//')
fi
# Home directory
HOME=$(getent passwd $USER)
HOME=${HOME#*:/}
HOME='/'$(echo $HOME | cut -f1 -d:)
# Site directory
SDIR=$HOME'/www'
# Backup directory
BDIR=$HOME'/config_backup'
echo 'Running for user "'$USER'"'
echo "Enter mode (1 - backup config; 2 - restore config; 0 - exit):"
read MODE
if [ "$MODE" == "1" ];
then
if ! [ -d $BDIR ]; then
echo 'Backup directory '$BDIR' is not exists. Creating'
mkdir $BDIR
fi
cp $SDIR/connectors/config.core.php $BDIR
cp $SDIR/core/config/config.inc.php $BDIR
chown -R $USER:$USER $BDIR
echo "Done."
elif [ "$MODE" == "2" ];
then
cp $BDIR/config.core.php $SDIR
cp $BDIR/config.core.php $SDIR/connectors
cp $BDIR/config.core.php $SDIR/manager
cp $BDIR/config.inc.php $SDIR/core/config
chown $USER:$USER $SDIR/config.core.php
chown $USER:$USER $SDIR/connectors/config.core.php
chown $USER:$USER $SDIR/manager/config.core.php
chown $USER:$USER $SDIR/core/config/config.inc.php
rm -rf $SDIR/core/cache/
echo "Done."
elif [ "$MODE" == "0" ];
then
exit;
else
echo "Unknown MODE. Do nothing. Exit."
exit;
fi
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.