Init_3rdparty Skript und Sammlung von 3rd-Party Erweiterungen

itari

Benutzer
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?

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
(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:

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 :D. 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

  • Init_3rdparty.spk
    10,5 KB · Aufrufe: 2.060
  • Init_3rdparty_1.5.spk
    10,5 KB · Aufrufe: 4.670
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Für eine Reihe weiterer 3rd-party applications ist die Installation des ipkg notwendig.

Für die Hinzufügung und Aktualisierung der ipkg-Pakete empfehle ich, das Web-Interface des ipkg zu installieren (siehe hier - Posts am Ende), welches uns noreway freundlicherweise angepasst und auch als spk-Paket zur Verfügung gestellt hat.

itari
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Zwei spk-Pakete habe ich ja schon als Post hier im Forum veröffentlicht. Mittlerweile habe ich sie noch ein wenig angepasst:

WebEditor
WebShell

Dazu gekommen sind

Commands
HelpDesk
AutoMate

Die genauen Beschreibungen kann man hier im Forum an anderer Stelle nachlesen.

Selbstverständlich geht alles wieder auf eigene Kappe :D. Die spk-Pakete sowie die dadurch installierten Skripte stehen auch unter GPL3.

itari
 

Anhänge

  • WebEditor.spk
    235 KB · Aufrufe: 2.562
  • WebShell.spk
    10 KB · Aufrufe: 2.574
  • Commands.spk
    9,5 KB · Aufrufe: 1.183
  • HelpDesk.spk
    9,5 KB · Aufrufe: 944
  • AutoMate.spk
    10 KB · Aufrufe: 2.170
Zuletzt bearbeitet:

noreway

Benutzer
Mitglied seit
16. Okt 2008
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Ciao itari

In deinem Code ist noch ein Vertipper:
SRT2="LoadModule php5_module /lib/libphp5.so"

Danke für deine Arbeit!
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Weitere 3rd-party applications als spk-Pakete sind

Benchmark
MgetFTP
MySQLBackup

und

Unzip.

Für letztes sind die folgenden ipkg-Pakete zu installieren: tar, unzip und unrar.

Die genauen Beschreibungen kann man hier im Forum an anderer Stelle nachlesen.

Selbstverständlich geht alles wieder auf eigene Kappe :D. Die spk-Pakete sowie die dadurch installierten Skripte stehen auch unter GPL3.

itari
 

Anhänge

  • MySQLbackup.spk
    10,5 KB · Aufrufe: 451
  • Unzip.spk
    11,5 KB · Aufrufe: 779
  • MgetFTP.spk
    10 KB · Aufrufe: 454
  • Benchmark.spk
    9,5 KB · Aufrufe: 1.203
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ciao itari

In deinem Code ist noch ein Vertipper:
SRT2="LoadModule php5_module /lib/libphp5.so"

Danke für deine Arbeit!

Danke für den Hinweis. Hab es geändert.

itari

PS. Wer noch Fehler findet, bitte melden. Es läuft zwar alles auf meinem System, aber da ich ja schon viel modifiziert habe, bekomme ich halt nicht immer alles so heraus, wie es bei euch sein kann.
 

noreway

Benutzer
Mitglied seit
16. Okt 2008
Beiträge
23
Punkte für Reaktionen
0
Punkte
0
Im Paket Benchmark.spk steckt das INFO-File von Unzip.spk
 

noreway

Benutzer
Mitglied seit
16. Okt 2008
Beiträge
23
Punkte für Reaktionen
0
Punkte
0

Anhänge

  • IPKGWeb-0.2.spk
    10,5 KB · Aufrufe: 4.462
  • PSLink-0.1.spk
    8,5 KB · Aufrufe: 342
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
So anbei das spk-Paket für die Administration der Postgres-Datenbank. Anleitung gibt es auf der Homepage.

Das Paket muss man 'starten', damit der phppgadmin an die richtige Stelle verschoben wird (/usr/syno/synoman/phpsrc). Ich hab das mit 'Starten' eingebaut, damit man es auch nach einem Firmware-Update wiederholen kann.

Benutzer ist admin - Kennwort gibt es nicht (ist so von Synology vorgesehen),

itari
 

Anhänge

  • phpPgAdmin.spk
    1,1 MB · Aufrufe: 398

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Eine neue Version des Init_3rdparty.spk-Pakets steht im ersten Post zur Verfügung.

itari
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Vielleicht könnte man das Skript noch um ein paar Dinge erweitern - ich erweitere in der php.ini auch immer noch "post_max_size" und "upload_max_filesize" sowie die Skriptlaufzeiten und das Memory-Limit.

In der httpd.config.sys könnte man noch "mod_headers.so" und "mod_rewrite.so" einfügen, wie von Jahlives vorgeschlagen.

Trolli
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Vielleicht könnte man das Skript noch um ein paar Dinge erweitern - ich erweitere in der php.ini auch immer noch "post_max_size" und "upload_max_filesize" sowie die Skriptlaufzeiten und das Memory-Limit.

welche Werte schweben dir denn da vor?

In der httpd.config.sys könnte man noch "mod_headers.so" und "mod_rewrite.so" einfügen, wie von Jahlives vorgeschlagen.

mod_rewrite.so bau ich ein
mod_headers.so ist bei mir (728) bereits drinne ... ????


Trolli

Grüße itari
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Ich bin da mit den Werten eher großzügig:
Code:
post_max_size = 512M
upload_max_filesize = 512M
max_execution_time = 2400
max_input_time = 600
memory_limit = 32M
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hast du schonmal eine Datei grösser als 32M hochladen können?
Setzt die maximal erlaubte Größe von POST-Daten. Diese Option betrifft auch den Datei-Upload. Um größere Dateien hochzuladen, muss der Wert größer sein als upload_max_filesize. Wenn eine maximale Speichergrenze während des Kompilierens aktiviert wurde, dann betrifft auch memory_limit den Datei-Upload. Allgemein sollte memory_limit größer als post_max_size sein.
Quelle
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Ja. Klar. Kein Problem. Auch mehrere hundert MB funktionieren.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die PHP-Werte kann man natürlich auch mit ini_set() direkt im PHP-Skript setzen und so nach belieben für das jeweilige Skript anpassen

itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Die PHP-Werte kann man natürlich auch mit ini_set() direkt im PHP-Skript setzen und so nach belieben für das jeweilige Skript anpassen

itari
Kommt aber ganz darauf an welche Werte ;)
Viele Werte lassen sich keinesfalls zur Laufzeit setzen (so z.B. das Upload tmp dir). Auch den Speicher (max_memory_limit) kannst du afaik nicht hochsetzen sondern nur reduzieren
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ja natürlich kommt es auf die Direktiven an. Alle 5 Werte, die im Post weiter oben angefordert angesprochen wurden, können per ini_set() geändert werden. :rolleyes:

itari
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat