1#!/usr/local/bin/bash 2 3SCRIPT=$(readlink -f "$0") # haiwen/seafile-server-1.3.0/upgrade/upgrade_xx_xx.sh 4UPGRADE_DIR=$(dirname "$SCRIPT") # haiwen/seafile-server-1.3.0/upgrade/ 5INSTALLPATH=$(dirname "$UPGRADE_DIR") # haiwen/seafile-server-1.3.0/ 6TOPDIR=$(dirname "${INSTALLPATH}") # haiwen/ 7default_ccnet_conf_dir=${TOPDIR}/ccnet 8default_seafile_data_dir=${TOPDIR}/seafile-data 9default_seahub_db=${TOPDIR}/seahub.db 10 11export CCNET_CONF_DIR=${default_ccnet_conf_dir} 12export PYTHONPATH=${INSTALLPATH}/seafile/lib/python2.6/site-packages:${INSTALLPATH}/seafile/lib64/python2.6/site-packages:${INSTALLPATH}/seafile/lib/python2.7/site-packages:${INSTALLPATH}/seahub/thirdpart:$PYTHONPATH 13export PYTHONPATH=${INSTALLPATH}/seafile/lib/python2.7/site-packages:${INSTALLPATH}/seafile/lib64/python2.7/site-packages:$PYTHONPATH 14 15prev_version=1.4 16current_version=1.5 17 18echo 19echo "-------------------------------------------------------------" 20echo "This script would upgrade your seafile server from ${prev_version} to ${current_version}" 21echo "Press [ENTER] to contiune" 22echo "-------------------------------------------------------------" 23echo 24read dummy 25 26function check_python_executable() { 27 if [[ "$PYTHON" != "" && -x $PYTHON ]]; then 28 return 0 29 fi 30 31 if which python2.7 2>/dev/null 1>&2; then 32 PYTHON=python2.7 33 elif which python27 2>/dev/null 1>&2; then 34 PYTHON=python27 35 elif which python2.6 2>/dev/null 1>&2; then 36 PYTHON=python2.6 37 elif which python26 2>/dev/null 1>&2; then 38 PYTHON=python26 39 else 40 echo 41 echo "Can't find a python executable of version 2.6 or above in PATH" 42 echo "Install python 2.6+ before continue." 43 echo "Or if you installed it in a non-standard PATH, set the PYTHON enviroment varirable to it" 44 echo 45 exit 1 46 fi 47} 48 49function read_seafile_data_dir () { 50 seafile_ini=${default_ccnet_conf_dir}/seafile.ini 51 if [[ ! -f ${seafile_ini} ]]; then 52 echo "${seafile_ini} not found. Now quit" 53 exit 1 54 fi 55 seafile_data_dir=$(cat "${seafile_ini}") 56 if [[ ! -d ${seafile_data_dir} ]]; then 57 echo "Your seafile server data directory \"${seafile_data_dir}\" is invalid or doesn't exits." 58 echo "Please check it first, or create this directory yourself." 59 echo "" 60 exit 1; 61 fi 62} 63 64check_python_executable 65read_seafile_data_dir 66 67export SEAFILE_CONF_DIR=$seafile_data_dir 68 69# test whether seafile server has been stopped. 70if pgrep seaf-server 2>/dev/null 1>&2 ; then 71 echo 72 echo "seafile server is still running !" 73 echo "stop it using scripts before upgrade." 74 echo 75 exit 1 76elif pgrep -f "manage.py run_gunicorn" 2>/dev/null 1>&2 ; then 77 echo 78 echo "seahub server is still running !" 79 echo "stop it before upgrade." 80 echo 81 exit 1 82fi 83 84echo 85echo "------------------------------" 86echo "migrating avatars ..." 87echo 88media_dir=${INSTALLPATH}/seahub/media 89orig_avatar_dir=${INSTALLPATH}/seahub/media/avatars 90dest_avatar_dir=${TOPDIR}/seahub-data/avatars 91 92# move "media/avatars" directory outside 93if [[ ! -d ${dest_avatar_dir} ]]; then 94 mkdir -p "${TOPDIR}/seahub-data" 95 mv "${orig_avatar_dir}" "${dest_avatar_dir}" 2>/dev/null 1>&2 96 ln -s ../../../seahub-data/avatars ${media_dir} 97 98elif [[ ! -L ${orig_avatar_dir} ]]; then 99 mv ${orig_avatar_dir}/* "${dest_avatar_dir}" 2>/dev/null 1>&2 100 rm -rf "${orig_avatar_dir}" 101 ln -s ../../../seahub-data/avatars ${media_dir} 102fi 103 104echo "DONE" 105echo "------------------------------" 106echo