我在开发一个新项目时遇到了我的 QNAP NAS TS-251+ 的几个问题,这些问题是:
1) 没有 php 别名,当我通过命令行添加一个别名时,它会在 NAS Restart 时被删除。
2) Composer发生了类似的事情,除了重新启动它还会从系统中删除Composer 。
我怎样才能阻止这种情况发生或绕过它,以便当我的 NAS 重新启动时,php 和 composer 别名已经设置。
我在开发一个新项目时遇到了我的 QNAP NAS TS-251+ 的几个问题,这些问题是:
1) 没有 php 别名,当我通过命令行添加一个别名时,它会在 NAS Restart 时被删除。
2) Composer发生了类似的事情,除了重新启动它还会从系统中删除Composer 。
我怎样才能阻止这种情况发生或绕过它,以便当我的 NAS 重新启动时,php 和 composer 别名已经设置。
我设法通过添加一个在我的 NAS 启动时运行的新脚本来解决这个问题。QNAP 提供了一些基本说明,说明如何在其 wiki 页面上的Running Your Own Application at Startup下添加启动脚本。但是我又添加了几个步骤
这些步骤是相当基本的:
mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config
(运行ls /tmp/config
会给你类似下面的东西)运行vi /tmp/config/autorun.sh
这将允许您编辑/创建一个名为 autorun.sh 的文件**
对我来说,我想让这个文件尽可能简单,所以我不需要做太多的改变,所以脚本只是用这个 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
的脚本中的命令。
运行chmod +x /tmp/config/autorun.sh
以确保它autorun.sh
实际上是可运行的。
保存文件并运行umount /tmp/config
(重要)。
导航到您放入的文件夹autorun.sh
(在我的情况下为脚本/share/CACHEDEV1_DATA/.qpkg/autorun/
),并沿您需要的方式创建任何文件夹。
使用创建新的 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
运行chmod +x /share/CACHEDEV1_DATA/.qpkg/autorun/autorun_startup.sh
以确保您的脚本是可运行的。
重新启动 NAS 系统以确保脚本已运行。为我的脚本重新启动后,我只是php -version
通过终端确保 php 别名有效并且确实有效。
(*) 使用第 3 步和第 8 步,您可以通过 WinSCP 之类的方式执行此操作,也可以通过命令行 (SSH) 继续执行此操作。对我来说,我选择通过 WinSCP 来做,但这里仍然是 SSH 的命令
我对服务器相关的东西相当陌生,所以如果有人有更好的方法很酷。