2015-01-10 2 views
1

Я хочу запустить Seafile (облачный сервер, который нуждается в MySQL) при загрузке моей малины Pi. Моя проблема заключается в том, что Seafile запускается для mysql и вызывает много ошибок, потому что для файла seafile требуется mysql. я принял рекомендованный сценарий:Запустить скрипт при загрузке после запуска MySQL

#! /bin/sh 
# /etc/init.d/seafile 

### BEGIN INIT INFO 
# Provides:   seafile 
# Required-Start: $local_fs $remote_fs $network mysql 
# Required-Stop:  $local_fs 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Script to start/stop/restart seafile 
# Description:  Simple script to start, stop or restart seafile for the cloud 
### END INIT INFO 

# Change the value of "user" to your linux user name 
user=chromo 

# Change the value of "script_path" to your path of seafile installation 
seafile_dir=/home/chromo/cloud 
script_path=${seafile_dir}/seafile-server-latest 
seafile_init_log=${seafile_dir}/logs/seafile.init.log 
seahub_init_log=${seafile_dir}/logs/seahub.init.log 

# Change the value of fastcgi to true if fastcgi is to be used 
fastcgi=true 
# Set the port of fastcgi, default is 8000. Change it if you need different. 
fastcgi_port=8000 

case "$1" in 
    start) 
      sudo -u ${user} ${script_path}/seafile.sh start >> ${seafile_init_log} 
if [ $fastcgi = true ]; 
      then 
        sudo -u ${user} ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} >> ${seahub_init_log} 
      else 
        sudo -u ${user} ${script_path}/seahub.sh start >> ${seahub_init_log} 
      fi 
    ;; 
    restart) 
      sudo -u ${user} ${script_path}/seafile.sh restart >> ${seafile_init_log} 
      if [ $fastcgi = true ]; 
      then 
        sudo -u ${user} ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} >> ${seahub_init_log} 
      else 
        sudo -u ${user} ${script_path}/seahub.sh restart >> ${seahub_init_log} 
      fi 
    ;; 
stop) 
      sudo -u ${user} ${script_path}/seafile.sh $1 >> ${seafile_init_log} 
      sudo -u ${user} ${script_path}/seahub.sh $1 >> ${seahub_init_log} 
    ;; 
    *) 
      echo "Usage: /etc/init.d/seafile {start|stop|restart}" 
      exit 1 
    ;; 
esac 

Может кто-нибудь мне помочь?

ответ

0

Лучше всего установить приоритет для запуска этих служб в файле /etc/rc[runlevel].d.

В вашем случае первое, что нужно проверить, - это уровень запуска, к которому вы загрузили. Вы можете проверить это, используя команду «runlevel». Вы также можете проверить

Скажите, что вы были загружены на уровень запуска 3. Вы можете переименовать текущий файл морского файла в каталог «/etc/rc3.d».

Для например:

Если два файла

/etc/rc3.d/20seafile 
/etc/rc3.d/50mysql 

Переименовать файл как 70seafile или что-либо выше, чем 50.

Это должно решить проблему, с которой столкнулись в настоящее время.

Другой обходной путь будет извлекая ссылку seafile в /etc/init.d каталог и поместить строку говоря

/etc/init.d/seafile start 

внутри файла /etc/rc.local

Пожалуйста, проверьте это и дайте мне знать, если он имеет исправил проблему для вас.

+0

Благодарим за помощь, но это не работает для меня. «Runlevel» показал мне «n 2», поэтому моя система работает на 2, затем я устанавливаю количество файлов в море выше MySQL, но это не работает. Второе решение тоже не работает, поскольку rc.local, похоже, выполняется, только когда я вхожу в систему за ssh. – Chromo

+0

ОК, я получил это сейчас! Я работаю с Debian an в этом дистрибутиве, номер (например, S20 и S50) игнорируется. Я добавил в LSB-Infos в Required-Start: mysql и выполнил команду: sudo insserv -d. – Chromo

+0

@Chromo .. Great !! Как-то я думал только о Centos-серверах. –