WWW-Server
__Beim Webserver gibt es sehr viel Optimierungspotential.Wir werden hier erst mal apache mit einer übersichtlichen und einfach zu erweiternden Konfiguration erstellen und danach suExec mit FastCGI einsetzten um die Sicherheit auch bei mehreren Benutzern auf dem System (sog. "ISP Hosting Setup") zu gewährleisten.
Damit dann die User ihre Daten auch hochladen können, wird ein FTP-Server (proftpd) installiert.
Danach werden wir noch einen mySQL-Datenbankserver erstellen.__
apache Webserver
Zuerst werden mal die notwendigen Komponenten installiert:
yum install ImageMagick suexec sendmail unzip sendmail mailx httpd mod_fcgid php php-cli php-common php-devel php-gd php-imap php-mbstring php-mcrypt php-mysql php-pdo php-pear chkconfig httpd on chkconfig sendmail on
Damit müssten wir alles haben um auch komplexere Applikationen wie typo3 oder gallery2 laufen zu lassen.
Die Problematik mit mod_php
Bei den meisten apache Webservern läuft PHP als Modul: mod_php. Dies ist sehr einfach einzubinden, allerdings auch sehr suboptimal. Denn dann werden sämtliche PHP Scripte mit dem Benutzernamen und Gruppe des Webservers ausgeführt (z.B. apache). Dies bedingt, dass "apache" auf alle Web-Verzeichnisse zumindest lese, bei manchen sogar Schreibberechtigung erfordert. -So kann also jeder Benutzer auf dem Server sämtliche Inhalte der anderen Benutzer lesen und viele sogar beschreiben!Workarounds gibts bei php mit dem sog. "save_mode", was aber nur eine halbe Lösung ist.
Lässt man hingegen PHP als (fast-)CGI laufen, so werden alle PHP-Skripte mit dem tatsächlichen Web-Benutzer ausgeführt. Dabei gehts es sogar soweit, dass jeder Benutzer ein eigenes PHP und sogar eine eigene php.ini haben könnte.
Deshalb installierten wir oben apache mit der CGI-Variante und suEXEC, anstatt "mod_php".
Konfiguration
Als erstes müssen wir nun sicherstellen, dass die Datei: /etc/httpd/conf.d/php.conf entweder leer ist, oder nicht existiert. Ist die Datei da, einfach alles darin löschen und abspeichern.
Alternativ lässt sich das auch mit diesem Kommando machen:
test -f /etc/httpd/conf.d/php.conf && echo "# This module is disabled">/etc/httpd/conf.d/php.conf
Wo das php binary nun liegt finden wir heraus mit:
whereis php-cgi
Bei Debian und CentOS ist dies normalerweise: /usr/bin/php-cgi.
Nun müssen wir testen ob es sich auch um die fcgi-Version handelt:
/usr/bin/php-cgi -v
Hier müsste so was wie hier ausgegeben werden (siehe das "fcgi" in den Klammern):
PHP 5.2.10 (cgi-fcgi) (built: Nov 13 2009 11:39:02) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
Wir könnten nun grundsätzlich php auch selbst kompilieren und dies verwenden. Dabei müsste man einfach darauf achten, dass php mit der fcgi-option kompiliert wird.
Der Nachteil wäre aber dann, dass wir php nicht mehr automatisch mit dem Paketmanager upgraden könnten.
Der Nachteil wäre aber dann, dass wir php nicht mehr automatisch mit dem Paketmanager upgraden könnten.
Nun noch überprüfen, ob FCGID aktiviert ist, dazu müsste im file: /etc/httpd/conf.d/fcgid.conf oder in der httpd.conf so etwas stehen:
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule !mod_fastcgi.c>
AddHandler fcgid-script fcg fcgi fpl
AddHandler fcgid-script .php
</IfModule>
SocketPath run/mod_fcgid
SharememPath run/mod_fcgid/fcgid_shmAnlegen der Benutzer und Gruppen
Nun werden wir für jeden Benutzer einen Account ohne shell Zugriff, sowie die gemeinsame Benutzergruppe "users" anlegen.Es ist hier übersichtlich wenn man pro domain einen Benutzer macht; ausser man hat Benutzer mit mehreren Domains. Wir legen hier einen Benutzer pro Domain an:
groupadd users useradd testdomain.tld -g users
So erhält jeder Benutzer einen system account in der Form: "domain.tld" und ist in der Standardgruppe: "users".
Der apache selbst hat den gleichnamigen Benutzernamen und ist in der Gruppe: apache (bei debian systemen: www-data)
Verzeichnisstruktur
Die Domain Verzeichnisse sind nach domain-tld/subdomain gegliedert, d.h. der Virtualhost: subdomain.domain.tld hätte den document root: /home/web/domain.tld/subdomain/public_htmlEine Skelettstruktur sieht dann entsprechend so aus:
/home/web/domain.tld/
`-- www
|-- log
| |-- access_log
| |-- combined.log
| `-- error_log
`-- public_html
|-- index.htmlWir haben hier also alle Homepages im Verzeichnis /home/web/ und jede Domain hat ein Verzeichnis "domain.tld", so wie die Unterverzeichnisse: "log" und "public_html". - Im Verzeichnis "log" werden die Logfiles pro (sub-)Domain gespeichert und in "public_html" die öffentlichen Seiten.
Berechtigungen
Die Berechtigungen werden dann wie folgt gesetzt:drwx--x--x root root /home/web/ dr-xr-s--- domain.tld apache /home/web/domain.tld/ drwxr-s--- domain.tld apache /home/web/domain.tld/www/ dr-xrws--- domain.tld apache /home/web/domain.tld/www/log/ drwxr-s--- domain.tld apache /home/web/domain.tld/www/public_html/ -rw-r----- domain.tld apache /home/web/domain.tld/www/public_html/index.php
Dies müsste sicher stellen, dass der User wirklich nur in "seinem" home-Verzeichnis lesen kann; des weiteren darf er auch dort z.B. sein log-Verzeichnis nicht löschen, da dies vom apache verwaltet wird.
Weiter darf der apache user Verzeichnisse innerhalb von /home/web/ lesen (execute), sich diese aber nicht auflisten lassen (read).
Anpassen des Filesystems
suEXEC bedingt standardmässig, dass der PHP-Starter unter /var/www liegt; um dies zu ändern müsste man suEXEC selbst/neu kompilieren, deshalb lassen wir es so.Hinweis: Es geht dabei nur um das script, dass PHP-CGI startet; wo die Webseiten liegen ist egal!
Nun legen wir das fcgi-verzeichnis an:
mkdir /var/www/fcgi
Die Idee ist, dass hier für jeden web-user ein eigens Verzeichnis erstellt wird und ein startscript darin, dass "sein" php-cgi startet wenn die Webseite dieses Benutzers aufgerufen wird. Es ist dabei wichtig, dass jeder Benutzer ein Verzeichnis hat, auch wenn darin normalerweise nur ein script liegt - Ansonsten verweigert suEXEC aus Sicherheitsgründen den Dienst. Das Verzeichnis muss den Benutzer- und Gruppennamen des Webbenutzer haben.
Nun machen wir das mal für unsere testdomain:
mkdir /var/www/fcgi/testdomain.tld
Darin erstellen wir das Starterscript:
/var/www/fcgi/testdomain.tld/php-fcgi.sh
#!/bin/sh
WEBROOT="/home/web/testdomain.tld"
BASEDIR="/tmp:$WEBROOT"
PHPRC=/etc/php.ini
export PHPRC
exec /usr/bin/php-cgi -d open_basedir=${BASEDIR}und machen es ausführbar und setzen Benutzer/Rechte:
chmod 755 /var/www/fcgi/testdomain.tld/php-fcgi.sh chown -vR testdomain.tld:users /var/www/fcgi/testdomain.tld
Dieses Script ist ein sog. "Wrapper" und wird nun jeweils gestartet wenn die Webseite des Benutzers zum ersten mal aufgerufen wird.
In diesem Script könnte man nun eine ganze Umgebung konfigurieren: Individuelles php binary, eigene php.ini, Optionen voraussetzen, Umgebungsvariablen definieren., usw.
Wir beschränken uns hier aber auf das Standard php/php.ini und konfigurieren nur das open_basedir für den Benutzer.
Nun braucht der Benutzer aber noch ein Webverzeichnis; diese legen wir unter /home/web an:
mkdir /home/web
mkdir -pv /home/web/testdomain.tld/www/{log,public_html}
chown -vR testdomain.tld:apache /home/web/testdomain.tld/
chmod -v 2550 /home/web/testdomain.tld
chmod -v 2750 /home/web/testdomain.tld/www
chmod -v 2570 /home/web/testdomain.tld/www/log
chmod -v 2750 /home/web/testdomain.tld/www/public_htmlZu beachten ist hier, dass die Webverzeichnisse dem Domain-Benutzer und der Apache-Gruppe (apache) gehören. apache bekommt aber nur lese und ausführ-rechte. Dies ist nötig, weil sonst der apache ja selbst nicht mehr auf die Seiten zugreifen könnte. Ein Auslesen fremder Daten per PHP wird so aber unmöglich, da PHP mit der Gruppe: "users" ausgeführt wird.
Mit dem SGID-Bit (die "2" beim chmod) stellen wir sicher, dass neu angelegte Dateien nicht die Gruppe des Benutzers (users), sondern die des Verzeichnisses (apache) bekommen.
Des weiteren sollten wir noch sicherstellen, dass vom Benutzer angelgte Dateien/Verzeichnisse auch die entsprechenden Berechtigungen erhalten, die machen wir mit "umask":
echo "umask 027" >> /home/web/testdomain.tld/.bashrc
und dann am besten auch im skel-Verzecihnis; so wird das beim anlegen neuer Benutzer automatisch gesetzt:
echo "umask 027" >> /etc/skel/.bashrc
Apache Konfigurieren
Nun erstellen wir eine saubere apache config und für jede Datei eine Virtualhosts Datei. (Kommentare wurden hier der besseren Unübersichtlichkeit halber bewusst weggelassen)Bestehende Dateien werden hier überschrieben und überflüssige gelöscht. Zum Schluss sollte das Verzeichnis /etc/httpd etwa so aussehen:
drwxr-xr-x 6 root root 1.0K Feb 23 00:31 . drwxr-xr-x 66 root root 5.0K Mar 7 19:41 .. drwxr-xr-x 2 root root 1.0K Feb 26 16:10 conf drwxr-xr-x 2 root root 1.0K Mar 7 22:45 conf.d lrwxrwxrwx 1 root root 19 Feb 22 05:09 logs -> ../../var/log/httpd lrwxrwxrwx 1 root root 29 Feb 22 05:09 modules -> ../../usr/lib64/httpd/modules lrwxrwxrwx 1 root root 13 Feb 22 05:09 run -> ../../var/run drwxr-xr-x 2 root root 1.0K Apr 15 2008 ssl drwxr-xr-x 2 root root 1.0K Mar 3 02:23 vhosts.d
Nun gehts an die Dateien:
/etc/httpd/conf/httpd.conf:
Diese Datei kann man gröstenteils beim Standard belassen; lediglich zu unterst muss noch die Zeile:
Include vhosts.d/*
eingefügt werden:
echo "Include vhosts.d/*" >> /etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/vhosts.conf:
NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> DocumentRoot /home/web/www </VirtualHost> <VirtualHost *:443> SSLEngine On SSLCertificateFile /etc/httpd/ssl/apache.crt SSLCertificateKeyFile /etc/httpd/ssl/apache.key DocumentRoot /home/web/www </VirtualHost> <Directory /> Order Deny,Allow Deny from all Options None AllowOverride None </Directory> <Directory "/home/web"> AllowOverride All Options +SymLinksIfOwnerMatch +Includes Order Allow,Deny Allow from all </Directory>
Nun noch für jede Domain ein Virtualhostsfile (jeder Host erhällt auch ein SSL-Virtualhost; damit kann man alle Webseiten auch per SSL abrufen); 0.0.0.0 ist wiederum mit der IP des Servers zu ersetzen:
/etc/httpd/vhosts.d/testdomain.tld
################################################################################
# Virtualhosts File for Domain testdomain.tld
################################################################################
<VirtualHost *:80>
<Directory /home/web/www.testdomain.tld/>
AllowOverride All
Options +SymLinksIfOwnerMatch +Includes +ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /var/www/fcgi/testdomain.tld/php5-fcgi.sh .php
</Directory>
ServerName testdomain.tld
ServerAlias www.testdomain.tld
DocumentRoot /home/web/www.testdomain.tld/public_html
CustomLog /home/web/www.testdomain.tld/log/combined.log combined
CustomLog /home/web/www.testdomain.tld/log/access_log common
ErrorLog /home/web/www.testdomain.tld/log/error_log
SuexecUserGroup testdomain.tld users
</VirtualHost>
<VirtualHost *:443>
<Directory /home/web/www.testdomain.tld/>
AllowOverride All
Options +SymLinksIfOwnerMatch +Includes +ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /var/www/fcgi/testdomain.tld/php5-fcgi.sh .php
</Directory>
ServerName testdomain.tld
ServerAlias www.testdomain.tld
DocumentRoot /home/web/www.testdomain.tld/public_html
CustomLog /home/web/www.testdomain.tld/log/combined.log combined
CustomLog /home/web/www.testdomain.tld/log/access_log common
ErrorLog /home/web/www.testdomain.tld/log/error_log
SuexecUserGroup testdomain.tld users
SSLEngine On
SSLCertificateFile /etc/httpd/ssl/webmail.crt
SSLCertificateKeyFile /etc/httpd/ssl/webmail.key
CustomLog /tmp/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>SSL-Konfiguration
Nun muss nur noch ein SSL-Zertifikat erstellt werden:(ANMERKUNG: Bei der "passphrase"-Abfrage einfach ENTER drücken)
mkdir /etc/httpd/ssl ssh-keygen -t rsa -f /etc/httpd/ssl/apache.key openssl req $@ -new -x509 -days 365 -nodes -out /etc/httpd/ssl/apache.crt -keyout /etc/httpd/ssl/apache.key
Domain / Benutzer hinzufügen
Um nun eine neue Domain, bzw. Benutzer hinzuzufügen muss man folgendes tun:- Benutzer erstellen:
adduser domain.tld -g users
- Verzeichnis und Starterscript erstellen:
mkdir /var/www/fcgi/domain.tld vi /var/www/fcgi/domain.tld/php-fcgi.sh chown -vR domain.tld:users /var/www/fcgi/domain.tld chmod 755 /var/www/domain.tld/php-fcgi.sh
- Webverzeichnis erstellen:
mkdir -p /home/web/domain.tld/www/{log,public_html}
chown -vR domain.tld:apache /home/web/domain.tld/
chmod -v 2550 /home/web/domain.tld
chmod -v 2750 /home/web/domain.tld/www
chmod -v 2570 /home/web/domain.tld/www/log
chmod -v 2750 /home/web/domain.tld/www/public_html- Virtualhost-file erstellen:
vi /etc/httpd/vhosts.d/domain.tld
- Apache Neu starten:
/etc/init.d/httpd restart
Fehlersuche
Internals Server Error
Wahrscheinlich stimmen die Rechte des Wrappers oder des Verzeichnisses in dem der Wrapper liegt nicht. Prüfen Sie die suEXEC Logdatei (/var/log/httpd/suexec.log) sowie die Apache Error Logdatei (/var/log/httpd/error.log).Nun installieren wir den Datenbankserver
yum install mysql mysqld chkconfig mysqld on
Die default Werte von /etc/my.cnf sind hier schon passend.
Möchte man UTF8 verwenden muss man evtl. unter dem Punkt client noch folgendes anfügen:
default-character-set = utf8
und unter: mysqld
init-connect="SET NAMES utf8"
FTP-Server
Als letztes installieren wir den FTP-Server:yum install ftp proftpd chkconfig proftpd on
Nun noch in: /etc/proftpd.conf für jede Homepage ein Verzeichnis: /home/web/domain.tld erstellen:
<Directory /home/ftp/upload> </Directory>
Und dein Webserver läuft!
Erweiterungen
Quota
Ob Quota auf filesystem-ebene heute noch Sinn macht, muss jeder für sich entscheiden. In der Regel wird man das Quota ohnehin zusätzlich noch in den Software-Komponenten (ftp-server, mailserver, usw.) konfigurieren.So installieren wir das File System Quota:
Installieren:
yum install quota
Initialisieren:
Zuerst muss man bei jeder Partition, für die man quota Einsetzen will in der /etc/fstab bei den Options: "usrquota,grpquota" angefügt werden, z.B.:
defaults,usrquota,grpquota
Danach die Partition remounten, z.B.:
mount -o remount /home
Nun Initialisert man noch das Quota-File:
quotacheck -cug /home quotacheck -avug
Setzen kann man das Quota dann mit:
edquota username
Verwaltung / Administration
Neue Domain erstellen automatisiert
Da es nun ziemlich mühsam wäre bei jeder neuen Domain diese kompletten obigen Schritte durch zu gehen, bietet es sich an ein entsprechend Script zu erstellen, dass dies automatisiert; dieses kann entweder unter /root/bin oder etwa /usr/local/bin liegen.Dazu können wir gleich das Verzeichnis: /etc/skel/ benutzen; denn sobald ein neuer user im System angelegt wird, wird der Inhalt dieses Verzeichnisses automatisch ins User Verzeichnis kopiert.
Zuerst legt man also die benötigte Verzeichnisstruktur für einen "WebUser" in diesem Verzeichnis an:
mkdir -pv /etc/skell/www/{log,private,public_html}
touch /etc/skell/.bash_history /etc/skell/.viminfoZu beachten ist hier, dass auch die Dateien angelegt werden müssen, die normalerweise beim ersten login automatisch erzeugt würde (z.B. .bash_history), da der WebUser auf der ersten ebene seines HOME-Verzeichnisses keine Schreibberechtigung haben wird.
Weiter werden nun jeweils "template-files" angelegt um einen VirtualHost zu erzeugen, eine Datenbank aufzusetzen und natürlich der php-fcgi wrapper:
/etc/skel/vhost.template
################################################################################
# Virtualhosts File for Domain domain.tld
################################################################################
#========================== PROD domain =======================================
<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /home/web/domain.tld/www/public_html
CustomLog /home/web/domain.tld/www/log/combined.log combined
CustomLog /home/web/domain.tld/www/log/access_log common
ErrorLog /home/web/domain.tld/www/log/error_log
SuexecUserGroup domain.tld users
<Directory /home/web/domain.tld/www/>
AllowOverride All
Options +SymLinksIfOwnerMatch +Includes +ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /var/www/fcgi/domain.tld/php5-fcgi.sh .php
</Directory>
</VirtualHost>
#========================== SSL ===============================================
#<VirtualHost *:443>
# ServerName domain.tld
# ServerAlias www.domain.tld
# DocumentRoot /home/web/domain.tld/www/public_html
# CustomLog /home/web/domain.tld/www/log/combined.log combined
# CustomLog /home/web/domain.tld/www/log/access_log common
# ErrorLog /home/web/domain.tld/www/log/error_log
# SuexecUserGroup domain.tld users
#
# <Directory /home/web/domain.tld/www/>
# AllowOverride All
# Options +SymLinksIfOwnerMatch +Includes +ExecCGI
# AddHandler fcgid-script .php
# FCGIWrapper /var/www/fcgi/domain.tld/php5-fcgi.sh .php
# </Directory>
#</VirtualHost>/etc/skel/db.sql.template
CREATE DATABASE domain_tld; GRANT ALL PRIVILEGES ON `domain_tld`.* TO 'domain.tld'@'%' IDENTIFIED BY 'setpass'; FLUSH PRIVILEGES;
/etc/skel/php5-fcgi.sh.template
#!/bin/sh PHPRC=/home/web/conf.generic/ export PHPRC exec /var/www/fcgi/php5-fcgi
Nun können wir das domainadd/domaindel Script erstellen; die vorhin erzeugten template files werden von diesem script dann entsprechend weiter verarbeitet:
domainadd
#!/bin/sh
################################################################################
# domainadd / domaindel
# CREATED BY: Steven Varco
#
# Adds or deletes a domain.
# The directory structure of the domain can be configured in /etc/skel
# For the creation of virtualhosts and DB you can create the follwing templates
# in /etc/skel:
# - vhost.template
# - db.sql.template
# - php5-fcgi.sh.template
# - www/public_html/index.html
# in these files the string "domain.tld" (or "domain_tld" for DB Names) will be
# replaced with the actual domain.
# In the DB template, the string "setpass" will be replaced with a random generated
# password.
#
# HISTORY:
#==============================================================================
# 29.11.2011 Steven Varco - Created Script
################################################################################
#========================== Configuration =====================================
DOMAIN=$1
DOMAINBASEDIR="/home/web"
DOMAINDIR="$DOMAINBASEDIR/$DOMAIN"
PATH_VHOSTS=/etc/httpd/vhosts.d
PATH_FCGI=/var/www/fcgi
GROUPID=100
WEBGROUP="apache"
USERGROUP="users"
PASSWORD=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c16)
#VERB="-v"
#========================== Creation ==========================================
if [ -z "$DOMAIN" ]; then
echo "usage: domainadd <domain.tld>"
exit 1
fi
if [ "$DOMAIN" != "" ]
then
if [ ! -d $DOMAINDIR ]
then
echo "creating domain: $DOMAIN in: $DOMAINDIR"
# User creation and permissions
useradd -b $DOMAINBASEDIR -m $DOMAIN -g $GROUPID
# If /etc/skel is not configured properly, create needed directories
mkdir -p $VERB $DOMAINDIR/www/{log,private,public_html}
chown -R $VERB $DOMAIN:$WEBGROUP $DOMAINDIR
chmod $VERB 2550 $DOMAINDIR
chmod $VERB 2570 $DOMAINDIR/*/log |grep changed
find $DOMAINDIR/*/{private,public_html}/ -type d |xargs chmod $VERB 2750 |grep changed
find $DOMAINDIR/*/{private,public_html}/ -type f |xargs chmod $VERB 640 |grep changed
if [ -f "$DOMAINDIR/www/public_html/index.html" ]; then
perl -p -i -e "~s|domain\.tld|$DOMAIN|" $DOMAINDIR/www/public_html/index.html
fi
# FCGI stuff
mkdir $VERB $PATH_FCGI/$DOMAIN
chown $VERB $DOMAIN:$USERGROUP $PATH_FCGI/$DOMAIN/
if [ -f "$DOMAINDIR/php5-fcgi.sh.template" ]; then
mv $VERB $DOMAINDIR/php5-fcgi.sh.template $PATH_FCGI/$DOMAIN/php5-fcgi.sh
chown $VERB $DOMAIN:$USERGROUP $PATH_FCGI/$DOMAIN/php5-fcgi.sh
fi
# VirtualHost creation
if [ -f "$DOMAINDIR/vhost.template" ]; then
perl -p -i -e "~s|domain.tld|$DOMAIN|" $DOMAINDIR/vhost.template
mv $VERB $DOMAINDIR/vhost.template $PATH_VHOSTS/020-$DOMAIN
chown $VERB root:root $PATH_VHOSTS/020-$DOMAIN
fi
# DB creation
if [ -f "$DOMAINDIR/db.sql.template" ]; then
DBNAME=${DOMAIN//./_}
perl -p -i -e "~s|domain\.tld|$DOMAIN|" $DOMAINDIR/db.sql.template
perl -p -i -e "~s|domain_tld|$DBNAME|" $DOMAINDIR/db.sql.template
perl -p -i -e "~s|setpass|$PASSWORD|" $DOMAINDIR/db.sql.template
fi
# Activating
if [ -f "$PATH_VHOSTS/020-$DOMAIN" ]; then
#/etc/init.d/httpd configtest && /etc/init.d/httpd reload
echo "to activate changes, execute: /etc/init.d/httpd configtest && /etc/init.d/httpd reload"
fi
if [ -f "$DOMAINDIR/db.sql.template" ]; then
echo "To create a corresponding DB, execute: mysql -uroot -p < /home/web/$DOMAIN/db.sql.template && rm -v /home/web/$DOMAIN/db.sql.template"
fi
else
echo "Domain already exists!"
exit 1
fi
else
echo "No domain given!"
exit 1
fidomaindel
#!/bin/sh
DOMAIN=$1
DOMAINBASEDIR="/home/web"
DOMAINDIR="$DOMAINBASEDIR/$DOMAIN"
GROUPID=100
WEBGROUP="apache"
USERGROUP="users"
PASSWORD=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32)
#VERB="-v"
if [ -z "$DOMAIN" ]; then
echo "usage: domainadd <domain.tld>"
exit 1
fi
if [ "$DOMAIN" != "" ]
then
if [ -d $DOMAINDIR ]
then
rm -f $VERB /etc/httpd/vhosts.d/020-$DOMAIN
userdel -r $VERB $DOMAIN
rm -rf $VERB /var/www/fcgi/$DOMAIN
echo "to activate changes, execute: /etc/init.d/httpd configtest && /etc/init.d/httpd reload"
echo "NOTE: Any user databases and the corresponding DB user have to be removed manually!"
else
echo "Domain does not exist!"
exit 1
fi
else
echo "No domain given!"
exit 1
fiNun lässt sich mittels:
domainadd <domain.tld>eine neue Domain erstellen.
Related Links
| Link | Beschreibung |
| Apache2.2 + PHP5 + FastCGI + suEXEC auf Debian Etch Tutorial | Sehr gute Info-Seite übe das Einrichten von php mit suEXEC und fastCGI. |
| Apache2 mit PHP5 als suExec/ Fcgid Variante | Das Hetzner wiki erklärt hier sehr gut die suExec / FCGID-Variante. |
| How To Set Up Apache2 With mod_fcgid And PHP5 On CentOS 5.2 | Hier noch ein FCGID-Guide für CentOS |
| Implementing Disk Quotas | Der RHEL/Centos Guide um quotas zu implementieren |

Neuen Kommentar posten