![]() |
Nginx GUI Administrator
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Abend lieber DP'ler,
heute wollte ich euch mal meine erstes "Public Tool" vorstellen. Habs auch gleich OpenSource veröffentlicht auf GitHub. Link dazu findet ihr hier: ![]() Auf die Idee bin ich gekommen als ich letztens die Windows Version von Nginx ausprobiert habe. Da der Server quasi nur im Hintergrund läuft ohne irgendwelche GUI Verwaltungstools hab ich mich dazu entschlossen ein eigenes kleines Admintool dafür zu schreiben. Nginx Windows Webserver: ![]() Bisherige Funktionen:
Anleitung: Schiebt die nginxGUI.exe einfach in den Ordner von nginx. Bitte an der Ordnersturktur vom nginx Ordner nichts verändern. Sonst kann es zu Fehlfunktionen kommen. Freue mich auf Vorschläge, Kritik & eventuell auch ein kleines Lob :) So dann wünsch ich euch auch noch ein schönes Wochenende. |
AW: Nginx GUI Administrator
Keiner ? :oops:
|
AW: Nginx GUI Administrator
Ich hab dein Projekt (schon letzte Woche) geforkt kann es allerdings mangels Compiler nicht testen.
Die globalen Variablen in Unit main würde ich in die Formularklasse verschieben:
Delphi-Quellcode:
Die
IsRunning : Boolean = False;
IsAutoStart : Boolean = False; sConfPath: String;
Delphi-Quellcode:
gehört nicht in die Klasse TGUI sondern sollte eine ganze normale Funktion sein.
function TGUI.OnlyNumbersInString()
Delphi-Quellcode:
ist etwas unschön, weil dem Benutzer nur die Meldung 'Invalid config path.' gegeben wird und die Angabe des Pfads inkl. Dateiname fehlt.
procedure TGUI.btEdtConfClick
|
AW: Nginx GUI Administrator
Wenn du das noch hinkriegst, dass es über ssh / scp läuft, probier ich es aus. Vielleicht noch eine IP Filterfunktion für die Logs und eine Anzeige in einer vernüftigen Tabelle. Aber im Moment kann ich ehrlich gesagt keinen richtigen Vorteil gegenüber der der manuellen Administration mittels Notepad++ oder vim erkennen.
EDIT: So könnte man die Logs mittels scp auslesen:
Delphi-Quellcode:
Ich kann es mangels Delphi nicht testen, aber so ungefähr müsste es funktionieren.
procedure TGUI.loadErrors;
var sLogPath: String; p1 : String; stream: TStream; begin sLogPath := GetCurrentDir; p1 := sLogPath + '\logs\' + 'error.log'; self.downloadFile(p1, '/var/log/nginx/error.log'); //sollte aus einer config kommen, da unterschiedlich je nach OS stream := TFileStream.Create(p1, fmOpenRead or fmShareDenyNone); try Memo2.Lines.LoadFromStream(stream); finally stream.Free; end; end; //http://www.delphipraxis.net/98541-warten-bis-aufgerufener-prozess-beendet-ist.html procedure TGUI.ShellExecAndWait(dateiname: string; Parameter: string); var executeInfo: TShellExecuteInfo; dw: DWORD; begin FillChar(executeInfo, SizeOf(executeInfo), 0); with executeInfo do begin cbSize := SizeOf(executeInfo); fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; Wnd := GetActiveWindow(); executeInfo.lpVerb := 'open'; executeInfo.lpParameters := PChar(Parameter); lpFile := PChar(dateiname); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@executeInfo) then dw := executeInfo.HProcess else begin ShowMessage('Fehler: ' + SysErrorMessage(GetLastError)); Exit; end; while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do Application.ProcessMessages; CloseHandle(dw); end; procedure TGUI.downloadFile(pathLocal: String; pathRemote: String) var pscpCmdLineBase: String; begin pscpCmdLineBase := '-P 1234 -i .\schlüsseldatei.ppk username@example.com:%s .\%s '; //das hier sollte natürlich aus einer Config-Datei oder Benutzereingabe stammen self.ShellExecAndWait('pscp.exe', Format(pscpCmdLineBase, [pathRemote, pathLocal])); //pscp.exe ins verzeichnis legen end; |
AW: Nginx GUI Administrator
@WM_CLOSE
Ich glaube du hast noch nicht richtig mitbekommen, dass dieses Projekt nur für Windows konzipiert wurde von mir. Es ist auch nur mit der Windows nginx Version kompatibel :) @sx2008 Danke für's Feedback ich kümmer mich drum. |
AW: Nginx GUI Administrator
Hmmm...
Jetzt sind die globalen Variablen immer noch global:
Delphi-Quellcode:
Verschieben nach TGUI ist doch viel besser:
unit functions;
interface var {global sichtbar} IsRunning : Boolean = False; IsAutoStart : Boolean = False; sConfPath: String;
Delphi-Quellcode:
Private Variablen in Klassen werden in Delphi autom. mit 0 initialisiert; IsRunning und IsAutoStart sind also zu Beginn =False.
type
TGUI = class(TForm) MainBox: TGroupBox; .... private IsRunning : Boolean; IsAutoStart : Boolean; sConfPath: String; function AutoStartExist: Boolean; Es ist üblich private Variablen den Prefix "F" (für Field) vorneanzustellen.
Delphi-Quellcode:
private
FIsRunning : Boolean; FIsAutoStart : Boolean; FConfPath: String; |
AW: Nginx GUI Administrator
Zitat:
Die Umsetzung, damit es auch auf einem entfernten Server liegt mittels ssh ist nicht besonders schwer, wie man am gezeigten Beispiel sieht. Es werden fertige Tools aus dem PUTTY Client benutzt, um dieselben Dateien, die du momentan von der Festplatte lädst, eben von einem ssh Server zu holen. Das Schreiben ist auch nicht schwer. Das einzige Problem, das man sehen könnte, ist dass das Starten/Beenden/Autostart unter Linux anders funktioniert. Das ließe sich z.B. durch eine Einstellung in einer Konfigurationsdatei anpassen. So funktioniert das unter Linux: Kommandos einfach über ssh schicken.
Code:
Mir ist natürlich klar, dass du erstmal die Variante mit dem geringsten Widerstand genommen hast und nur das Nötigste umgesetzt hast, aber wenn du das Projekt schon als "fertig" bezeichnen würdest, wäre ich schwer enttäuscht. Nginx ist numal hauptsächlich auf dem Linux Server interessant, weshalb ich die Lösung mittels scp vorgeschlagen habe.
/etc/init.d/nginx start
/etc/init.d/nginx stop /etc/init.d/nginx restart Ich persönlich sehe in nginx auf dem Desktop (lassen wir Windows Server mal außen vor) keinen Vorteil gegenüber Apache, weshalb er auch im Desktopbereich nicht so häufig eingesetzt wird. Die Vorteile spielt nginx erst bei großem Load aus, den man auf dem Desktop normalerweise nicht hat. PS: Ich begrüße natürlich das Projekt, aber der Funktionsumfang (er ist bis jetzt lediglich ein Starter und Logbetrachter (sogar die config machst du nur in notepad auf.)) ist mir als nginx Benutzer einfach zu schmal. Betrachte das nicht als Beleidigung, sondern eben als konstruktive Kritik. Wenn ich vorhätte dich zu ärgern, hätte ich auf die diversen anderen Tools verwiesen, oder selbst eines verfasst. |
AW: Nginx GUI Administrator
Zitat:
|
AW: Nginx GUI Administrator
Bist du dir sicher, dass es dann überhaupt nicht funktioniert? Die "bevorzugte Vorgehensweise" ist bei jeder Distro anders, aber ich dachte init.d geht weitgehend immer.
Bei allen Distros, die ich ausprobiert habe, ging das über init.d (Debian, Ubuntu, SuSe, DSL und noch ein paar andere). Sorry, falls es eine Falschmeldung war. |
AW: Nginx GUI Administrator
Zitat:
Mittlerweile gibt es auch etwas ähnliches wie Xampp nur mit nginx. Nennt sich WNMP : ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz