So, für den Fall, dass du mein Script verwenden willst, das sollte nun soweit ohne Probleme funktionieren, damit bekommst den Server abgesichert, bzw. nen funktionsfähigen LEMP Stack incl. allen möglichen, für nextcloud optionalen Cachingmöglichkeiten wie APCu, Redis oder OPcache. Script war noch nen bissel buggy, sollte nun aber laufen, habs gerade noch mal getestet und geupdatet.
Wenn ich am Wochenende Zeit hab, update ich auch mal vielleicht meine Tutorials zu dem Thema und erweitere das Ganze um nextcloud ![]()
Beiträge von geekmonkey
-
-
Sorry, aber ich glaube du hast echt ne falsche Vorstellung von Preisen in diesem Bereich. Du kommst mit einem Managed Server, oder eben einem professionellen Webhosting, um einiges günstiger weg, als wenn du dir jemanden Externes zusätzlich ins Boot holst.
Ich weiß ja nicht, was du für Kundenseiten betreust, aber ich würde mich als Kunde wohl schnellstmöglich nach einem neuen Anbieter/Geschäftspartner umsehen, wenn ich wüsste, dass meine Daten entweder von jemandem ohne feste Vertragsbindung "gemanaged" werden, oder aber stümperhaft auf einem vServer laufen, ... nur um die Kosten zu drücken.
Um mal einen Vergleich zu haben, mein alter Herr zahlt für die Online Dienste seiner Kanzlei, ohne Lizenzen für zusätzliche Clouddienste, sondern nur für die Server und den Support, 4 bis 5 stellig im Jahr. Ein Freund von mir bietet derartigen Support ebenfalls hauptberuflich an, lässt sich das aber mit 85€/Stunde bezahlen, ... was nicht mal wirklich übertariflich ist.
Qualität kostet eben. Selber hosten für Private Projekte okay, oder eben wenn man sich damit auskennt und das Hosting zur eigenen Kernkompetenz gehört. Wenn das Hosting aber nur eine Komponente im Portfolio ist, ... dann sollte man das evtl. jemandem überlassen, der sich damit auskennt.
Worst Case Szenario, die Kundendaten sind futsch, Backups defekt, ... wer haftet? Du? mit deinem Privatvermögen? Einer GmbH? Nicht umsonst setzten Firmen genau aus diesem Grund auf professionelle Dienstleister, ... welche sich dieses Risiko eben zusätzlich bezahlen lassen
You get, what you pay for
-
Zitat
Jemand der ein Umzugsplugin aktiv lässt, lässt auch die Umzugskartons in der Wohnung stehen.
Der Vergleich ist grandios. Made my day! ??
-
Würde an deiner Stelle auch eher zu nem managed Server raten, selbst ein Student ist auf Dauer nicht günstiger.
Pauschal für 100 oder 200€ im Jahr arbeitet sicher niemand.
-
Aktuell ist mir keine rudimentäre Anleitung bekannt, aber Anleitungen zu den meisten Dingen findest zu Hauf über google.
Also wie du nen Port änderst, nen Webserver (LAMP bzw. LEMP) installierst.
Hatte das Ganze mal als Tutorium Serie auf meinem blog gestartet, ist evtl. nicht mehr ganz aktuell, aber mir fehlte die Zeit bis jetzt, bzw. die Motivation.
https://geekmonkey.de/tuts/perfekt-server/
Werde ich wohl mal updaten müssen.
Oder du guckst dir mal mein fertiges Script an, damit lässt sich das Grundgerüst bauen, unter Debian. Seit gestern auch optional mit APCu, Redis und OPcache, wobei das script lazy_xcache script evtl. noch nen bissel buggy ist.
Sonst kannst dir aber auch mal dir einzelnen bash scripte angucken und selbst durchgehen, step by step quasi.
-
Zitat
sollten danach auch wieder entfernt werden.
Genau hier liegt der Hund begraben, ... die Meisten lassen die ganzen Plugins lieber weiterhin aktiviert, ... stört ja niemanden.
Sonst hast natürlich recht, mal schnell nen plugin laden und später deaktivieren und löschen ist auch ne option.
?
-
Ne, ist Mist! ?
-
plugin hier, plugin da, ... da wundern sich die Leute, warum ihr Blog so lahmt ?
Das Meiste lässt sich auch manuell mit ein paar Handgriffen realisieren:
1) neue Domain auf WP Verzeichnis umleiten
2) unter der alten Domain einloggen -> Einstellungen: URL ändern
3) oder auch statt 2) wp config editieren
https://codex.wordpress.org/Changing_The_Site_URL
4) alte domain verlinkung löschen
Bei neu aufgesetzten wordpress blogs und bei allen anderen auch, ohne absolute links, auf die man eh verzichten sollte, funktioniert das ohne probleme ?
-
Sry, mal ne ganz doofe Frage, warum deaktivierst du net einfach die mail function, wenn du testest? Bzw. warum nutzt du für server notifications überhaupt nen externen mail server, was spricht gegen postfix local? Damit kannst dann auch flooden, wenn du denn all diese nützlichen mails tatsächlich brauchst ?
-
-
Die Hotline ist aber nicht in der Lage solche Probleme zu bearbeiten, da geht irgendwie nur: Leitung zum Kunden und Problem beim Kunden vor Ort.
L2-Support war nicht verfügbar.
Zwischenzeitlich sollte ich mein Problem schriftlich darlegen. Da habe ich nach einer Mailadresse gefragt, der Mitarbeiter meinte ich solle einen Brief schicken.
Naja in der Hotline bei den großen Providern, egal ob Telekom, Vodafone, oder Reseller ohne eigenes Netz, wie 1u1 (wtf, warum ist der Telekom Parasit zensiert? SEO relevanter Traffic?), ... hast in der Regel irgendwelches Aushilfspersonal sitzen, ... spätestens ab 21 Uhr übernehmen dann trainierte Affen, ... Ausnahmen bestätigen natürlich die Regel.
Da Lob ich mir den Support von Netcup oder auch Hosteurope, ... bei letzterem auch schon mal um 4 Uhr morgens unter der Woche kompetente Hilfe bekommen!
Nicht selten hab ich bei der Telekom schon einfach mitten im Gespräch oder zu Beginn aufgelegt, ... ?
-
Fail2ban ist in meinen augen Pflicht, wirklich viel konfigurieren muss man da am Anfang auch nicht, ebenso wie ssh port ändern.
Weiß jetzt nicht wies mit dem IP Pool von Netcup aussieht, aber bei Linode und Digital Ocean dauert es keine 2min, nachdem der Server gebootet wurde und die ersten Botnetze aus China und Singapur beginnen mit dem Bruteforcen. 10min später sind die Inder und Russen auch mit von der Partie. Wobei, wie bereits oben erwähnt meist nur der Port 22 unter Beschuss steht.
Hab nicht selten deswegen schon mal die email notifications deaktiviert, ... Rekord lag glaube ich bei etwas über 600 mails von fail2ban am nächsten Morgen ?
Wobei man auch gerade bei den Droplets und Linodes nicht weiß, was der Vorbesitzer der IP damit getrieben hat, ist ja doch relativ kurzlebig so ne IP. Hab mit unter am Tag 30 verschieden IPs wenn ich was teste. ??
-
Ah, okay. Danke für die Erklärung! Habs durchs ausprobieren zwar selbst schon gemerkt, dass es auch ohne klappt, aber die Mechanik dabei nicht verstanden.
Ziemlich clever das System!
Hab gemerkt, dadurch dass Redis nun per socket zugänglich ist und nicht per tcp port, kann ich mir auch das Passwort sparen, läuft ja eh alles intern, ähnlich wie php-fpm über socket.
Wie ist das eigentlich, sollte ich in der config sowohl socket, als auch port öffnen, ist der redis server dann über beides erreichbar? Oder konkurrieren die beiden? Ich meine, Bei bedarf kann man den Prozess ja mit unterschiedlichen Configs starten, sind dann eben 2 verschiedene Server.
Bzw. es macht Sinn, verschiedene Datenbanken (1, 2 ...) zu nutzen, oder? Also für z.B. Nextclound db 1, für wordpress db 2, und für irgend was anderes die default 0?
Sorry, mir geistern irgendwie viele Fragen durch den Kopf, sowohl zu den services, als auch redis. ?
-
ach verdammt - haha.
Danke fürs Aufklären! Ne Idee, warum er wegen dem PIDFile meckert?
Sollte mir echt mal ein bisschen was zu den services anlesen! Bin irgendwie noch die klassischen init.d scripte gewohnt, ...
Bin zwar auch kein Experte in Sachen bash, aber da hab ich mich im laufe der Zeit mal reingefuchst.
Muss aber an dieser Stelle zugeben, die Art service script scheint einiges zu vereinfachen und zu verkürzen
Vielen Dank auf jeden Fall für den ganzen Input hier und im anderen Thread!
-
Bzw H6G, danke für die Erklärung, hab mein Script nun verworfen und arbeite mit dem vom mächtigen Broccoli

