2

我在开发一个新项目时遇到了我的 QNAP NAS TS-251+ 的几个问题,这些问题是:

1) 没有 php 别名,当我通过命令行添加一个别名时,它会在 NAS Restart 时被删除。

2) Composer发生了类似的事情,除了重新启动它还会从系统中删除Composer 。

我怎样才能阻止这种情况发生或绕过它,以便当我的 NAS 重新启动时,php 和 composer 别名已经设置。

4

1 回答 1

1

我设法通过添加一个在我的 NAS 启动时运行的新脚本来解决这个问题。QNAP 提供了一些基本说明,说明如何在其 wiki 页面上的Running Your Own Application at Startup下添加启动脚本。但是我又添加了几个步骤

这些步骤是相当基本的:

  1. 通过 SSH 登录到您的 NAS 服务器。
  2. 运行以下命令mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config(运行ls /tmp/config会给你类似下面的东西)

<code>mount /sbin/hal_app</code> 命令输出

  1. 运行vi /tmp/config/autorun.sh这将允许您编辑/创建一个名为 autorun.sh 的文件**

  2. 对我来说,我想让这个文件尽可能简单,所以我不需要做太多的改变,所以脚本只是用这个 Shell 脚本调用的。所以将以下内容添加到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的脚本中的命令。

  1. 运行chmod +x /tmp/config/autorun.sh以确保它autorun.sh实际上是可运行的。

  2. 保存文件并运行umount /tmp/config(重要)。

  3. 导航到您放入的文件夹autorun.sh(在我的情况下为脚本/share/CACHEDEV1_DATA/.qpkg/autorun/),并沿您需要的方式创建任何文件夹。

  4. 使用创建新的 shell 文件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
  1. 运行chmod +x /share/CACHEDEV1_DATA/.qpkg/autorun/autorun_startup.sh以确保您的脚本是可运行的。

  2. 重新启动 NAS 系统以确保脚本已运行。为我的脚本重新启动后,我只是php -version通过终端确保 php 别名有效并且确实有效。

(*) 使用第 3 步和第 8 步,您可以通过 WinSCP 之类的方式执行此操作,也可以通过命令行 (SSH) 继续执行此操作。对我来说,我选择通过 WinSCP 来做,但这里仍然是 SSH 的命令

我对服务器相关的东西相当陌生,所以如果有人有更好的方法很酷。

于 2018-03-23T15:35:41.973 回答