Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ankündigungen, News und Feedback > Tutorials > [Server] LAMPP mit ftp, openSSL, msmtp, webalizer und phpmyadmin in einer chroot

Layoutprobleme? - Styleswitcher!

Antwort
 
Themen-Optionen
Alt 16.01.2008, 11:10 Nach oben    #1
Jann Hendrik
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 1.548
Standard [Server] LAMPP mit ftp, openSSL, msmtp, webalizer und phpmyadmin in einer chroot

LAMPP mit ftp, openSSL, msmtp, webalizer und phpmyadmin in einer chroot

In diesem Tutorial geht es darum ein LAMPP (Linux: apache+mysql+perl+php) innerhalb einer chroot zu installieren.
Darüber hinaus wird erklärt, wie man einen ftp-Server aufsetzt.
OpenSSL sowie msmtp, webalizer und phpmyadmin gehören ebenso dazu.

Inhaltsverzeichnis:


Installation (up)
Ein paar Dinge, die ich hier einfach angenommen habe, die dann auf die individuellen Bedürfnisse angepasst werden müssen:
Passwort für mysql-user root:
deinwunschpasstwortfuermysql

Passwort für mysql-user pureftpd:
deinftppasswort

Verzeichnis für htdocs:
/htdocs

Verzeichnis für phpmyadmin:
/htdocs/phpmyadmin

port für apache:
80

port für ftp:
21

port für mysql:
3306


Zu den verwendeten Versionen. Im Laufe der Zeit wird es von jeder Software wohl eine neue Version geben, bei der dann jeweils zu schauen, in wieweit sich etwas gegenüber den hier benutzten Versionen getan haben wird. Ratsam ist es, stets die aktuellen Versionen zu benutzen!
buildchroot
3.0

apache
2.2.6

cband
0.9.7.5

mysql
5.0.45

openssl
0.9.8e

php
5.2.4

phpMyAdmin
2.11.0

pure-ftpd
1.0.22

ioncube loader
5.1

msmtp
1.4.13

webalizer
2.01-10

Geändert von Jann Hendrik (16.01.2008 um 11:13 Uhr).
Jann Hendrik ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.01.2008, 11:14 Nach oben    #2
Jann Hendrik
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 1.548
Standard

Vorbereitungen (up)
Begonnen wird mit der buildchroot von sven:
Code:
cd /src/

wget http://download.berlios.de/buildroot/buildrootv31.tar.bz2
entpacken:
Code:
tar -xvjf buildrootv31.tar.bz2
das entpackte in das Verzeichnis /chroots/ verschieben und anschließend umbenennen
Code:
mv Buildrootv3 /chroots/LAMPPBuildroot
Damit aus der chroot auch der passende DNS-Server zur Namensauflösung gefunden werden kann muss die Datei /etc/resolv.conf berücksichtigt werden:
Code:
cat /etc/resolv.conf > /chroots/LAMPPBuildroot/etc/resolv.conf
Das überschreibt den Inhalt der Datei mit dem, wie sie auf dem Server vorhanden ist.


proc mounten
Darüber hinaus wird außerhalb der chroot noch proc gemountet:
Code:
mount -tproc proc /chroots/LAMPPBuildroot/proc

Zeitzone in der chroot verfügbar machen
Um die korrekte Zeit und die korrekte Zeitzone vom Hauptlinux in eine chroot zu übernehmen:

Sofern das Verzeichnis noch nicht existieren sollte, erstellen:
Code:
mkdir /chroots/LAMPPBuildroot/usr/share
Dann die Infos vom Hauptlinux kopieren:
Code:
cp /etc/localtime /chroots/LAMPPBuildroot/etc/
cp -a /usr/share/zoneinfo /chroots/LAMPPBuildroot/usr/share/

Update der Programme
Nun in die neue chroot wechseln:
Code:
chroot /chroots/LAMPPBuildroot /bin/sh
in das source-Verzeichnis wechseln:
Code:
cd src
Nun werden ein paar grundlegende Dinge installiert, sofern sie noch nicht vorhanden sind. Vorher einmal die Pakete updaten.
Code:
apt-get update

apt-get dist-upgrade

apt-get upgrade

