- Mitglied seit
- 15. Mai 2008
- Beiträge
- 21.900
- Punkte für Reaktionen
- 14
- Punkte
- 0
Um die vielen hier im Forum beschriebenen 3rd-party-applications auch per spk-Paketmanagement nutzen zu können, müssen Vorarbeiten erledigt werden. Diese Vorarbeiten bereiten den sys-Apache-Web-Server darauf vor, die (administrativen) Zugriffe auf Dateien und Programme zu ermöglichen, die von einzelnen 3rd-party-applications verwendet werden.
Dies kann man manuell durchführen, gemäß der Anleitungen aus dem Wiki oder aus folgendem Thread.
Alternativ gibt es aber auch jetzt auch das Init_3rdparty.spk-Paket, welches diese Vorarbeiten durchführt (siehe Anhang).
Das Paket kann im Paket-Manager 'gestartet' werden, dann wird die Konfiguration des sys-Apache und der PHO-ini vorgenommen. Beim ersten Mal wird eine Sicherung (.bak) dieser beiden Dateien angefertigt. Nach der Änderung der Konfiguration wird der sys-Apache neu gestartet und der Paket-Manager meldet einen Fehler. Das ist richtig so!
Warum? Weil wenn der sys-Apache gerade nicht läuft, dann kann der Status nicht abgefragt werden, was zu dieser Fehlermeldung führt.
1 Minute warten und dann im Paket-Manager die Info abrufen -> Protokoll anschauen! Und da steht dann, dass der sys-Apache neu gestartet wurde (sonst hätte man die Info und das Protokoll auch gar nicht mehr aufrufen können).
Man kann das 'Starten' noch öfters vornehmen. Es werden jedesmal die Dateien neu geändert und der sys-Apache-Web-Server neu gestartet. Das ist möglicherweise bei einem Firmware-Update sinnvoll, weil da die Konfigurations-Dateien wieder im originalen Zustand sind.
Stoppen macht eigentlich nichts weiter, außer, dass der der Status sich ändert.
Das Paket installiert zudem einen 3rd-party-apps-Eintrag für das Skript phpinfo.php, den man nach 'Refresh' der DS-Manager-Seite auch unter den Third-party applications sehen kann. Das Skript phpinfo.php zeigt die PHP-Konfiguration sowohl für den sys-Apache als auch den user-Apache an (beide Web-Server verwenden die gleiche PHP-Konfigurationsdatei).
Hintergrund-Infos:
Was wird im Skript ausgeführt, wenn ich auf 'Starten' klicke?
(aktuelle Fassung)
Was ist eigentlich das Paket-Management?
Antworten und Erläuterungen gibt es in diesem Thread.
Wo finde ich die Paket-Informationen auf der Platte, insbesondere für eine 3rd-party application?
Die Installation durch das Paket-Management produziert folgende Strukturen:
Die beiden Einträge mit einem -> sind symbolische Links.
Selbstverständlich geht alles wieder auf eigene Kappe . Das Init_3rdparty.spk-Paket steht auch unter GPL3.
itari
Aktualisierung!!! Im Skript waren Fehler, die dazu führten, dass die php.ini nicht aktualisiert wurden. Dies ist nun bereinigt. Anbei hängt nun die aktuellste Version des Init_3rdparty.spk-Pakets. Nun kann man auch jederzeit über 'Info abrufen'->'Protokoll' sehen, ob die Veränderungen der php.ini erfolgt sind.
Die aktuellste Version ist angehangen.
Es gibt bei der neusten Firmware ein Verhalten (Shell-Variablen werden nicht besetzt), welches bei der Protokollierung etwas Probleme macht. Hierzu gibt es jetzt die Version 1.5. Allerdings hat diese eine Einschränkung: Man kann sie sinnvoll nur auf dem /volume1 installieren (wegen dem Protokoll-Pfad).
.
Dies kann man manuell durchführen, gemäß der Anleitungen aus dem Wiki oder aus folgendem Thread.
Alternativ gibt es aber auch jetzt auch das Init_3rdparty.spk-Paket, welches diese Vorarbeiten durchführt (siehe Anhang).
Das Paket kann im Paket-Manager 'gestartet' werden, dann wird die Konfiguration des sys-Apache und der PHO-ini vorgenommen. Beim ersten Mal wird eine Sicherung (.bak) dieser beiden Dateien angefertigt. Nach der Änderung der Konfiguration wird der sys-Apache neu gestartet und der Paket-Manager meldet einen Fehler. Das ist richtig so!
Warum? Weil wenn der sys-Apache gerade nicht läuft, dann kann der Status nicht abgefragt werden, was zu dieser Fehlermeldung führt.
1 Minute warten und dann im Paket-Manager die Info abrufen -> Protokoll anschauen! Und da steht dann, dass der sys-Apache neu gestartet wurde (sonst hätte man die Info und das Protokoll auch gar nicht mehr aufrufen können).
Man kann das 'Starten' noch öfters vornehmen. Es werden jedesmal die Dateien neu geändert und der sys-Apache-Web-Server neu gestartet. Das ist möglicherweise bei einem Firmware-Update sinnvoll, weil da die Konfigurations-Dateien wieder im originalen Zustand sind.
Stoppen macht eigentlich nichts weiter, außer, dass der der Status sich ändert.
Das Paket installiert zudem einen 3rd-party-apps-Eintrag für das Skript phpinfo.php, den man nach 'Refresh' der DS-Manager-Seite auch unter den Third-party applications sehen kann. Das Skript phpinfo.php zeigt die PHP-Konfiguration sowohl für den sys-Apache als auch den user-Apache an (beide Web-Server verwenden die gleiche PHP-Konfigurationsdatei).
Hintergrund-Infos:
Was wird im Skript ausgeführt, wenn ich auf 'Starten' klicke?
Code:
#!/bin/sh
LOG="/var/packages/${SYNOPKG_PKGNAME}/log"
STR1="AddType application/x-httpd-php .php"
STR2="LoadModule php5_module /lib/libphp5.so"
STR3="Options ExecCGI FollowSymLinks MultiViews"
PATH1="/usr/syno/apache/conf/httpd.conf-sys"
STR4="safe_mode = Off"
STR5="safe_mode_exec_dir ="
STR6="safe_mode_include_dir ="
STR7="open_basedir ="
STR8="doc_root ="
STR9="allow_url_fopen = On"
STRA="magic_quotes_gpc = Off"
PATH2="/usr/syno/etc/php.ini"
case $1 in
start)
test -f ${PATH1}.bak || cp $PATH1 ${PATH1}.bak
grep "$STR1" $PATH1 >/dev/null || (echo "$STR1" >>$PATH1 && echo "$STR1 added" >>$LOG)
grep "$STR2" $PATH1 >/dev/null || (echo "$STR2" >>$PATH1 && echo "$STR2 added" >>$LOG)
grep "$STR3" $PATH1 >/dev/null || (sed "s/ *Options.*/$STR3/" <$PATH1 >${PATH1}.new && mv ${PATH1}.new $PATH1 && echo "$STR3 changed" >>$LOG)
test -f ${PATH2}.bak || cp $PATH2 ${PATH2}.bak
for i in "$STR4" "$STR5" "$STR6" "$STR7" "$STR8" "$STR9" "$STRA"; do
grep -E "^${i}$" $PATH2 >/dev/null || (echo "$i" >>$PATH2 && echo "$i added" >>$LOG)
done
/usr/syno/etc/rc.d/S97apache-sys.sh restart 2>&1 >>$LOG
date +'%c started' >>$LOG ;;
stop) date +'%c stopped' >>$LOG ;;
status) if tail -1 $LOG | grep started; then exit 0; else exit 1; fi ;;
log)
LAST_STATUS=$(tail -1 $LOG)
echo >>$LOG
for i in "$STR4" "$STR5" "$STR6" "$STR7" "$STR8" "$STR9" "$STRA"; do
grep -E "^${i}$" $PATH2 >>$LOG
done
echo $LAST_STATUS >>$LOG
echo "$LOG" ;;
esac
Was ist eigentlich das Paket-Management?
Antworten und Erläuterungen gibt es in diesem Thread.
Wo finde ich die Paket-Informationen auf der Platte, insbesondere für eine 3rd-party application?
Die Installation durch das Paket-Management produziert folgende Strukturen:
Code:
/volume1/@appstore/xyz_irgendwas/application.cfg
/volume1/@appstore/xyz_irgendwas/ico16.ico
/volume1/@appstore/xyz_irgendwas/ico32.ico
/volume1/@appstore/xyz_irgendwas/xyz_irgendwas.php oder .cgi
/var/packages/xyz_irgendwas/INFO
/var/packages/xyz_irgendwas/scripts/preinst
/var/packages/xyz_irgendwas/scripts/preuninst
/var/packages/xyz_irgendwas/scripts/postinst
/var/packages/xyz_irgendwas/scripts/postuninst
/var/packages/xyz_irgendwas/scripts/start-stop-status
/var/packages/xyz_irgendwas/target -> /volume1/@appstore/xyz_irgendwas)
/usr/syno/synoman/webman/3rdparty/xyz_irgendwas -> /volume1/@appstore/xyz_irgendwas/xyz_irgendwas.php oder .cgi
Die beiden Einträge mit einem -> sind symbolische Links.
Selbstverständlich geht alles wieder auf eigene Kappe . Das Init_3rdparty.spk-Paket steht auch unter GPL3.
itari
Aktualisierung!!! Im Skript waren Fehler, die dazu führten, dass die php.ini nicht aktualisiert wurden. Dies ist nun bereinigt. Anbei hängt nun die aktuellste Version des Init_3rdparty.spk-Pakets. Nun kann man auch jederzeit über 'Info abrufen'->'Protokoll' sehen, ob die Veränderungen der php.ini erfolgt sind.
Die aktuellste Version ist angehangen.
Es gibt bei der neusten Firmware ein Verhalten (Shell-Variablen werden nicht besetzt), welches bei der Protokollierung etwas Probleme macht. Hierzu gibt es jetzt die Version 1.5. Allerdings hat diese eine Einschränkung: Man kann sie sinnvoll nur auf dem /volume1 installieren (wegen dem Protokoll-Pfad).
.
Anhänge
Zuletzt bearbeitet: