Einen Ftp-Nutzer einrichten

Die Einrichtung erfolgt über die Console per Kommandos wie folgt:

  1. Es muss zunächst ein neuer Systembenutzer angelegt werden und Ihm sein Homeverzeichnis zugewiesen werden
    adduser development -shell /bin/false -home /var/home/www/development
  2. Dann wird diesem neuen User ein Passwort vergeben mit
    passwd data_exchange
  3. Dieses Verzeichnis muss dort auch entspr. angelegt werden, z.b. wenn man sich im www Verzeichnis befindet:
    mkdir data_exchange
  4. Damit dieses Verzeichnis auf dem User gehört sollte der Owner gesetzt werden
    chown data_exchange data_exchange/
  5. Zur erhöhten Sicherheit müssen folgende zwei Dinge getan: Der Nutzer soll sein Verzeichnis nicht verlassen dürfen. Dazu muss in der FTPPRO-Configuration-Datei etc/proftpd/proftpd.conf folgender Eintrag stehen oder hinzugefügt werden:
    DefaultRoot: ~
  6. und damit der neue User sich nicht per ssh einloggen kann, muss in der /etc/passwd bin/sh geändert in bin/false.
  7. Nun muss der FTPpro-Deamon neu gestartet werden
    /etc/init.d/proftpd

Das war's, der FTP-User kann jetzt z.B. per FileZilla genutzt werden.

 

Feststellen der Größe von Verzeichnissen

Um z.B. festzustellen wie groß eine Webprojekt ist, und somit wie viel Plattenkapazität ein Kunde beansprucht, will man rekursiv den Dateitgrößeninhalt der Verzeichnisse feststellen. Dazu kann man das Programm DU unter linux verwenden.

Mit der einfachen Eingabe von $ du wird von dem Verzeichnis aus, in dem man sich gerade befindet alle Verzeichnisse aufgelistet und voran die KiloByte-Zahl angezeigt.

Braucht man eine rekursiv zus.gefasste Aussage, dann kann duch die Option -c dieses bewirkt werden. $ du -c gibt abschließend eine Total-Zus.fassung aus.

 

Verzeichnis- und Dateirechte rekursiv mit einem Befehl setzen

Aus Sicherheitsüberlegungen hat man z.B. den Webspace mit einer Joomla-Installation durch restriktivere Schreibrechte für Verzeichnisse und Dateien geschützt. Wenn man nun aber per Joomla-Installer ein Update machen möchte, dann stehen diese Rechte dem Vorhaben im Weg. Man möchte also kurzzeitig für diese Aktion die Rechte ausweiten und anschließend zurücksetzen. Dabei kann man aber nicht einfach rekursiv die Rechte auf 777 setzen und anschließend wieder zurück. Statt dessen sollten die Verzeichnisse die Rechte 750 und die Dateien die Rechte 640 bekommen. Wie bekommt man das elegant hin ohne durch alle Verzeichnisse zu müssen und die Rechte getrennt für Verzeichnisse und Dateien unterschiedlich zu setzen.

Hier hilft die Kombination des chmod-Befehls mit dem Befehl find. Das kann z.B. so aussehen:

find html/ \( -type d -exec chmod 750 {} + \) -o \( -type f -exec chmod 640 {} + \)

Hiermit werden im Unterpfad html/ vom aktuellen Standpunkt aus alle Verzeichnisse mit den Rechten 750 und alle Dateien mit 640 versehen.

 

Das Bearbeiten von ASCII-Dateien

erfolgt optimalerweise mit dem programm vi.

Wichtig Shortcuts:

ESC verlassen des Insert/Editiermodus
: Einblendung Kommandozeil für Befehlseingabe
w Speichern des Dokumentes ohne Verlassen
q Verlassen des Dokumentes
q! Verlassen des Dok. erzwingen
i Umschalten in den Editier/Insert-Modus

 

Prozesse/Systemlast anzeigen

htop zeigt die im System gerade laufenden Prozesse sowie deren anteilige Serverlast und die Speicherausnutzung.

Prozesse Stoppen

Um festzusstellen welche Prozesse auf dem Webserver laufen kann man die Prozesse mit ps aux abfragen oder in Kombination mit grep einen laufenden prozess suchen:

ps aux | grep <suchbegriff des prozesses>

Diesen Prozess kann man kill, z.B. dann wenn ein Prozess unendlich läuft, z.B. wg. einer fehlerhaften Programmierung:

kill -9 <process id aus zeile davor>

Mitunter ist es aber besser den Prozess nicht einfach nur zu killen, sondern ihn neu zustarten - hier im Beispiel den Apache-Webserver:

apache2ctl restart

 

MySQL relevante Befehle

Einloggen in eine MySQL-Datenbank

#> mysql --user=user_name --password=your_password db_name
#> mysql -u username -p

Entpacken eine DB-Dumps als GZ-Archiv
Einspielen eines SQL-Dumps in eine Datenbank
#> gunzip dbdumpgzarchiv.sql.gz
#> mysql -u root -pPASSWORD marks_kraft < entw.heute.dmp.sql
Neustarten der mysql-Deamons /etc/init.d/mysql restart
Anzeigen der Datenbanken
Wechseln der Datenbank
Anzeige der Tabellen einer Datenbank
mysql> show databases;
mysql> use dbxxxx-123;
mysql> show tables;
Auf command line (nicht in mysql) Ausgabe der Listen in #> mysql -u dbuxyz -pDbUsrPwd -e "use db1234566-dbname; show tables;" > zieldatei.txt
erzeugen eines Dump's
und anschließendes Packen

