Я столкнулся с парой проблем с моим QNAP NAS TS-251 + при разработке нового проекта:
1) Псевдоним php отсутствует, и когда я добавляю его через командную строку, он удаляется при перезапуске NAS.
2) похожая вещь случается для Композитор кроме как при перезагрузке он удаляет Композитор а также из системы.
Как я могу предотвратить это или обойти это так, чтобы при перезапуске моего NAS псевдоним php и composer уже был установлен.
Мне удалось решить эту проблему, добавив новый скрипт, который запускается при запуске моего NAS. QNAP предоставил несколько основных инструкций о том, как добавить скрипт запуска на их вики-страницу под Запуск собственного приложения при запуске. Однако я добавил еще пару шагов к
Эти шаги довольно просты:
mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config
(Бег ls /tmp/config
даст вам что-то похожее ниже)Бежать vi /tmp/config/autorun.sh
это позволит вам редактировать / создавать файл с именем autorun.sh **
Для меня я хотел, чтобы этот файл был как можно более простым, чтобы мне не нужно было сильно его менять, поэтому сценарий просто вызывается из этого сценария оболочки. Поэтому добавьте следующее autorun.sh
,
Пример кода autorun.sh:
#!/bin/sh
# autorun script for Turbo NAS
/share/CACHEDEV1_DATA/.qpkg/autorun/autorun_startup.sh start
exit 0
Вы заметите путь /share/CACHEDEV1_DATA/.qpkg/autorun/
это то место, где содержится мой новый скрипт, который я хочу запустить, вам не нужно иметь свой здесь, если вы этого не хотите, однако я знаю, что скрипт не будет удален, если он будет размещен здесь. autorun_startup.sh
это имя скрипта, который я хочу запустить, и start
это команда в сценарии, которую я хочу запустить.
Бежать chmod +x /tmp/config/autorun.sh
чтобы убедиться, что autorun.sh
на самом деле работает
Сохраните файл и запустите umount /tmp/config
(Важный).
Перейдите к папке, которую вы положили в autorun.sh
(скрипт в моем случае /share/CACHEDEV1_DATA/.qpkg/autorun/
) и создайте любые нужные вам папки.
Создайте свой новый файл оболочки, используя vi
и называйте это как хотите (опять же в моем случае это называется autorun_startup.sh
) и добавьте ваш скрипт в файл. Скрипт, который я добавил, находится ниже, но вы можете добавить в скрипт запуска все, что захотите.
Пример кода autorun_startup.sh:
#!/bin/sh
RETVAL=0
QPKG_NAME="autorun"APACHE_ROOT=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f
/etc/config/def_share.info`
QPKG_DIR=$(/sbin/getcfg $QPKG_NAME Install_Path -f /etc/config/qpkg.conf)
addPHPAlias() {
/bin/cat /etc/profile | /bin/grep "php" | /bin/grep "/usr/local/apache/bin/php" 1>>/dev/null 2>>/dev/null
[ $? -ne 0 ] && /bin/echo "alias php='/usr/local/apache/bin/php'" >> /etc/profile
}
addComposerAlias() {
/bin/cat /etc/profile | /bin/grep "composer" | /bin/grep "/usr/local/bin/composer" 1>>/dev/null 2>>/dev/null
[ $? -ne 0 ] && /bin/echo "alias composer='/usr/local/bin/composer'" >> /etc/profile
}
addPHPComposerAlias() {
/bin/cat /etc/profile | /bin/grep "php-composer" | /bin/grep "/usr/local/apache/bin/php /usr/local/bin/composer" 1>>/dev/null 2>>/dev/null
[ $? -ne 0 ] && /bin/echo "alias php-composer='php /usr/local/bin/composer'" >> /etc/profile
}
download_composer() {
curl -sS https://getcomposer.org/installer | /usr/local/apache/bin/php -- --install-dir=/usr/local/bin --filename=composer
}
case "$1" in
start)
/bin/echo "Enable PHP alias..."/sbin/log_tool -t 0 -a "Enable PHP alias..."addPHPAlias
/bin/echo "Downloading Composer..."/sbin/log_tool -t 0 -a "Downloading Composer..."download_composer
/bin/echo "Enable composer alias..."/sbin/log_tool -t 0 -a "Enable composer alias..."addComposerAlias
/bin/echo "Adding php composer alias..."/sbin/log_tool -t 0 -a "Adding php composer alias..."addPHPComposerAlias
/bin/echo "Use it: php-composer"/sbin/log_tool -t 0 -a "Use it: php-composer"
;;
stop)
;;
restart)
;;
*)
echo "Usage: $0 {start|stop|restart}"exit 1
esac
exit $RETVAL
Бежать chmod +x /share/CACHEDEV1_DATA/.qpkg/autorun/autorun_startup.sh
чтобы убедиться, что ваш скрипт работает.
Перезагрузите систему NAS, чтобы убедиться, что скрипт запущен. После перезапуска для моего скрипта я просто сделал php -version
через терминал, чтобы убедиться, что псевдоним php работает, и он сделал.
(*) С шагами 3 и 8 вы можете сделать это через что-то вроде WinSCP или продолжить делать это через командную строку (SSH). Для меня я решил сделать это через WinSCP, но здесь команда все еще для SSH
Я довольно новичок в вопросах, связанных с сервером, так что если у кого-то есть способ лучше.
Других решений пока нет …