apt-get install gcc g++ binutils make libc6-dev bin86 \
libncurses5-dev libfreetype6 libfreetype6-dev libjpeg62 \
libjpeg62-dev libungif4g libungif4-dev flex bison \
libgdbm-dev libpng12-dev libttf2 libttf-dev wget \
libxml2-dev bzip2 libbz2-dev libxslt1-dev \
libcurl3 curl libcurl3-dev libmcrypt4 libmcrypt-dev \
libmhash-dev libmhash2 libreadline5 libreadline5-dev \
libc-client-dev libmm14 libmm-dev libtidy-dev libtidy-0.99-0 \
libgdbmg1 libgd-dev perl-modules perl-modules



apache (up)
Die Installation von Programmen, die selbst kompiliert werden beginnt immer im Verzeichnis /src/
Code:
cd /src/
Auf dieser Seite nach einer aktuellen httpd-Version schauen
Code:
wget http://netmirror.org/mirror/apache.org/httpd/httpd-2.2.6.tar.bz2
entpacken:
Code:
tar -xvjf httpd-2.2.6.tar.bz2
Nun wird in das Verzeichnis des httpd gewechselt
Code:
cd /src/httpd-2.2.6
konfigurieren und installieren:
Code:
./configure --prefix=/srv/apache2 --enable-cgi --enable-vhost-alias  \
--enable-rewrite --enable-so  --enable-info --enable-ssl

make && make install
Apache ist nun installiert.

Nun wird es noch ein wenig modifiziert.

user für apache hinzufügen:
Code:
adduser lampp-apache2
ihm die notwendigen Rechte einräumen:
Code:
chown -R lampp-apache2:lampp-apache2 /srv/apache2
Dann den vorhandenen Datenmüll entfernen...
Code:
su lampp-apache2

rm -R /srv/apache2/htdocs

mkdir /srv/apache2/htdocs
Nun kommt die conf-Datei:
Code:
vi /srv/apache2/conf/httpd.conf
folgende Punkte ändern:
  • Listenport ändern auf den gewünschten port (Standard ist 80) (Zeile 39)
  • daemon ändern in lampp-apache2 (Zeilen 64+65)
  • ServerAdmin root@domain.tld (Zeile 85) (hier natürlich eine existierende Adresse eintragen)
  • ServerName sollte folgenden Wert bekommen: ServerName? localhost:80
  • DocumentRoot anpassen: /htdocs (Zeile 101)
  • Directory anpassen (Zeile 128)
  • aus Options Indexes FollowSymLinks folgendes machen: Options -Indexes FollowSymLinks (Zeile 141)
  • aus AllowOverride None folgendes machen: AllowOverride All (Zeile 150)
vi beenden
Code:
[ESC]:wq[Enter]
Eventuell muss in die Datei /etc/hosts (anlegen, wenn noch nicht existierend) folgendes eingetragen werden:
Code:
127.0.0.1       localhost
127.0.0.1       debian
damit eine Namensaufllösung auf den eigenen Rechner stattfinden kann.

Ich habe mich dazu entschieden die htdocs in /htdocs zu haben.
Dieses Verzeichnis muss dann noch erstellt werden:

Daher zu erst den user zu root wechseln
Code:
exit
Und dann das Verzeichnis erstellen:
Code:
cd /

mkdir htdocs
Und dann noch die Rechte anpassen!
Code:
chown -R lampp-apache2:lampp-apache2 /htdocs/
Den Prozess umbenennen und testweise einmal starten (unter den Rechten des users!)
Code:
su lampp-apache2

cp /srv/apache2/bin/httpd /srv/apache2/bin/lampp-apache2

/srv/apache2/bin/lampp-apache2

exit
Dann testweise mal eine index.html mit Inhalt füllen:
Code:
echo "<h1>Baustelle</h1>Bitte später wiederkommen." > /htdocs/index.html
testen ob es im browser aufrufbar ist: http://www.domain.tld:port

Dann den apachen wieder stoppen:
Code:
killall lampp-apache2
Nun wird cband installiert:
Code:
cd /src

wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz

tar -xzvf mod-cband-0.9.7.5.tgz

cd mod-cband-0.9.7.5

./configure --prefix=/srv/mod_cban --with-apxs=/srv/apache2/bin/apxs

make && make install
Zum Schluss werden noch 2 cgi-Skripte entfernt:
Code:
rm /srv/apache2/cgi-bin/printenv

rm /srv/apache2/cgi-bin/test-cgi



mysql (up)
Nun ist mysql an der Reihe.

herunterladen und entpacken:
Code:
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.45.tar.gz/from/ftp://ftp.fu-berlin.de/unix/databases/mysql/

tar -xvzf mysql-5.0.45.tar.gz
in das Verzeichnis wechseln:
Code:
cd /src/mysql-5.0.45
konfigurieren:
Code:
./configure \
--prefix=/srv/mysql \
--localstatedir=/srv/mysql/mysqldata \
--enable-thread-safe-client \
--enable-local-infile \
--enable-assembler \
--with-comment \
--with-vio \
--with-extra-charsets=all \
--with-gnu-ld \
--with-isam \
--with-unix-socket-path=/tmp/mysql.5.0.sock \
--without-bench \
--without-debug \
--without-docs \
--without-man \
--without-innodb \
--with-charset=utf8 \
--with-collation=utf8_general_ci \
--with-mysqld-user=lampp-mysql \
--with-tcp-port=3306
und installieren:
Code:
make && make install
Dann den user hinzufügen, unter dem mysql laufen soll:
Code:
adduser lampp-mysql
dann die Rechte erteilen:
Code:
chown -R lampp-mysql:lampp-mysql /srv/mysql
den Prozess zur eindeutigen Identifikation umbenennen:
Code:
cp /srv/mysql/libexec/mysqld /srv/mysql/libexec/lampp-mysql
dann symlinks erzeugen:
Code:
cd /lib

ln -s /srv/mysql/lib/mysql/libmysqlclient.so.15

ln -s /srv/mysql/lib/mysql/libmysqlclient.so.15.0.0
für die lib-Verwaltung
Code:
ldconfig
Code:
su lampp-mysql

/srv/mysql/bin/mysql_install_db
Verzeichnis für log-file erstellen:
Code:
cd /srv/mysql

mkdir logs
mysql starten:
Code:
/srv/mysql/libexec/lampp-mysql \
--log-error=/srv/mysql/logs/error.log \
-u lampp-mysql \
--port=3306 \
--socket=/tmp/mysql.sock &
jetzt muss noch zum starten der socket verbogen werden:
Code:
cd /tmp

ln -s mysql.sock mysql.5.0.sock
Administrator-Passwort festlegen
Code:
/srv/mysql/bin/mysqladmin -u root password 'deinwunschpasstwortfuermysql'
Mit der Konsole bei mysql anmelden
Code:
/srv/mysql/bin/mysql -u root -pdeinwunschpasstwortfuermysql
dort dann in die mysql-Konsole eingeben:
Code:
connect mysql

update user SET Password=PASSWORD('deinwunschpasstwortfuermysql');
Konsole mit
Code:
exit
beenden

mysql beenden:
Code:
killall lampp-mysql
mysql neu starten:
Code:
/srv/mysql/libexec/lampp-mysql \
--log-error=/srv/mysql/logs/error.log \
-u lampp-mysql \
--port=3306 \
--socket=/tmp/mysql.sock &
user beenden
Code:
exit



openssl (up)
Zu erst herunterladen und entpacken:
Code:
cd /src

wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz

tar -xzvf openssl-0.9.8e.tar.gz
konfigurieren und installieren:
Code:
cd openssl-0.9.8e

./config

make && make test && make install
key für pure-ftpd:
Code:
mkdir -p /etc/ssl/private

/usr/local/ssl/bin/openssl req -x509 -nodes -newkey rsa:1024 -keyout \
  /etc/ssl/private/pure-ftpd.pem \
  -out /etc/ssl/private/pure-ftpd.pem

