Orangen-HeaderText-Header

Linux auf dem Server

Themen

System V init

  • service --status-all listet den Status aller registrierten Dienste
  • service DIENST status gibt einen sinnvollen Statusbericht (und ggf. einen Fehlerbericht) zu DIENST
  • service [Dienst] [status|start|stop|restart] startet|stoppt|... Dienste
  • service --help | -h Hilfe

Enable/Disable Services

  • systemctl [enable|disable] <servicename> enables|disables system services
  • systemctl list-units lists all registered services
  • systemctl [start|stop|restart|reload] <servicename> starts|stops|restarts|reloads a service; alternative: service

Neuste Tricks

see Trouble shooting
  • hostname -f
  • host <fqdn> modernere Version von nslookup <fqdn>
  • script -t 2>~/upgrade-wheezystep.time -a ~/upgrade-wheezystep.script zeichnet Konsoleneingaben auf...
  • scriptreplay ~/upgrade-wheezy.time ~/upgrade-wheezy.script ... und spielt diese erneut ein.

Für den Linux-Admin eines Servers.

Supervisor

To ensure that processes keep running.
  • systemctl enable supervisor for systems with upstart?
  • service supervisor start starts the supervisord
  • a typical config file in /etc/supervisor/conf.d/ would look like this
[program:laravel-worker-prod]
process_name=%(program_name)s_%(process_num)02d
command=php /srv/www/my.domain.tld/artisan queue:work database --sleep=3 --tries=3 --queue=default,other
autostart=true
autorestart=true
user=laravel
numprocs=1
redirect_stderr=true
stdout_logfile=/srv/www/my.domain.tld/logs/worker.log"
  • supervisorctl reread has to be called whenever a config file has been modified
  • supervisorctl update updates the config of a running supversior
  • supervisorctl start laravel-worker-prod:* explicitly starts an instance

Read on herePfeil.

Changing the hostname

  • First adapt /etc/hostname and /etc/hosts to reflect the new hostname.
  • Then invoke hostnamectl set-hostname newname to effectivly change the hostname. hostnamectl displays the current settings.

Screen

  • screen <command>
  • screen -U -S <name> creates a screen with name name and UTF8 support (-U)
  • screen -list
  • CTRL-a d detach session
  • screen -r reattach to a session
  • CTRL-a c create a new window
  • CTRL-a w list all windows
  • CTRL-a [0-9] go to window with respective number
  • CTRL-a n bzw. CTRL-a p switches between windows
  • screen -D -r <screen instance> reattach screen session
  • CTRL-a k terminates a screen
  • CTRL-a :fit or short CTRL-a F fit screen size to new terminal size
  • CTRL-a :utf8 on on to enable UTF8 in the screen
  • use the following trick to "scroll" inside a screen:
    • CTRL-a ESC to enter copy mode
    • scroll with arrow keys
    • press ENTER twice to exit copy mode (If you move the cursor after hitting ENTER once, you'll be selecting text to copy, and hitting ENTER the second time will copy it. Then you can paste with CTRL-a followed by ] )
Siehe mehr unter http://www.pixelbeat.org/lkdb/screen.htmlPfeil bzw. http://wiki.networksecuritytoolkit.org/nstwiki/index.php/HowTo_Share_A_Terminal_Session_Using_ScreenPfeil

If you face an Must run suid root for multiuser support. error message try the following (from http://ubuntuforums.org/showthread.php?t=1607705Pfeil):
  • sudo chmod u+s /usr/bin/screen and (if necessary)
  • sudo chmod 755 /var/run/screen/
If you encounter an Cannot open your terminal '/dev/pts/0' - please check. error this might be because you used su <current user>; Try the following (from linkPfeil) To permanently enable UTF-8 in screen put the following lines into /etc/screenetc
defencoding utf8
encoding utf8 utf8

How to share a screen

  • screen -d -m -S shared Setzt einen Screen auf, der geteilt werden kann.
  • screen -A -dmS NAME -A adapt screen size, -d detaches a screen, -m ignore $STY environment variable, -S Sessionname
  • CTRL-a :acladd username Adds users with full permission to all windows
  • CTRL-a :multiuser on Enables or disables multiuser mode.
  • screen -x <hostuser>/shared Verbindet sich zu einem geteilten Screen von hostuser.

Screen and scrollback

Press Ctrl-a then : and then type
scrollback 10000
to get a 10000 line buffer, for example.

You can also set the default number of scrollback lines by adding
defscrollback 10000
to your ~/.screenrc file.

To scroll (if your terminal doesn't allow you to by default), press Ctrl-a ESC and then scroll (with the usual Ctrl-f for next page or Ctrl-a for previous page, or just with your mouse wheel / two-fingers). (In my case the previous did not work but PG-UP=/=PG-DOWN did.) To exit the scrolling mode, just press ESC.

Another tip: Ctrl-a i shows your current buffer setting.

Docker

Dieser Bereich steht auf einer eigenen Seite: DockerContainer

Linux im Netzwerk

Dieser Bereich steht auf einer eigenen Seite: LinuxNetwork

FTP für Debian-Servers

Ich nutze vsftpPfeil (Very Secure FTP). Siehe auch HowtoPfeil. Alternative: ProFTPPfeil

Hint: If you configure the login shell of the ftp user to be /bin/false the ftp login will fail unless you add /bin/false to the list of valid login shells in /etc/shells! (from herePfeil)

Siehe auch LinuxNetwork

Konfiguration

  • adduser ftpusername && passwd ftpusername Benutzer ftpusername hinzufügen und Passwort setzen.
  • usermod -d /home/ftpusers/ftpusername -s /usr/sbin/nologin ftusername Passendes Homevrezeichnis wählen und den Login per SSH blockieren.
  • mount --bind /srv/www/server.de/htdocs /home/ftpusers/ftpusername/server.de Die für den Nutzer verfügbaren Ordner einhängen.

Alternativ:

Paketfilter mit IPTables

Wer einen Router oder ähnliche Netzwerkgeräte unter Linux betreibt, wird vielleicht die Pakete filtern wollen. Dies wird häufig mit IPTables gemacht.

Foswiki

Eine gute Übersicht zur Formatierung von Text bzw. zu Grafiken in Foswiki: System.TextFormattingRules bzw. System.DocumentGraphics

Offen Konfigurationsfragen

ownCloud

http://owncloud.org/Pfeil

Postfix

Für Postfix existiert eine eigene Seite: Postfix.

Praktische Befehle

  • lsof -i Gibt eine Liste der offenen TCP/!IP-Ports an. (Funktioniert nur als root)
  • lsof -i :25 Gibt eine Liste der Dienste an, die z.B. auf Port 25 lauschen. (Funktioniert nur als root)
  • traceroute <host> oder mtr <host> Gibt eine Route zum angegebenen Rechner host an.
  • route -n Zeigt die Routing-Tabellen des Servers an.
  • dig <domain> MX Zeigt den DNS-Eintrag für den MX-Record der angegebenen Domain.
  • nmap <serverip> Ein Portscan auf den (eigenen) Server.
  • telnet <serverip> <port> Verbindet sich auf den Server beim angegebenen Port.

Software-Debugging

  • strace -f -o <logdatei> <programm> Protokolliert die Systemaufrufe eines Programms und loggt diese in einer Datei.

Server-Verwaltung

  • sudo /bin/su www-ferienkurse Wechselt den Benutzer
  • htpasswd -c .htpasswd Benutzername erzeugt eine Passwortdatei .htpasswd für die Authentifizierung per .htaccess
  • .htaccess Passwort-Generator: http://tools.dynamicdrive.com/password/Pfeil

Für Ubuntu-Server gibt es ein gutes Compendium: https://help.ubuntu.com/8.04/serverguide/C/index.htmlPfeil

Server-Dienste

  • Apache Webserver siehe hier
  • MySQL: /etc/init.d/mysql start/stop/restart
  • Postfix: /etc/init.d/postfix start|stop|reload
  • Courier: /erc/init.d/courier-imap start|stop|reload|restart
  • Courier Auth-Daemon: /etc/init.d/courier-authdaemon start|stop|reload|restart
  • Mailman: /etc/init.d/mailman start|stop|reload
  • Postgrey: /etc/init.d/postgrey start|stop|reload|restart
  • svn + WebDAV: ein gutes Howto: http://svnbook.red-bean.com/nightly/de/svn.serverconfig.httpd.htmlPfeil

Logrotate

logrotate ist ein sehr sinnvolles Tool zum archivieren von Logfiles. Die log-Dateien werden regelmäßig gezippt und das aktuelle Log bleibt eine handliche Datei. logrotate ist standardmäßig installiert und wird mit Dateien in folgendem Ordner konfiguriert: /etc/logrotate.d/ A rather minimal config for logroate:
/home/ethereum/eth.log {
  rotate 12
  daily
  compress
  delaycompress
  missingok
  notifempty
}
  • logrotate -vf /etc/logrotate.conf runs logrotate manually

Server-Backup

  • MySQL-Datenbanken: mysqldump -u <user> -p <database> > datei bzw. mysqldump -u <user> -p --all-databases > datei
  • Archivieren von Dateien: tar -cvzf <archivname> <Liste_der_Dateien>
  • ftp-Backup: ftp <server> anschließend Ordner für das Backup anlegen und dort die Daten mit put <datei> abliefern.

Wichtige Dateien für ein Server-Backup

  • Dateien des Webservers: /var/virtual_servers
  • Konfiguration des Apache: /etc/apache2
  • MySQL-Datenbanken

SSL für den Apache einrichten

Siehe Eintrag hier

Links