SysCP unter Gentoo
Inhaltsverzeichnis |
Einführung
Dies soll sein kurzes HowTo sein, wie man SysCP 1.2.13 ohne Bind9 auf einer Gentoo-Installation zum laufen bekommt. Es werden keine Erläuterungen zu den Schritten dabei sein und falls ja, ist es eine Ausnahme ;)
Desweiteren garantiere ich nicht für die Vollständigkeit oder hafte für irgendwelche Schäden.
OK? Dann nichts wie los! ;)
Installation + Einrichtung
USE-Variable anpassen
Als erstes muss man die Use-Flags in der /etc/make.conf anpassen. Hier ist meine USE-Variable:
| File: /etc/make.conf |
USE="apache2 php mysql bzip2 gd imagemagick imap jpeg perl sasl ssl unicode vhosts zlib gif ftp ffmpeg -X berkdb cli crypt curl gmp ipv6 ncurses nls pcre pdo-external pic readline reflection session spl theards xml xmlreader xmlrpc xmlwriter png cgi iconv bcmath calendar exif spell posix sqlite utf8 nptl nptlonly ctype" |
Apache 2 + PHP5
Installation
| Folgendes in der Shell als root ausführen: |
emerge -av apache php |
Konfiguration
Jetzt nachdem Apache und PHP installiert wurden, muss die /etc/apache2/httpd.conf noch ein bisschen angepasst werden.
Wenn dein Server über mehrere IP Adressen verfügt und Apache nur unter bestimmten IP Adresse erreichbar sein soll muss dies mit der Listen deklariert werden. Das Beispiel ist der httpd.conf ist ausreichend.
Dann muss noch die Email-Adresse des Serveradmins bei ServerAdmin und der Name des Server bei Servername eingetragen werden.
Nun müssen wir Apache klar machen, die vhosts von SysCP auch zu nutzen. also fügen wir am Ende der Datei
| Code: /etc/apache2/httpd.conf |
Include /etc/apache2/vhosts.conf |
ein.
Jetzt Speichern und die vhosts.conf anlegen
| Folgendes in der Shell als root ausführen: |
touch /etc/apache2/vhosts.conf |
Damit PhpMyAdmin oder SysCP auch erreichbar ist, bevor der Cronjob von SysCP zum ersten mal läuft muss eine zeile in die vhosts.conf eingetragen werden. Den Stern durch eure IP ersetzen.
| Folgendes in der Shell als root ausführen: |
echo "NameVirtualHost *:80" >> /etc/apache2/vhosts.conf rm /etc/apache2/vhosts.d/00_default_vhost.conf |
MySQL 5
emerge -av mysql
PhpMyAdmin
Installation
emerge -av phpmyadmin
Konfiguration
cd /usr/share/webapps/phpmyadmin/*/htdocs cp libraries/config.default.php ./ mv config.default.php config.inc.php
Damit PhpMyAdmin auch funktibiert müssen noch 2 Dateien angepasst werden:
config.inc.php
Die folgenden Variablen müssen angepasst werden.
$cfg['PmaAbsolutUri'] = 'http://phpmyadmin.meinedomain.de'
$cfg['Servers'][$i]['controluser'] = ''; $cfg['Servers'][$i]['controlpass'] = '';
Und jenachdem welche Anmeldemethode man bevorzugt sollte man noch $cfg['Servers'][$i]['auth_type'] anpassen.
httpd.conf
Damit PhpMyAdmin auch im Netz erreichbar ist, muss die /etc/apache2/httpd.conf nochmal angepasst werden. Über Include /etc/apache2/vhosts.conf folgenden einfügen und anpassen:
<VirtualHost *:80> ServerAlias phpmyadmin.meinedomain.de DocumentRoot "/usr/share/webapps/phpmyadmin/2.8.2/htdocs/" </VirtualHost>
Nun ist PhpMyAdmin unter http://phpmyadmin.meinedomain.de erreichbar.
Absicherung
Da bei der Installation von MySQL direkt Benutzer ohne Passwort erstellt werden stellt das einen großes Sicherheitsrisiko dar!
Wir rufen PhpMyAdmin auf und loggen uns als root ein. Passwort gibts es noch keins.
Dann rufen wir die Seite Rechte auf, wählen die 3 Benutzer mit dem Namen Jeder aus und klicken bei Die ausgewählten Benutzer löschen auf OK.
Jetzt müssen wir root noch ein Passwort zuweisen. Auf bearbeiten klicken bei Kennwort ändern Kennwort auswählen, das Kennwort eingeben und auf OK klicken. Das gleiche nochmal für den zweiten Benutzer root.
Cron Daemon
emerge vixie-cron /etc/init.d/vixie-cron start rc-update add vixie-cron default
SysCP
Anlegen der MySQL Datenbank und Benutzer
Wir loggen uns in PhpMyAdmin ein
http://img148.imageshack.us/img148/9219/phpmyadminhomein9.png
Kopie aus der SysCP Wiki:
Im Feld Neue Datenbank anlegen geben Sie den Namen an, welcher für die SysCP-Datenbank verwendet werden soll. Der Standardname ist syscp. Wenn die Datenbank erfolgreich angelegt wurde, kehren Sie auf diese Seite zurück. Klicken Sie danach auf Rechte um den Benutzer für SysCP ein zu richten.
Klicken Sie dort auf Neuen Benutzer hinzufügen und geben Sie den Benutzernamen ein. Als Host wählen Sie lokal aus. Geben Sie noch ein Kennwort ein und klicken Sie danach auf OK. Geben Sie diesem Benutzer keine globalen Rechte.
Wenn der Benutzer angelegt wurde, finden Sie sich auf der Bearbeitungsmaske des Benutzers.
Wählen Sie hier aus der Drop-Down Liste die Datenbank syscp aus und klicken Sie danach auf OK. Nun können Sie auf der folgenden Einstellungsseite alle Rechte ausser GRANT aktivieren und danach mit wieder mit OK bestätigen. Nun ist die Datenbank für SysCP vorbereitet und SysCP kann endlich konfiguriert werden.
http://img163.imageshack.us/img163/4949/phpmyadmindatabasespecificprivilegeszo0.png
Entpacken der Dateien von SysCP
Folgende Befehle in der Shell ausführen:
cd /var/www wget http://files.syscp.org/releases/tgz/syscp-1.2.13.tar.gz tar -xzvf syscp-1.2.13.tar.gz
SysCP erreichbar machen
Die /etc/apache2/httpd.conf öffnen und folgendes über Include /etc/apache2/vhosts.conf einfügen und anpassen:
<VirtualHost *:80> ServerAlias syscp.meinedomain.de DocumentRoot "/var/www/syscp" </VirtualHost>
SysCP installieren
Wir rufen http://syscp.meinedomain.de auf und tragen die Daten ein.
http://img69.imageshack.us/img69/2071/syscpinstalliv0.png
SysCP konfigurieren
Wir loggen uns bei SysCP ein und rufen die Seite Einstellungen auf. Fülle die Felder aus und korrigiere evtl. einige Einstellungen. Achte besonders auf diese (können 1:1 übernommen werden):
Documentdirectory: /var/kunden/webs/
Logfilesdirectory: /var/kunden/logs/
Apache-Config-Verzeichnis: /etc/apache2/
Apache-Config-Dateiname: vhosts.conf
Apache-Reload-Command: /etc/init.d/apache2 reload
Bind-Config-Directory: /dev/null/
Bind-Reload-Command: /bin/true
Bind-Default-Zone:
Mails-Homedir: /var/kunden/mail/
Kundenverzeichnisse erstellen
mkdir -p /var/kunden/webs/ mkdir -p /var/kunden/logs/
Webalizer
emerge -av webalizer
ProFTPD
Installation
USE="-postgres" emerge -av proftpd
Konfiguration
Jetzt muss die /etc/proftpd/proftpd.conf editiert werden. Falls sie nicht existiert mit touch anlegen. ACHTUNG: Nicht vergessen day MySQL Passwort zu ersetzen
ServerName "meinedomain.de FTP Server"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
AllowOverwrite on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayFirstChdir .message
ListOptions "-l"
DenyFilter \*.*/
Port 21
MaxInstances 30
# Set the user and group that the server normally runs at.
User nobody
Group nogroup
<Directory /*>
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask 022 022
# Normally, we want files to be overwriteable.
AllowOverwrite on
</Directory>
DefaultRoot ~
RequireValidShell off
SQLAuthTypes Crypt Plaintext
SQLAuthenticate users* groups*
SQLConnectInfo syscp@localhost syscp <MYSQL_PASSWORT>
SQLUserInfo ftp_users username password uid gid homedir shell
SQLGroupInfo ftp_groups groupname gid members
SQLUserWhereClause "login_enabled = 'y'"
SQLLog PASS login
SQLNamedQuery login UPDATE "last_login=now(), login_count=login_count+1 WHERE username='%u'" ftp_users
SQLLog RETR download
SQLNamedQuery download UPDATE "down_count=down_count+1, down_bytes=down_bytes+%b WHERE username='%u'" ftp_users
SQLLog STOR upload
SQLNamedQuery upload UPDATE "up_count=up_count+1, up_bytes=up_bytes+%b WHERE username='%u'" ftp_users
TLS Betrieb
Du kannst deinen Kunden auch verschlüsselten FTP-Transfer anbieten indem du
penssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/proftpd.cert.pem -keyout /etc/ssl/certs/proftpd.key.pem
ausführst und folgendes der proftpd.conf hinzufügst:
# Uncomment this if you would use TLS module: TLSEngine on TLSLog /var/log/ftp_tls.log TLSProtocol SSLv23 TLSOptions NoCertRequest TLSRSACertificateFile /etc/ssl/certs/proftpd.cert.pem TLSRSACertificateKeyFile /etc/ssl/certs/proftpd.key.pem TLSVerifyClient off # Uncomment the following line to force tls-login #TLSRequired on
Postfix
cyrus-sasl
emerge -av cyrus-sasl
Konfiguration
Es muss nun die smtpd.conf editiert werden, allerdings gibt es 2 davon und ich weiß nicht welche endgültig benutzt wird. Also editieren wir beide ;)
/etc/sasl2/smtpd.conf /etc/postfix/sasl/smtpd.conf
pwcheck_method: auxprop auxprop_plugin: sql sql_engine: mysql sql_hostnames: localhost sql_user: syscp sql_passwd: <SYSCP_MYSQL_PASSWD> sql_database: syscp sql_select: select password from mail_users where username='%u@%r' mech_list: login plain
Nicht vergessen <SYSCP_MYSQL_PASSWD> zu sersetzen!
Postfix
emerge postfix -va mkdir -p /etc/postfix/sasl mkdir -p /var/spool/postfix/etc/pam.d mkdir -p /var/spool/postfix/var/run/mysqld groupadd -g 2000 vmail useradd -u 2000 -g vmail vmail mkdir -p /var/kunden/mail/ chown -R vmail:vmail /var/kunden/mail/
Konfiguration
ACHTUNG: Evtl. das <MYSQL_PASSWORT> ersetzen!
/etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Gentoo/GNU) biff = no queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/lib/postfix mail_spool_directory = /var/spool/mail append_dot_mydomain = no myhostname = <MEINHOSTNAME> mydomain = <MEINEDOMAIN.DE> mydestination = $myhostname $mydomain localhost localhost.$mydomain mynetworks = 127.0.0.0/8 alias_maps = $alias_database inet_interfaces = all mail_owner = postfix readme_directory = /usr/share/doc/postfix-2.1.5-r1/readme alias_database = hash:/etc/mail/aliases local_destination_concurrency_limit = 2 default_destination_concurrency_limit = 10 alias_maps = hash:/etc/mail/aliases sendmail_path = /usr/sbin/sendmail newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /etc/postfix smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination smtpd_use_tls = yes smtpd_tls_key_file = /etc/postfix/newreq.pem smtpd_tls_cert_file = /etc/postfix/newcert.pem smtpd_tls_CAfile = /etc/postfix/cacert.pem smtpd_tls_loglevel = 3 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom virtual_mailbox_base = /var/kunden/mail/ virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf virtual_alias_domains = virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf virtual_uid_maps = static:2000 virtual_gid_maps = static:2000 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_security_options = noanonymous virtual_transport = virtual
/etc/postfix/mysql-virtual_alias_maps.cf
user = syscp password = <MYSQL_PASSWORT> dbname = syscp table = mail_virtual select_field = destination where_field = email additional_conditions = and destination <> '' and destination <> ' ' hosts = localhost
/etc/postfix/mysql-virtual_mailbox_domains.cf
user = syscp password = <MYSQL_PASSWORT> dbname = syscp table = panel_domains select_field = domain where_field = domain additional_conditions = and isemaildomain = '1' hosts = localhost
/etc/postfix/mysql-virtual_mailbox_maps.cf
user = syscp password = <MYSQL_PASSWORT> dbname = syscp table = mail_users select_field = maildir where_field = email hosts = localhost
Fehlerbehebung
Falls in /var/log/messages eine fehlermeldung wie diese stehen sollte:
warning: /usr/lib/postfix/local: bad command startup -- throttlingführe
newaliasesaus.
courier-imap
Installation
emerge courier-imap
Konfiguration
/etc/courier-imap/authdaemonrc
authmodulelist="authmysql authpam" authmodulelistorig="authcustom authcram authuserdb authldap authmysql authpam" daemons=5 version="" authdaemonvar=/var/lib/courier-imap/authdaemon
/etc/courier-imap/authdaemond.conf
AUTHDAEMOND="authdaemond.mysql"
/etc/courier-imap/authmysqlrc
<MYSQL_PASSWORT> ersetzten!
MYSQL_SERVER localhost MYSQL_USERNAME syscp MYSQL_PASSWORD <MYSQL_PASSWORT> MYSQL_PORT 3136 MYSQL_DATABASE syscp MYSQL_USER_TABLE mail_users MYSQL_CRYPT_PWFIELD password_enc MYSQL_UID_FIELD uid MYSQL_GID_FIELD gid MYSQL_LOGIN_FIELD username MYSQL_HOME_FIELD homedir MYSQL_MAILDIR_FIELD maildir
SSL-Zertifikate für POP3 / IMAP erstellen
mkpop3dcert mkimapdcert
Abschluss
SysCP Cronjob eintragen
touch /etc/cron.d/syscp
Dann die Datei öffnen und folgendes einfügen:
# # Set PATH, otherwise restart-scripts won't find start-stop-daemon # PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # # Regular cron jobs for the syscp package # */5 * * * * root /usr/bin/php /var/www/syscp/scripts/cronscript.php
Daemon starten und in den runlevel eintragen
/etc/init.d/apache2 restart /etc/init.d/mysql restart /etc/init.d/proftpd restart /etc/init.d/saslauthd restart /etc/init.d/postfix restart /etc/init.d/authdaemond restart /etc/init.d/courier-imapd restart /etc/init.d/courier-pop3d restart /etc/init.d/courier-imapd-ssl restart /etc/init.d/courier-pop3d-ssl restart
rc-update add apache2 default rc-update add mysql default rc-update add proftpd default rc-update add postfix default rc-update add saslauthd default rc-update add authdaemond default rc-update add courier-imapd default rc-update add courier-pop3d default rc-update add courier-imapd-ssl default rc-update add courier-pop3d-ssl default
Persönliche Vermerke
Dieses Tutorial enthält einige Ausschnitte aus dem englischen HowTo der Gentoo Wiki und der SysCP Dokumentation