lokal entpackten Dump in xampp-MySQL-Umgebung wieder importieren (Wenn lokal keine Passwörter gesetzt dann mit Enter übergehen)
#> mysqldump -u username -pPaSsWoRd dbname > export.dump.sql
#> gzip export.dump.sql export.dump.sql.gz

#> cd c:\xampp\mysql\bin
#> mysql -u root -p -h localhost DBNAME < c:\Users\USRPFAD\Documents\_data_\export.dump.sql
Kopieren einer Datenbank auf einem Webserver mittels des DB-Super-Users #>mysqldump -u dbu123456 -pPaSsWoRd db123456-dbname > sql-dump-filename.sql#>mysql -u dbu1143687 -pPaSsWoRd db1143687-zmsmultilang < zmscentral.sql
Ausführen ein sql-Scriptes in eine Ergebnistabelle mysql> db_name < script.sql > output.tab;
Anlegen einer Neuen Datenbank und eines Nutzers #> mysql -u root -p
mysql> show databases;
mysql> CREATE DATABASE 'wiki';
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'xxxxxxx';
mysql> GRANT ALL PRIVILEGES ON 'username'.* TO 'username'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit;
Nachträgl. Ändern eines User-Passwortes #> mysql -u root -p
mysql> SET PASSWORD FOR 'username'@'localhost' = PASSWORD('xxxxxx');
mysql> FLUSH PRIVILEGES;
mysql> quit;
Hilfe anzeigen mysql> help;

Transfer einer einzelnen DB-Tabelle von einer DB zu einer anderen (s. Manul)

Hinweis: wenn es sich bei den zu kopierenden Tabellen ausschließlich um MyISAM-Tabellen handelt und innerhalb des selben Servers passieren soll, kann auch mysqlhotcopy verwendet werden (Ist in J!-Proj. nicht durchweg gegeben).

#> mysqldump -u root -pPASSWORD dbname tablename
#> mysql -u root -p pass secondDB

Man kann Dumps auch direkt von einem Webserver zu anderne übertragen durch Verwendung des FTP-Dienstes auf Quellserver. Verwendet wird SCP mit folgendem Kommando:

scp export.dump.sql Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.:/zielpfad/

 

Administration des Apache-Servers

Einrichten einer Subdomain

Im Verzeichnis /etc/apache2/sites-available/ liegen für die Subdomains Konfigurationsdateien. Diese sollten heißen wie die Subdomain selbst - für wiki.meinedomain.de legt man dort also eine Datei wiki an. Am besten kopiert man eine vorhandene zu diesem Namen und öffnet diese dann zum Editieren. Diese Datei sollte dann entsprechend so aussehen:

 

<VirtualHost *:80>
        ServerAdmin webmaster@localhost        ServerName wiki.meinedomain.com
        ServerAlias wiki.dev.meinedomain.com doc.meinedomain.com
        DocumentRoot /home/wiki/html
        <Directory /home/wiki/html/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        #ErrorLog ${APACHE_LOG_DIR}/error.log
        ErrorLog /home/wiki/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        #CustomLog ${APACHE_LOG_DIR}/access.log combined
        CustomLog /home/wiki/access.log combined
</VirtualHost>

 

Nachdem diese Datei gespeichert wurde, muss folgendes ausgeführt werden: # a2ensites wiki. Damit wird diese Domain/Subdomain den enabled-Sites hinzugefügt (s. Verzeichnis /etc/apache2/sites-enabled/.

Abschließend muss der Apache Sercer neu gestartet werden, so wie nach jeder Konfiguration (s. flgd.).

 

Diverse Apache-Anweisungen

Neustarten des Apache-Deamons /etc/init.d/apache2 restart
   
   

 

PHP-Log-Auswertungen bei Programmierungen realtime verfolgen

Es macht sich bei der Web-Programmierung sehr vorteilhaft, wenn man zeitgleich zum Testlauf von Programmen Informationen über evtl. Warnungen oder Fehler möglichst detailiert erhält. Speziell Warnungen, die nicht gleich zu Scriptfehlern führen kann man so ausmerzen und dadurch von Angang an sauberen Code erzeugen. Hierfür kann man die Apache-Log-Files über eine z.B. Putty-Consolen-Sitzung überwachen und dabei den wirklich hilfreichen tail-Befehl verwenden. Nachfolgendes Kommando-Beisp. zeigt wie man den Inhalt einer Log-Datei anzeigen kann. Hierbei werden immer die letzten Einträge in eine Logdatei angezeigt. Die Option -f bewirkt dann einen automatisch laufende Aktualisierung. Jede Änderung wird dann sofort live ausgegeben:

tail -f /home/meinVerzeichnis/error.log

Mit Ctrl. C kann die Anzeige abgebrochen werden.

 

SVN (Subversion) / Munin Zugangsdaten ändern (Webserver-Schutz)

Im Verzeichnis /etc/apache2/ gibt es eine Datei dav_svn.passwd. Um Hier einen User mit seinem Passwort einzutragen muss folgender Befehl ausgeführt werden: htpasswd /etc/apache2/dav_svn.passwd USERNAME.