######## Tutorial von www.pc-heaven.de. #########
######## Mehr Tutorials auf www.pc-heaven.de ####
Installieren eines Webservers über SSH2 (Debian Etch 4.0)
Sooooooo Leute, heut gehts an das Installieren eines Webservers auf Debian Etch 4.0.
Alles was ihr dafür braucht, ist:
- Geduld
- Eine Thermoskanne Kaffee
- Putty (downloadbar hier:
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe)
- Das Programm 'nano' auf dem Webserver. Installationsanleitung für nano siehe Anhang.
- Filezilla 3 mit SFTP eingerichtet (Name: root, PW: rootpasswort, Host: Server-IP, Port:22, Methode: SFTP über SSH2) downloadbar
hier:
http://www.chip.de/downloads/c1_downloads_13011076.html (1) Installieren und konfigurieren von Apache2
Als erstes wirds mal Zeit, dass wir den Apache Webserver überhaupt herunterladen und dann installieren. Dies ist bei Debian
denkbar einfach, dazu reicht uns folgender Befehl:
Code:
apt-get install apache2
Da wartet ihr, bis es fertig ist, und schon ist Apache installiert.
Wenn ihr jetzt eure IP / Domain aufruft unter der der vServer / Root Server läuft, müsstet ihr eine HTML Seite mit "It Works!"
sehen. Wenn ja, gehts weiter!
Als erstes sollten wir mal das mit "It Works!" löschen.
Dazu melden wir uns mit Filezilla 3 normal an und wechseln in den Ordner /var/www (um in den Hauptordner zu kommen, ist es nötig,
oben auf ../ zu drücken, um den ordner /root zu verlassen) und löschen da den ordner /apache2-default.
Damit wär der Ordner weg, doch die Weiterleitung ist immer noch da?!?
Dazu müssen wir wissen, das Apache sogenannte Virtuelle Hosts (genannt VHOST) anlegt, die dazu dienen, verschiedene Domains auf
verschiedene Ordner weiterzuleiten. Dies jedoch in einem Anderen Tutorial
Es gibt jedoch immer einen VHOST, der zurzeit auf das Verzeichnis /var/www zeigt und bei jedem aufruf, obgleich es IP oder Domain
ist, angezeigt wird.
Wir öffnen jetzt die Konfigurationsdatei des VHOST mitfolgendem Befehl:
Code:
nano /etc/apache2/sites-enabled/000-default
Jetzt suchen wir einfach die Zeile:
Code:
RedirectMatch ^/$ /apache2-default/
Die Ersetzen wir jetzt mit
Code:
#RedirectMatch ^/$ /apache2-default/
und drücken STRG+O (gleichzeitig) damit nano die änderungen speichert. eventuell fragt nano auch noch, ob gespeichert werden soll,
die bestätigt man dann mit Y!
jetzt ein kleiner Haken: Nicht wie bei Windows üblich werden Veränderungen sofort übernommen, sondern erst nach einem Restart
(Neustart) des Apache servers. Dies kann man folgendermaßen ausführen:
Code:
/etc/init.d/apache2 restart
und fertig.
Damit wär die Weiterleitung ausgeschaltet und du hast soeben Apache installiert!
(2) PHP5 installieren
Jetzt haben wir zwar Apache, schön und gut.. Aber was ist mit PHP für PHP fähige dynamische Seiten?
Ganz einfach. Da wir jetz Apache installiert und konfiguriert haben, reicht folgender Befehl:
Code:
apt-get install php5
und dann ein Apache Restart. Weißt du etwa nicht mehr wie der geht? Da oben wars schonmal :P dann eben nochmal:
Code:
/etc/init.d/apache2 restart
Und dann geht PHP.
Am besten empfehle ich noch, die php5-GDLib zu installieren, die man für bestimme Anwendungen benötigt, wie WBB3 oder Joomla!.
Dies geht auch mit einem Code:
Code:
apt-get install php5-gd
Und fertig!
(3) MySQL Server installieren
Was nutzt jetzt aber PHP5 wenn wir kein MYSQL für ein Forum oder ein CMS haben? Keine sorge... MySQL geht genauso einfach.
Auch wieder mit - wer hätts geahnt - einem Befehl:
Code:
apt-get install mysql-server
und dann geht des auch.
Wenn wir jetzt allerdings versuchen, mit PHP eine mysql verbindung aufzubauen, wird das nicht funktionieren, da PHP eine MySQL
erweiterung benötigt.
Diese installiert man folgendermaßen:
Code:
apt-get install php5-mysql
Und dann wird des auch funktionieren.
Einfach Apache neustarten, wenns nicht gleich funktioniert.
Was, du hast schon wieder vergessen wie das geht?
Code:
/etc/init.d/apache2 restart
Merks dir jetzt endlich mal!
(4) Abschluss
Jetzt haben wir schon alles was ein Webserver benötigt - eigentlich.
Ganz nützlich ist auch phpmyadmin, das wir auch - wie gewohnt - mit einem Befehl installieren:
Code:
apt-get install phpmyadmin
Nun nach dem Ausführen einfach
http://deine-ip/phpmyadmin
bzw.
http://www.deine-domain.de/phpmyadmin
aufrufen.
Hierbei mit Phpmyadmin gleich ein ROOT passwort für MySQL setzen - MySQL ohne Root PW ist wie ein Sack Geld mitten auf einer
Straße. Dies geht einfach:
Phpmyadmin aufrufen -> im Hauptfenster unten auf "Rechte" klicken -> hinter "root" - "localhost" auf das Bearbeiten Symbol
Klicken. Hier dann nach dem Feld "Passwort ändern" suchen, neues Passwort eintragen und dann auf das OK Knöpfchen ganz rechts
klicken - fertig!
Dies muss man eventuell beim benutzer "root" - "dein -host" oder "root" - "deine IP" wiederholen.
Und damit haben wir au schon ein funktionierendes Phpmyadmin! Und gesichertes MYSQL!
Was fehlt denn jetzt noch.. hmm...
Eigentlich nichts.
Dateien werden über SFTP hochgeladen, FTP Tutorial kommt auch noch irgendwann...
(5) Anhang
Probleme? -----> im Thread schreiben
Fragen? -----> im Thread schreiben!
Wie kann ich nano installieren ------> Im Thread... nein! Ich hab ja gesagt dass ich des extra sage^^
Also des geht auch wieder mit apt-get, nämlich so:
Code:
apt-get install nano
und dann isch des auch fertig.
(6) Installieren von Sendmail
Wie sicher schon viele bemerkt haben geht bei dieser Konfiguration die PHP Funktion mail() nicht. (Mail Versand per PHP)
Dies kann einfach erreicht werden indem folgender Code ausgeführt wird:
Code:
apt-get install postfix
Bei der Postfix Installation muss "Internetserver" als Zweck angegeben werden. So funktioniert Sendmail auf Anhieb!
(7) Installieren von ProFTPd mit MySQL Unterstützung (FTP benutzer per MySQL)
Zuersteinmal müssen wir wieder mit einem apt-get install befehl beginnen.
Dies mal mit
Code:
apt-get install proftpd-mysql
Bei der Installation das evt. auftretende Fenster mit OK bestätigen.
Nun funktioniert das ganze natürlich noch nicht.
Um FTP User per MySQL hinzufügen zu können, fehlt uns noch eine Verbindung ProFTPd <-> MySQL und natürlich ein Allround User mit dem die ganzen User auf dem Server laufen.
Diesem FTP-User gehören später alle Ordner/Dateien im FTP bereich, sodass man keine spezifischen Rechte mehr für jeden einzelnen Benutzer setzen muss.
DIesen legen wir also dann mal als erstes an mit einer UserID die nicht im System belegt ist. Ich hab hierbei einfach aufs Geratewohl die ID 2593 genommen. Vorher müssen wir allerdings eine Gruppe erstellen, in der wir den User "parken". Hierbei nehme ich auch meine ID 2593.
Somit lauten die 2 Befehle:
Code:
groupadd -g 2593 ftpgroup
Code:
useradd -u 2593 -s /bin/false -d /bin/null -g ftpgroup ftpuser
Hiermit haben wir nun also unsern FTPUser.
Damit der auch auf alles zugreifen kann, müssen wir das FTP verzeichnis komplett dem Benutzer zuweisen. Dies geht mit dem Befehl
Code:
chown -hRv ftpuser:ftpgroup /ordner/ordner
Wenn wir FTP benutzer für einen Webspace im Apache Verzeichnis /var/www erstellen wollen, dann geht das mit
Code:
chown -hRv ftpuser:ftpgroup /var/www
Jetzt fehlt also nur noch die Verbindung ProFTPd <-> MySQL. UNd dies wird jetzt ein bisschen aufwändiger.
Als erstes müssen wir im MYSQL einen User für ProFTPd erstellen. Hierbei bietet sich besonderes Phpmyadmin an: Man klickt auf SQL und gibt folgenden Befehl ein:
[mysql]CREATE DATABASE ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;[/mysql]
Bitte das Passwort auch ersetzen!!
Als nächstes legen wir dann (wieder in phpmyadmin über DB aus wählen -> Ftp -> SQL) die Tabellen an.
PHP-Code:
CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '2593',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table'; CREATE TABLE ftpquotalimits (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail int(10) unsigned NOT NULL default '0',
bytes_out_avail int(10) unsigned NOT NULL default '0',
bytes_xfer_avail int(10) unsigned NOT NULL default '0',
files_in_avail int(10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM; CREATE TABLE ftpquotatallies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used int(10) unsigned NOT NULL default '0',
bytes_out_used int(10) unsigned NOT NULL default '0',
bytes_xfer_used int(10) unsigned NOT NULL default '0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM; CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '2593',
gid smallint(6) NOT NULL default '2593',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
Hiermit sind wir dann im MYSQL Bereich fertig und können phpmyadmin zumachen. PUH! Erstmal ein SChluck aus unserer Kaffeekanne (siehe Utensilien die man benötigt ganz oben^^)
Jetzt muss nur noch der proftpd.conf (/etc/proftpd/proftpd.conf) beigebracht werden, wie sie zu MySQL verbinden soll!
Als allererstes aber müssen wir ProFTPd sagen, dass wir MySQL und nicht PostgreSQL benutzen.
Dazu öffnen wir die modules.conf folgendermaßen:
Code:
nano /etc/proftpd/modules.conf
Hier suchen wir nach folgender Stelle:
Code:
LoadModule mod_sql_postgres.c
und machen davor ein # um es auszukommentieren und speichern dann mit STRG+O die Datei.
Als nächstes nehmen wir uns die proftpd.conf mit dem Befehl
Code:
nano /etc/proftpd/proftpd.conf
vor.
Hierbei fügen wir folgende Sachen ganz am Ende der Datei ein:
DABEI UNBEDINGT DRAUF ACHTEN DASS DAS PASSWORT (BEI "SQLConnectInfo ftp@localhost proftpd password"
IN DAS PASSWORT GEÄNDERT WIRD DASS MAN FÜR DEN FTP BENUTZER IN MYSQL ANGELEGT HAT! Code:
DefaultRoot ~
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users* groups*
# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo ftp@localhost proftpd password
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftpuser userid passwd uid gid homedir shell
# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftpgroup groupname gid members
# set min UID and GID - otherwise these are 999 each
SQLMinID 500
# create a user's home directory on demand if it doesn't exist
SQLHomedirOnDemand on
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
SQLNamedQuery gettally SELECT "ROUND((bytes_in_used/1048576),2) FROM ftpquotatallies WHERE name='%u'"
SQLNamedQuery getlimit SELECT "ROUND((bytes_in_avail/1048576),2) FROM ftpquotalimits WHERE name='%u'"
SQLNamedQuery getfree SELECT "ROUND(((ftpquotalimits.bytes_in_avail-ftpquotatallies.bytes_in_used)/1048576),2) FROM ftpquotalimits,ftpquotatallies WHERE ftpquotalimits.name = '%u' AND ftpquotatallies.name = '%u'"
SQLShowInfo LIST "226" "Used %{gettally}MB from %{getlimit}MB. You have %{getfree}MB available space."
RootLogin off
RequireValidShell off Dies reicht dann auch mit der Proftpd.conf.
Dann öffnen wir wieder phpmyadmin und tragen unsere FTP Gruppe ein. (DB auswählen -> ftp -> SQL)
PHP-Code:
INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2593, 'ftpuser');
Jetzt können wir User hinzufügen.
Dies geht ganz einfach mit dem BEfehl (DB Auswählen -> ftp -> SQL):
PHP-Code:
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, 'BENUTZERNAME', 'PASSWORT', 2593, 2593, '/VERZEICHNIS/VERZEICHNIS', '/sbin/nologin', 0, '', '');
Bitte genau drauf achten dass die erfoderlichen Daten ersetzt werden.
Nach der ganzen Prozedur den ProFTPd Server neustarten mit
Code:
/etc/init.d/proftpd restart
Und dann sind wir fertig mit unserem FTP Usern verarbeiten.. auf diese art können ganz einfach neue hinzugefügt werden! Es sollte nur beachtet werden dass die Shell (/sbin/nologin) und die gid/uid (beidesmal 2593) nicht verändert werden.
Außerdem sollte beachtet werden dass die User auf das Verzeichnis dass wir ihnen zuweisen Rechte haben - im zweifelsfall also ein
Code:
chown -hRv ftpuser:ftpgroup /verzeichnis/verzeichnis
Ausführen.
--------------------
(C) 2007-2008 PC-Heaven.DE.
Angeboten unter Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported lizenz