chmod 600 /etc/ssl/private/*.pem
key für apache:
Code:
/usr/local/ssl/bin/openssl dsaparam -rand -genkey -out myRSA.key 1024

/usr/local/ssl/bin/openssl gendsa -des3 -out myca.key myRSA.key

/usr/local/ssl/bin/openssl req -new -x509 -days 365 -key myca.key -out new.crt

cd /srv

mkdir openssl

mv myca.key /srv/openssl/server.key

mv new.crt /srv/openssl/server.crt
Damit SSL auch genutzt werden kann muss in der httpd.conf die Zeile 401 das Kommentarzeichen entfernt werden. Anschließend muss der apache neugestartet werden.

Dann wird in der /srv/apache2/conf/extra/httpd-ssl.conf der vhost auskommentiert. Das betrifft die Zeilen 74 bis 231.
Wichtig ist, dass entweder in der httpd-ssl.conf (standardmäßig) oder in der httpd.conf folgendes steht:
Code:
Listen 443
Denn das ist der port, auf dem die verschlüsselte Verbindung aufgebaut wird.

Dann sollte in der Datei, in welcher auch die vhosts definiert werden (/srv/apache2/conf/extra/httpd-vhosts.conf) ein Eintrag wie dieser vorhanden sein:
Code:
<VirtualHost _default_:443>
  DocumentRoot /htdocs/errorssl
  ServerName domain.tld
  ServerAdmin root@domain.tld
  ErrorLog /htdocs/logs/defaultssl-error_log
  CustomLog /htdocs/logs/efaultssl_log common
  TransferLog logs/defaultssl-access.log
  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLCertificateFile /srv/openssl/server.crt
  SSLCertificateKeyFile /srv/openssl/server.key
  <FilesMatch "\.(cgi|shtml|phtml|php|php5|phps)$">
    SSLOptions +StdEnvVars
  </FilesMatch>
  <Directory "/srv/apache2/cgi-bin">
    SSLOptions +StdEnvVars
  </Directory>
  BrowserMatch ".*MSIE.*" \
  nokeepalive ssl-unclean-shutdown \
  downgrade-1.0 force-response-1.0
</VirtualHost>
Dieser wird immer dann benutzt, wenn kein anderer passender chost gefunden wurde In der Datei /srv/apache2/conf/extra/httpd-vhosts.conf muss dann auch folgendes stehen:
Code:
NameVirtualHost *:80
NameVirtualHost *:443
Dann sollten die vhosts für ssl funktionieren.

Natürlich muss das Verzeichnis /htdocs/errorssl dann noch erstellt werden - und eine Datei mit Inhalt bekommen!

Anschließend muss der apache einmal neugestartet werden.



php (up)
php-source herunterladen und installieren
Code:
cd /src

wget http://www.php.net/get/php-5.2.5.tar.bz2/from/de3.php.net/mirror

tar -xvjf php-5.2.5.tar.bz2

cd php-5.2.5

./configure \
--prefix=/srv/php \
--with-mysql=/srv/mysql \
--with-mysqli=/srv/mysql/bin/mysql_config \
--with-config-file-path=/srv/php \
--with-exec-dir=/htdocs \
--with-pear=/srv/php/pear \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-zlib-dir=/usr/include/ \
--with-apxs2=/srv/apache2/bin/apxs \
--with-bz2 \
--with-curl \
--enable-bcmath \
--enable-calendar \
--enable-ctype \
--enable-dbase \
--enable-discard-path \
--enable-exif \
--enable-force-cgi-redirect \
--enable-ftp \
--enable-gd-native-ttf \
--enable-inline-optimization \
--enable-mbstring=all \
--enable-shmop \
--enable-sigchild \
--enable-simplexml \
--enable-soap \
--enable-sqlite-utf8 \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--enable-wddx \
--with-gd \
--with-gdbm \
--with-gettext \
--with-kerberos \
--with-jpeg-dir=/usr \
--with-mcrypt \
--with-mhash \
--with-mm \
--with-png-dir=/usr \
--with-readline \
--with-iconv \
--with-ttf \
--with-pdo-sqlite \
--with-pdo-mysql=/srv/mysql \
--with-tidy \
--with-kerberos \
--with-imap \
--with-imap-ssl \
--with-openssl
Code:
make

make test

killall lampp-apache2

make install
den Benutzer wechseln:
Code:
su lampp-apache2
Hier
Code:
vi /srv/apache2/conf/httpd.conf
nun folgende Änderungen/Ergänzungen:

(Zeile 308+309)

Code:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
und (Zeile 164)
Code:
DirectoryIndex index.html
durch
Code:
DirectoryIndex index.html index.php index.htm
ersetzen

Dann die Zeile 388 auskommentieren.

vhost werden dann in der Datei /chroots/MAILBuildroot/srv/apache2/conf/extra/httpd-vhosts.conf angelegt.

Nun muss vor einem start mind. ein vhost definiert sein:
Code:
vi /srv/apache2/conf/extra/httpd-vhosts.conf
die beiden default-Einträge zu einem ändern:
Code:
<VirtualHost *:80>
    ServerAdmin root@domain.tld
    DocumentRoot "/htdocs"
    ServerName domain.tld
    ServerAlias www.domain.tld
    ErrorLog "logs/domain.tld-error_log"
    CustomLog logs/domain.tld_log common"
</VirtualHost>
Wenn der port auf dem der apache lauscht unterhalb von 1024 ist, dann muss erst der user verlassen werden um den apachen zu starten, andernfalls gilt diese Reihenfolge:

Apachen starten:
Code:
/srv/apache2/bin/lampp-apache2
Nun wieder den Benutzer verlassen
Code:
exit



phpmyadmin (up)
Code:
cd /htdocs

su lampp-apache2

wget http://belnet.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.2.1-all-languages.tar.bz2

tar -xvjf phpMyAdmin-2.11.2.1-all-languages.tar.bz2

exit

mv phpMyAdmin-2.11.2.1-all-languages.tar.bz2 /src/phpMyAdmin-2.11.2.1-all-languages.tar.bz2

su lampp-apache2

mv phpMyAdmin-2.11.2.1-all-languages/ phpmyadmin

cd phpmyadmin/
Jetzt eine config-Datei erstellen und testen. Es existiert eine Datei namens config.sample.inc.php. Diese wird kopiert:
Code:
cp config.sample.inc.php config.inc.php
Dort kann die Datei dann beliebig erweitert werden.

Mein Inhalt lautet:
Code:
$cfg['Servers'][$i]['port']          = '3306';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['socket']        = '';
$cfg['Servers'][$i]['extension']     = 'mysql';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['controluser']   = 'root';
$cfg['Servers'][$i]['controlpass']   = 'PASSWORT';
$cfg['Servers'][$i]['auth_type']     = 'http';
$cfg['Servers'][$i]['user']          = 'root';
$cfg['Servers'][$i]['password']      = 'PASSWORT';
$cfg['Servers'][$i]['only_db']       = '';
$cfg['Servers'][$i]['verbose']       = '';
$cfg['Servers'][$i]['pmadb']         = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation']      = 'pma_relation';
$cfg['Servers'][$i]['table_info']    = 'pma_table_info';
$cfg['Servers'][$i]['table_coords']  = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages']     = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info']   = 'pma_column_info';
$cfg['Servers'][$i]['history']       = 'pma_history';
$cfg['Servers'][$i]['verbose_check'] = TRUE;
$cfg['Servers'][$i]['AllowRoot']     = TRUE;
$cfg['Servers'][$i]['AllowDeny']['order'] = '';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array();
pma ist dann so aufrufbar: http://www.domain.tld:port/phpmyadmin/



pureftp (up)
Herunterladen und entpacken:
Code:
wget http://download.pureftpd.org/pub/pure-ftpd/releases/snapshots/pure-ftpd-1.0.22.tar.gz

tar -xzvf pure-ftpd-1.0.22.tar.gz
in das Verzeichnis wechseln:
Code:
cd pure-ftpd-1.0.22
und installieren:
Code:
./configure \
   --prefix=/srv/pureftpd/ \
   --without-inetd \
   --with-largefile \
   --with-ratios \
   --with-quotas \
   --with-ftpwho \
   --with-peruserlimits \
   --with-tls \
   --with-certfile=/etc/ssl/private/pure-ftpd.pem \
   --with-mysql=/srv/mysql/


make install-strip
Dann wird die ID des apache-users erfragt:
Code:
cat /etc/passwd | grep lampp-apache2
In meinem Falle ist das die 1000

dann wird eine ftp-user-Gruppe erzeugt. Der Vorteil ist der, dass der ftp-user und der apache-user dann in der gleichen Gruppe sind und somit weitere Probleme beim späteren Betrieb reduziert werden.

Code:
groupadd -g 1000 ftpgroup

useradd -u 1000 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
Dann 2 Verzeichnisse erstellen:
Code:
mkdir /etc/pure_ftpd/

mkdir /etc/pure_ftpd/conf
Nun werden ein paar Config-Dateien angelegt und mit Inhalt gefüllt:
Code:
echo "YES" > /etc/pure_ftpd/conf/CreateHomeDir

echo "YES" > /etc/pure_ftpd/conf/ChrootEveryone
sowie:
Code:
vi /etc/pure_ftpd/mysql.conf
mit dem Inhalt:
Code:
MYSQLSocket     /tmp/mysql.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   deinftppasswort
MYSQLDatabase   pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLDefaultUID 1000
MYSQLGetPW      SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID     SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID     SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir     SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
via mysql-console (Erstellen der db:(
Code:
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'deinftppasswort';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'deinftppasswort';
FLUSH PRIVILEGES;
via mysql-console (Erstellen der Struktur:(
Code:
CREATE TABLE `ftpd` (
  `User` varchar(16) NOT NULL default '',
  `status` enum('0','1') NOT NULL default '1',
  `Password` varchar(64) NOT NULL default '',
  `Uid` varchar(11) NOT NULL default '1000',
  `Gid` varchar(11) NOT NULL default '1000',
  `Dir` varchar(128) NOT NULL default '/htdocs/',
  `ULBandwidth` smallint(5) NOT NULL default '0',
  `DLBandwidth` smallint(5) NOT NULL default '0',
  `comment` tinytext NOT NULL,
  `ipaccess` varchar(15) NOT NULL default '*',
  `QuotaSize` smallint(5) NOT NULL default '0',
  `QuotaFiles` int(11) NOT NULL default '0',
  UNIQUE KEY `User` (`User`)
);
via mysql-console (Erstellen des ersten users:(

Code:
INSERT INTO `pureftpd`.`ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`)
VALUES ('user', '1', MD5('password'), '1000', '1000', '/htdocs/', '0', '0', '', '*', '0', '0');
Dann noch den Dienst-Namen umbenennen:
Code:
cp /srv/pureftpd/sbin/pure-ftpd /srv/pureftpd/sbin/lampp-ftp
Server starten:
Code:
/srv/pureftpd/sbin/pure-ftpd2 --tls=2 -0 stats:/srv/pureftpd/logs/pureftpd.log -S21 -l mysql:/etc/pure_ftpd/mysql.conf -A -E -D -c50 -C5 &



ioncube (up)
Hier nach der aktuellen Version schauen. Die Linux (x86) als tar.bz2 ist die Ggesuchte!
Code:
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.bz2

tar -xvjf ioncube_loaders_lin_x86.tar.bz2

cd ioncube

mkdir /srv/apache2/modules

cp ioncube_loader_lin_5.1.so /srv/apache2/modules
dort in der php.ini sehr weit unten (etwa Zeile 1211) folgenden Eintrag ergänzt:
Code:
[Zend]
zend_extension = /etc/php5/apache2/ioncube_loader_lin_5.1.so
anschließend den apachen neustarten

(in der chroot)
Code:
killall lampp-apache2

/srv/apache2/bin/apachectl start
in der phpinfo(); findet man jetzt:

This program makes use of the Zend Scripting Language Engine: Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies with the ionCube PHP Loader v3.1.23, Copyright (c) 2002-2006, by ionCube Ltd.

und unter Additional Modules ist der ioncube Loader gelistet.




msmtp (up)
Das ganze beschreibt wie man msmtp im Hauptlinux installiert. Wenn das erfolgreich geklappt hat, kann man in crontab -e oben einfach anstatt root, die emailadresse eintragen an die man alle meldungen von crons geschickt haben will. Wenn man gewisse crons keinerlei ausgaben machen lassen will, einfach ein > /dev/null hintendran, das sollte reichen.

Installation von msmtprc
Code:
cd /src/

wget -dv http://surfnet.dl.sourceforge.net/sourceforge/msmtp/msmtp-1.4.13.tar.bz2

tar -xjvf msmtp-1.4.13.tar.bz2

cd msmtp-1.4.13

./configure --prefix=/srv/msmtp

make

make install

cd /srv/msmtp

mkdir etc

cd etc

touch msmtprc

vi msmtprc
In die Datei folgendes reinschreiben:
Code:
# Set default values for all following accounts.
defaults
tls off
logfile /var/log/msmtp.log
syslog LOG_MAIL
# A freemail service
account rootMailAccount
host localhost
from email@domain.tld
auth on
user email@domain.tld
password pwDerEmailAdresse

# Set a default account
account default : rootMailAccount
Austauschen: email@domain.tld und pwDerEmailAdresse

Jetzt noch das alte sendmail sichern und mittels einem symlink das neue benutzen:
Code:
cd /usr/sbin/

mv sendmail sendmail.bak

ln -s /srv/msmtp/bin/msmtp /usr/bin/sendmail

ln -s /srv/msmtp/bin/msmtp /usr/sbin/sendmail

ln -s /srv/msmtp/lib/msmtp /usr/lib/sendmail
test ob es funktioniert:

ein .sh-script erstellen (chmod nicht vergessen) und folgendes reinschreiben:

Code:
echo -e "Subject: Test" > /mail.txt
echo -e "\n" >> /mail.txt
echo "Das ist ein Test" >> /mail.txt
cat /mail.txt | /usr/sbin/sendmail -v empfänger@domain.tld
rm /mail.txt
empfänger@domain.tld austauschen und ausführen

In der crontab

Code:
crontab -e
muss dann lediglich noch in die erste Zeile:
Code:
MAILTO=empfänger@domain.tld
Fortan werden alle (!) Meldungen per mail verschickt.

dann php configure nochmal neu ausführen und apache neustarten!
Code:
cd /src/php-5.2.4

make clean

make distclean

./configure --prefix=/srv/php --with-mysql=/srv/mysql --with-mysqli=/srv/mysql/bin/mysql_config \
--with-_lib=lib --with-config-file-path=/srv/php --with-exec-dir=/htdocs --with-pear=/srv/php/pear \
--with-xml --with-xmlrpc --with-xsl --with-zip --with-zlib --with-zlib-dir=/usr/include/ \
--with-apxs2=/srv/apache2/bin/apxs --with-bz2 --with-curl --with-freetype --with-ftp \
--enable-bcmath --enable-calendar --enable-ctype --enable-dbase --enable-discard-path \
--enable-exif --enable-filepro --enable-force-cgi-redirect --enable-ftp --enable-gd-imgstrttf \
--enable-gd-native-ttf --enable-inline-optimization --enable-mbstr-enc-trans --enable-mbstring=all \
--enable-memory-limit --enable-shmop --enable-sigchild --enable-simplexml --enable-soap --enable-sqlite-utf8 \
--enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --enable-track-vars --enable-trans-sid \
--enable-wddx --with-gd --with-gdbm --with-gif-dir=/usr --with-gettext --with-kerberos --with-jpeg-dir=/usr \
--with-mcrypt --with-mhash --with-mm --with-png-dir=/usr --with-readline --with-iconv --with-ttf \
--with-pdo-sqlite --with-pdo-mysql=/srv/mysql --with-tidy --with-imap --with-imap-ssl --with-openssl

killall lampp-apache2

make && make test && make install

su lampp-apache2

/srv/apache2/bin/lampp-apache2

exit



webalizer (up)
webalizer wird zwar nicht mehr weiterentwickelt, stellt aber noch immer ein sehr angenehmes tool dar, um die Besucherzahlen grafisch darzustellen.
Code:
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-src.tar.bz2

tar -xjvf webalizer-2.01-10-src.tar.bz2

cd webalizer-2.01-10

./configure --prefix=/srv/webalizer --with-language=german

make

make install



cron (up)
Um den cron-Dienst in der chroot nutzen zu können, muss dieser seperat gestartet werden.

kopieren:
Code:
cd /usr/sbin
umbenennen
Code:
cp cron lampp-cron
starten:
Code:
./lampp-cron

Geändert von Jann Hendrik (22.01.2008 um 09:39 Uhr).
Jann Hendrik ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.01.2008, 11:14 Nach oben    #3
Jann Hendrik
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 1.548
Standard

Wartung (up)
Im zweiten Teil des Tutorials gehe ich davon aus, dass die Installation geklappt hat. Fertig ist man damit jedoch nicht! Es kommen immer wieder einige Punkte Arbeit auf einen zu. Einige sollen hier angerissen werden.




Dienste starten (up)
Um einzelne Dienste zu starten hier eine kleine Übersicht:

apache:
Code:
/srv/apache2/bin/lampp-apache2
mysql:
Code:
su lampp-mysql

/srv/mysql/libexec/lampp-mysql \
--log-error=/srv/mysql/logs/error.log \
-u lampp-mysql \
--port=3306 \
--socket=/tmp/mysql.sock &

exit
pureftp:
Code:
/srv/pureftpd/sbin/lampp-ftp --tls=2 -0 stats:/srv/pureftpd/logs/pureftpd.log -S21 -l mysql:/etc/pure_ftpd/mysql.conf -A -E -D -c50 -C5 &
cron:
Code:
/usr/sbin/lampp-cron
Code:
proc:
Code:
mount -tproc proc /proc/



Dienste stoppen (up)
Um gewisse Dienste zu stoppen:

apache:
Code:
killall lampp-apache2
mysql:
Code:
killall lampp-mysql

pureftp:

Code:
killall pure-ftpd2
cron:
Code:
killall lampp-cron
lighttpd:
Code:
killall lampp-lighttpd
proc:
Code:
umount /chroots/LAMPPBuildroot/proc/



Domains (up)
Subdomains und Domains werden als vHost in der Datei /chroots/LAMPPBuildroot/srv/apache2/conf/extra/httpd-vhosts.conf eingetragen.




php.ini und httpd.conf (up)
Die Datei php.ini befindet sich unter diesem Pfad /chroots/LAMPPBuildroot/srv/php/php.ini

Die Datei httpd.conf befindet sich unter diesem Pfad
/srv/apache2/conf/httpd.conf




ftp-Verbindung (up)
dazu muss als Servertyp 'FTP über TLS (Explizite Verschlüsselung)' eingestellt werden, sowie als Transfermodus, der 'passive Modus' aktiviert werden.



apache-Tricks (up)
mittels dem apachectl script, kann man folgendes beim apache machen:

startet den apache
Code:
/srv/apache2/bin/apachectl start
stoppt den apache
Code:
/srv/apache2/bin/apachectl stop
stop und startet den apache
Code:
/srv/apache2/bin/apachectl restart
testet die aktuellen config-dateien vom apache ob sie okay sind und er so startet könnte
Code:
/srv/apache2/bin/apachectl configtest
beenden und startet den apache erst dann neu wenn alle aktuellen verbindungen und downloads zuende sind
Code:
/srv/apache2/bin/apachectl graceful



webalizer nutzen (up)
um die webalizer-Statistiken zu aktualsisieren empfiehlt sich folgendes in ein Skript zu schreiben und per cronjob aufzurufen:
Code:
cd /htdocs/webalizer/
/srv/webalizer/bin/webalizer -n "www.domain.tld" /srv/apache2/logs/access_log >> /scripts/logs/webalizer.log



db-backup (up)
Wie man mit der shell ein db-Backup machen kann wird in diesem Tutorial ausführlich beschrieben:
-> [shell] datenbank backup per konsole



shell-Skript zum starten (up)
Ein solches Shell-Skript könnte zB so aussehen:
Code:
#!/bin/sh

# proc
mount -tproc proc /proc/

# apache
/srv/apache2/bin/lampp-apache2

# cron
/usr/sbin/lampp-cron

# ftp
/srv/pureftpd/sbin/lampp-ftp --tls=2 -0 stats:/srv/pureftpd/logs/pureftpd.log -S21 -l mysql:/etc/pure_ftpd/mysql.conf -A -E -D -c50 -C5 &

# mysql
/srv/mysql/libexec/lampp-mysql --log-error=/srv/mysql/logs/error.log -u lampp-mysql --port=3306 --socket=/tmp/mysql.sock &


shell-Skript zum beenden (up)
Das Skript um die komplette chroot zu beenden sieht so aus:
Code:
#!/bin/sh

# proc
umount /proc/

# apache
killall lampp-apache2

# cron
killall lampp-cron

# ftp
killall lampp-ftp

# mysql
killall lampp-mysql

Geändert von Jann Hendrik (16.01.2008 um 11:17 Uhr).
Jann Hendrik ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.01.2008, 11:14 Nach oben    #4
Jann Hendrik
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 1.548
Standard

Jetzt solltet Ihr eigentlich in der Lage sein, eine LAMPP-chroot zu erstellen. Ich gehe allerdings davon aus, dass der Regelfall eintritt und Probleme auftauchen. Für diesen Fall - und auch für den Fall, dass ihr Fragen zu diesem Tutorial haben solltet, so schreibt bitte einen Beitrag im Server-Forum mit einem Verweis auf dieses Tutorial.
Danke.

Natürlich habe ich mir beim Erstellen dieses Tutorials große Mühe gegeben. Kleine Fehler lassen sich aber bei dem Umfang nicht immer vermeiden, auch wenn es schon vor der Veröffentlichung mehrfach von verschiedenen Personen getestet wurde.
Weiterhin gibt es - auch für Kleinigkeiten - von euch möglicherweise gute Ideen, wie man das eine oder andere besser umsetzen oder vereinfachen könnte.
Über Mitteilungen dieser Art bin ich dankbar.


Ich hoffe, dass ich Euch hier etwas weiterhelfen konnte.

Grüße Jann Hendrik
Jann Hendrik ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

« [php] Validität von ISBN kontrollieren | [JS] Objektorientierte Programmierung in JavaScript »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:58 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.6.7, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44