-
Alles anzeigen
Allerdings sieht mein service file bedeutend anders aus.
/lib/systemd/system/redis-server.service
[Unit]
Description=Advanced key-value store
After=network.target
Documentation=http://redis.io/documentation, man:redis-server(1)
[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecStop=/bin/kill -s TERM $MAINPID
PIDFile=/var/run/redis/redis-server.pid
TimeoutStopSec=0
Restart=always
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=2755
UMask=007
PrivateTmp=yes
LimitNOFILE=65535
PrivateDevices=yes
ProtectHome=yes
ReadOnlyDirectories=/
ReadWriteDirectories=-/var/lib/redis
ReadWriteDirectories=-/var/log/redis
ReadWriteDirectories=-/var/run/redis
NoNewPrivileges=true
CapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_SYS_RESOURCE
MemoryDenyWriteExecute=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictNamespaces=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
# redis-server can write to its own config file when in cluster mode so we
# permit writing there by default. If you are not using this feature, it is
# recommended that you replace the following lines with "ProtectSystem=full".
ProtectSystem=true
ReadWriteDirectories=-/etc/redis
[Install]
WantedBy=multi-user.target
Alias=redis.service
So, bin jetzt mal dazu gekommen, dein Service file auszuprobieren. läuft bis auf eine Ausnahme super. Danke dafür!
Mein Problem ist folgendes:
Code..... Mär 22 21:18:18 xf0.de systemd[1]: Starting Advanced key-value store... Mär 22 21:18:19 xf0.de systemd[1]: redis.service: PID file /var/run/redis/redis.pid not readable (yet?) Mär 22 21:18:19 xf0.de systemd[1]: Started Advanced key-value store.Hab aber:
ReadWriteDirectories=-/var/run/redis und RuntimeDirectory=/var/run/redis ...
Was mache ich falsch?
Edit: Bzw. wenn ich aus dem service file raus lasse, dann läuft es ohne Probleme. pid file wird ja eh noch mal über die config definiert.
Würde mich aber dennoch interessieren, wo der Fehler liegt -
Hey Mordor,
ich arbeite seit knapp 10 Jahren mit Linux im Serverbereich, aber immer nur auf privater, hobbymäßiger Ebene, ... ganz ehrlich, ich glaub ich hab das System immer nich nicht zu 100% verstaden. ?
Aber du hast recht, ich hab auf jeden Fall mal wieder was gelernt! Learning by doing!
Hinterher war mir auch klar, warum in der congig der ursprüngliche Socket Pfad /tmp/redis.sock lautet, ... da hätte man sich das ganze Theater wahrscheinlich gespart.
Für mich aber ehrlich gesagt viel interessnater sind die Möglichkeiten, die man mit z.B. /sbin/start-stop-daemon hat. Auf jeden Fall eleganter und besser geregtl als wie bisher in manchen Fällen su user -c command ??
Danke auf jeden Fall auch noch mal für den Link!
-
jop, redis hab ich selbst compiliert. Läuft nun alles, lag tatsächlich an den Rechten. Hab speziell dazu noch nen anderen Thread, inkl. Lösung ?
Unter Debian ist der Standardpfad /usr/local/bin ... bei Ubuntu sollte es z.B. in /usr/bin liegen. Keine Ahnung, wie apt und Co das regeln ?
Bin aber auch kein Experte auf dem Gebiet.
-
Was ist denn aktuell noch installiert?
Apache? NGiNX? MySQL, ....?
Kenne die fertigen Images von netcup nicht.
Wenn noch nichts läuft, dann wäre meine Empfehlung:
Server absichern.
LEMP bzw. LAMP als Webserver
Und dann eben Wordpress.
Ich hatte mal vor einer Weile Tutorials dazu geschrieben:
https://geekmonkey.de/tuts/perfekt-server/
Oder wenn du faul bist und nur schnell alles fertig eingerichtet haben willst, kannst mein Script dafür nutzen:
Codeapt-get install -y curl curl -Ssl https://raw.githubusercontent.com/gxf0/lazy_server/master/get | bashDas Script installier in meinen Augen die Basics. Danach musst nur noch Wordpress installieren, siehe Anleitung im Blog, incl. nginx vhost

-
So, läuft alles wie geplant!
Hier die Lösung, bzw. Erklärung.Unabhängig von der Fehlermeldung die enable redis ausspuckt, wird redis zum Autostart hinzugefügt, was mir aber vorher nicht aufgefallen ist, auch weil nichts davon in den logfiles auftauchte. Redis wird nie gestartet, da der Ordner /var/run/redis nicht exisitiert (da wo der socket zugänglich ist)
Lösung hierfür: Wie anfänglich gedacht, müssen sowohl der Ordner als auch die Rechte vor jedem Start gesetzt werden. redis.service schaut nun so aus:
Code
Alles anzeigen[Unit] Description=Redis In-Memory Data Store After=network.target [Service] Type=forking ExecStartPre=/bin/mkdir -p /var/run/redis ExecStartPre=/bin/chown redis:www-data /var/run/redis ExecStart=/sbin/start-stop-daemon --start --chuid redis:www-data --umask 007 --exec /usr/local/bin/redis-server -- /etc/redis/redis.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.targetknapp einen Tag arbeit, ... für nen Redis Server
Naja, vielleicht hilft es ja wem!