diff --git a/docs/INSTALL.txt b/docs/INSTALL.txt new file mode 100644 index 0000000000000000000000000000000000000000..5e49c4a4c89f714d8f0e119cf25faa72e40a98b9 --- /dev/null +++ b/docs/INSTALL.txt @@ -0,0 +1,6 @@ + +The installation instructions for ISPConfig can be found here: + +http://www.ispconfig.org/page/en/documentation.html + + diff --git a/docs/INSTALL_CENTOS_5.2.txt b/docs/INSTALL_CENTOS_5.2.txt deleted file mode 100644 index 7cc464b0c742e86715163b496133b98def5c80f3..0000000000000000000000000000000000000000 --- a/docs/INSTALL_CENTOS_5.2.txt +++ /dev/null @@ -1,249 +0,0 @@ - - -WARNING: Support for CentOS is experimental only. For production systems better use Debian or Ubuntu. - - -Installation ------------ - -It is recommended to use a clean (fresh) CentOS 5.2 install. Then follow the steps below to setup your server with ISPConfig 3: - -Installation of some basic requirements: - -rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* -yum update -yum groupinstall 'Development Tools' -yum groupinstall 'Development Libraries' - -You should disable selinux now, as some programs will not start when selinux is enabled: - -system-config-securitylevel-tui - -then reboot the server. - - -1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin with the following command line (on one line!): - -yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpMyAdmin pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel postfix - -rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt - -cd /tmp -wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm -rpm -i rpmforge-release-0.3.6-1.el5.rf.i386.rpm -yum update - -yum install getmail - -useradd -m -s /bin/bash compileuser -passwd compileuser - -visudo - -## Allow root to run any commands anywhere -root ALL=(ALL) ALL -compileuser ALL=(ALL) ALL - - -su compileuser - -mkdir $HOME/rpm -mkdir $HOME/rpm/SOURCES -mkdir $HOME/rpm/SPECS -mkdir $HOME/rpm/BUILD -mkdir $HOME/rpm/SRPMS -mkdir $HOME/rpm/RPMS -mkdir $HOME/rpm/RPMS/i386 -mkdir $HOME/rpm/RPMS/x86_64 - -echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros - - -wget http://prdownloads.sourceforge.net/courier/courier-authlib-0.61.0.tar.bz2 -wget http://prdownloads.sourceforge.net/courier/courier-imap-4.4.1.tar.bz2 -wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2 - -sudo rpmbuild -ta courier-authlib-0.61.0.tar.bz2 - -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-0.61.0-1.i386.rpm -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-mysql-0.61.0-1.i386.rpm -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-devel-0.61.0-1.i386.rpm - -rpmbuild -ta courier-imap-4.4.1.tar.bz2 - -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-imap-4.4.1-1.i386.rpm - -sudo rpmbuild -ta maildrop-2.0.4.tar.bz2 - -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/maildrop-2.0.4-1.i386.rpm - -exit - -chkconfig --levels 235 mysqld on -/etc/init.d/mysqld start - -chkconfig --levels 235 httpd on -/etc/init.d/httpd start - -chkconfig --levels 235 courier-authlib on -/etc/init.d/courier-authlib start - -chkconfig --levels 235 sendmail off -chkconfig --levels 235 postfix on -chkconfig --levels 235 saslauthd on -/etc/init.d/sendmail stop -/etc/init.d/postfix start -/etc/init.d/saslauthd start - -chkconfig --levels 235 courier-imap on -/etc/init.d/courier-authlib restart -/etc/init.d/courier-imap restart - - -Set the mysql database password: - -mysqladmin -u root password yourrootsqlpassword -mysqladmin -h ispconfig.local -u root password yourrootsqlpassword - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -yum install amavisd-new spamassassin clamav clamd clamav-data clamav-server clamav-update unzip bzip2 unrar - -chkconfig --levels 235 amavisd on -chkconfig --levels 235 clamd on -/usr/bin/freshclam -/etc/init.d/amavisd start -/etc/init.d/clamd start - -If you use the amavisd from rpmforge and not the one from centos, you will have to do these additional steps: - -add the following line in /etc/sysconfig/amavisd: - -CONFIG_FILE="/etc/amavisd/amavisd.conf - -run: - -mkdir /var/run/amavisd /var/spool/amavisd /var/spool/amavisd/tmp /var/spool/amavisd/db -chown amavis /var/run/amavisd /var/spool/amavisd /var/spool/amavisd/tmp /var/spool/amavisd/db -yum install perl-DBD-mysql - - -3) Install apache, PHP5 and phpmyadmin (1 line!): - -yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel phpmyadmin - - -4) Install pure-ftpd and quota - -cd /tmp -wget http://centos.karan.org/el5/extras/testing/i386/RPMS/pure-ftpd-1.0.21-15.el5.kb.i386.rpm -rpm -i pure-ftpd-1.0.21-15.el5.kb.i386.rpm - -yum install quota - -chkconfig --levels 235 pure-ftpd on -/etc/init.d/pure-ftpd start - -5) Install mydns - -wget http://mydns.bboy.net/download/mydns-mysql-1.1.0-1.i386.rpm -rpm -ivh mydns-mysql-1.1.0-1.i386.rpm - -chkconfig --levels 235 mydns on - -6) Install vlogger and webalizer - -yum install webalizer perl-DateTime-Format-HTTP perl-DateTime-Format-Builder - -cd /tmp -wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz -tar xvfz vlogger-1.3.tar.gz -mv vlogger-1.3/vlogger /usr/sbin/ -rm -rf vlogger* - -Edit the file /etc/sudoers - -vi /etc/sudoers - -and change the line: - -Defaults requiretty - -to: - -# Defaults requiretty - -7) Install ISPConfig 3 - -Disable the firewall: - -system-config-securitylevel-tui - -There are two possile scenarios, but not both: -7.1) Install the latest released version -7.2) Install directly from SVN - -7.1) Installation of beta 3 from tar.gz - - cd /tmp - wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz - tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz - cd ispconfig3_install/install/ - -7.2) Installation from SVN - - yum install subversion - cd /tmp - svn export svn://svn.ispconfig.org/ispconfig3/trunk/ - cd trunk/install - - -7.1+7.2) Now proceed with the ISPConfig installation. - -Now start the installation process by executing: - -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -yum install squirrelmail - - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 4.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - -Installing Jailkit: - -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz -tar xvfz jailkit-2.5.tar.gz -cd jailkit-2.5 -./configure -make -make install -rm -rf jailkit-2.5* diff --git a/docs/INSTALL_CENTOS_5.4_dovecot_bind.txt b/docs/INSTALL_CENTOS_5.4_dovecot_bind.txt deleted file mode 100644 index f3b498266ecf88aafae5d4479e7e87b6f57d0bd9..0000000000000000000000000000000000000000 --- a/docs/INSTALL_CENTOS_5.4_dovecot_bind.txt +++ /dev/null @@ -1,237 +0,0 @@ - - -Installation ------------ - -It is recommended to use a clean (fresh) CentOS 5.4 install. Then follow the steps below to setup your server with ISPConfig 3: - -Installation of some basic requirements: - -rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* - -enable the contrib and centosplus repositories. - -vi /etc/yum.repos.d/CentOS-Base.repo - -1. Edit the file /etc/yum.repos.d/CentOS-Base.repo and edit the lines below. - -[base] -exclude=postfix - -[update] -exclude=postfix - -[centosplus] -enabled=1 -includepkgs=postfix - -[contrib] -enabled=1 - -rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt - -cd /tmp -wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm -rpm -i rpmforge-release-0.5.1-1.el5.rf.i386.rpm -yum update - -You should disable selinux now, as some programs will not start when selinux is enabled: - -system-config-securitylevel-tui - -then reboot the server. - -Then remove the postfix without mysql support - -yum remove postfix - -1) Install Postfix fron centosplus with mysql support, Dovecot, MySQL, phpMyAdmin with the following command line (on one line!): - -yum install ntp httpd mysql-server php php-mysql php-mbstring phpMyAdmin postfix getmail - -For 32Bit systems: - -rpm -i http://dl.atrpms.net/all/dovecot-1.2.11-3_108.el5.i386.rpm -rpm -i http://dl.atrpms.net/all/dovecot-sieve-0.1.15-4.el5.i386.rpm - -For 64Bit Systems: - -rpm -ivh http://dl.atrpms.net/all/dovecot-1.2.11-3_108.el5.x86_64.rpm -rpm -ivh http://dl.atrpms.net/all/dovecot-sieve-0.1.15-4.el5.x86_64.rpm - - -chkconfig --levels 235 mysqld on -/etc/init.d/mysqld start - -chkconfig --levels 235 httpd on -/etc/init.d/httpd start - -chkconfig --levels 235 dovecot on -/etc/init.d/dovecot start - -chkconfig --levels 235 sendmail off -chkconfig --levels 235 postfix on -/etc/init.d/sendmail stop -/etc/init.d/postfix start - - -Set the mysql database password: - -/usr/bin/mysql_secure_installation - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -yum install amavisd-new spamassassin clamav clamd unzip bzip2 unrar - -sa-update -chkconfig --levels 235 amavisd on -chkconfig --levels 235 clamd on -/usr/bin/freshclam -/etc/init.d/amavisd start -/etc/init.d/clamd start - -If you use the amavisd from rpmforge (as we do in this guide) and not the one from centos, you will have to do these additional steps: - -add the following line in /etc/sysconfig/amavisd: - -CONFIG_FILE="/etc/amavisd/amavisd.conf - -run: - -mkdir /var/run/amavisd /var/spool/amavisd /var/spool/amavisd/tmp /var/spool/amavisd/db -chown amavis /var/run/amavisd /var/spool/amavisd /var/spool/amavisd/tmp /var/spool/amavisd/db -ln -s /var/run/clamav/clamd.sock /var/spool/amavisd/clamd.sock -yum install perl-DBD-mysql - - -3) Install apache, PHP5 and phpmyadmin (1 line!): - -yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-mbstring php-mcrypt php-mhash php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel phpmyadmin - - -4) Install pure-ftpd and quota - -yum install pure-ftpd quota - -chkconfig --levels 235 pure-ftpd on -/etc/init.d/pure-ftpd start - -5) Install bind dns server - -yum install bind-chroot - -chmod 755 /var/named/ -chmod 775 /var/named/chroot/ -chmod 775 /var/named/chroot/var/ -chmod 775 /var/named/chroot/var/named/ -chmod 775 /var/named/chroot/var/run/ -chmod 777 /var/named/chroot/var/run/named/ -cd /var/named/chroot/var/named/ -ln -s ../../ chroot -cp /usr/share/doc/bind-9.3.6/sample/var/named/named.local /var/named/chroot/var/named/named.local -cp /usr/share/doc/bind-9.3.6/sample/var/named/named.root /var/named/chroot/var/named/named.root -touch /var/named/chroot/etc/named.conf -touch /var/named/chroot/etc/named.conf.local - -vi /var/named/chroot/etc/named.conf - --------------------------------------------------------------------------------------------------- -// -// named.conf -// -// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS -// server as a caching only nameserver (as a localhost DNS resolver only). -// -// See /usr/share/doc/bind*/sample/ for example named configuration files. -// - -options { - listen-on port 53 { 127.0.0.1; }; - listen-on-v6 port 53 { ::1; }; - directory "/var/named/chroot/var/named"; - dump-file "/var/named/chroot/var/named/data/cache_dump.db"; - statistics-file "/var/named/chroot/var/named/data/named_stats.txt"; - memstatistics-file "/var/named/chroot/var/named/data/named_mem_stats.txt"; - allow-query { localhost; }; - recursion yes; -}; - -logging { - channel default_debug { - file "data/named.run"; - severity dynamic; - }; -}; - -zone "." IN { - type hint; - file "named.root"; -}; - -include "/var/named/chroot/etc/named.conf.local"; --------------------------------------------------------------------------------------------------- - -chkconfig --levels 235 named on -/etc/init.d/named start - -6) Install vlogger dependencies and webalizer - -yum install webalizer perl-DateTime-Format-HTTP perl-DateTime-Format-Builder - -Installing Jailkit: - -yum install gcc -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz -tar xvfz jailkit-2.11.tar.gz -cd jailkit-2.11 -./configure -make -make install -rm -rf jailkit-2.11* - -Edit the file /etc/sudoers - -vi /etc/sudoers - -and change the line: - -Defaults requiretty - -to: - -# Defaults requiretty - - -7) Install ISPConfig 3 - - -cd /tmp -wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.tar.gz -tar xvfz ISPConfig-3.0.2.tar.gz -cd ispconfig3_install/install/ - -Now start the installation process by executing: - -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -yum install squirrelmail - - - diff --git a/docs/INSTALL_DEBIAN_4.0.txt b/docs/INSTALL_DEBIAN_4.0.txt deleted file mode 100644 index 5fd163aaa1fd1dc8d8656feadfd2d993090ed9ae..0000000000000000000000000000000000000000 --- a/docs/INSTALL_DEBIAN_4.0.txt +++ /dev/null @@ -1,214 +0,0 @@ -Installation ------------ - -It is recommended to use a clean (fresh) Debian etch install where you just selected "Standard System" as the package selection during setup. Then follow the steps below to setup your server with ISPConfig 3: - -assign hostname (for example ispconfig) - -echo ispconfig.example.com > /etc/hostname - -vi /etc/hosts -and add line similar but appropriate: -127.0.0.1 localhost.localdomain localhost -192.168.0.100 ispconfig.example.com ispconfig - -1) Add the debian volatile repository to the apt sources list: - -vi /etc/apt/sources.list - -and insert the line: - -deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free - -Then execute these commands to insert the Debian voltaile gpg key to the apt keyring: - -cd /tmp -apt-get install wget -wget http://www.debian.org/volatile/etch-volatile.asc -apt-key add etch-volatile.asc -rm -f etch-volatile.asc - -Now we update the package list by executing: - -apt-get update - -Now Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin, ntpdate, rkhunter, binutils with the following command line (on one line!): - -apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 ntp ntpdate rkhunter binutils sudo - -Answer the questions from the package manager as follows. - -Create directories for web-based administration ? <-- No -General type of configuration? <-- Internet site -Mail name? <-- server1.mydomain.tld - SSL certificate required <-- Ok - -...use your own domain name of course ;) - -Edit the file /etc/mysql/my.cnf - -vi /etc/mysql/my.cnf - -and comment out the line - -bind-address = 127.0.0.1 - -then restart mysql - -/etc/init.d/mysql restart - -Set the mysql database password: - -mysqladmin -u root password yourrootsqlpassword -mysqladmin -h ispconfig.local -u root password yourrootsqlpassword - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl - -3) Install apache, PHP5 and phpmyadmin (1 line!): - -apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid - -Then run the following to enable the Apache modules: - -a2enmod suexec -a2enmod rewrite -a2enmod ssl -a2enmod actions -a2enmod include - -4) Install pure-ftpd and quota - -apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool - -Edit the file /etc/default/pure-ftpd-common - -vi /etc/default/pure-ftpd-common - -and change the start mode from inetd to standalone. - -Edit the file /etc/inetd.conf - -vi /etc/inetd.conf - -and comment out the line for the FTP service, so it looks like this: - -# ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper - -Then execute: - -/etc/init.d/openbsd-inetd restart - - -5) Install mydns - -apt-get install mydns-mysql - -What is the hostname of the machine on which the database will run? -> localhost -What is the database name for the MyDNS database? -> mydns -Would you like to set up the database and tables automatically? -> yes -What is the username of the MySQL administrator? -> root -Enter the MySQL administrator password -> yourrootsqlpassword -Confirm this password -> yourrootsqlpassword -What is the MyDNS username? -> mydns -What is the MyDNS user password? -> mydnspassword - -The mydns installer is a bit tricky, you will have to select to create a new database for mydns and use a existing mysql user, e.g. the mysql root user. This database is only to fullfill the requirements for the debian pacakge during installation and will not be used by ISPConfig later. ISPConfig will automatically change the mydns configuration files to use the ISPConfig database. - - -6) Install vlogger and webalizer - -apt-get install vlogger webalizer - -7) Install Jailkit (optional, only needed if you want to use chrroting for SSH users) - -apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.7.tar.gz -tar xvfz jailkit-2.7.tar.gz -cd jailkit-2.7 -./debian/rules binary -cd .. -dpkg -i jailkit_2.7-1_i386.deb -rm -rf jailkit-2.7* - -8) Install fail2ban (optional but recomended, because the monitor tries to show the log) -More info at: http://www.howtoforge.com/fail2ban_debian_etch - -apt-get install fail2ban - - -9) Install ISPConfig 3 - -There are two possile scenarios, but not both: -9.1) Install the latest released version -9.2) Install directly from SVN - -9.1) Installation of last version from tar.gz - - cd /tmp - wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz - tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz - cd ispconfig3_install/install/ - -9.2) Installation from SVN - - apt-get install subversion - cd /tmp - svn export svn://svn.ispconfig.org/ispconfig3/trunk/ - cd trunk/install - - -9.1+9.2) Now proceed with the ISPConfig installation. - -Now start the installation process by executing: - -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -apt-get install squirrelmail -ln -s /usr/share/squirrelmail/ /var/www/webmail - -Access squirrelmail: - -http://192.168.0.100/webmail - - -To configure squirrelmail, run: - -/usr/sbin/squirrelmail-configure - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 4.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - -Optional packages recommended: - -denyhosts - a utility to help sys admins thwart ssh crackers -rsync - fast remote file copy program (for backup) diff --git a/docs/INSTALL_DEBIAN_5.0_courier_mydns.txt b/docs/INSTALL_DEBIAN_5.0_courier_mydns.txt deleted file mode 100644 index e75ab3a348efdefa74467baf4e6f80e0d4054a27..0000000000000000000000000000000000000000 --- a/docs/INSTALL_DEBIAN_5.0_courier_mydns.txt +++ /dev/null @@ -1,370 +0,0 @@ -Installation -------------- - -# It is recommended to use a clean (fresh) Debian Lenny install where you just selected "Standard System" at the package selection during -# setup (tasksel). Then follow the steps below to setup your server with ISPConfig 3. In this guide "vi" is used as text editor, but -# you can use whatever you prefer. You should be root for doing all of this. - - -# Check we have Fully Qualified Domain Name - -/bin/hostname - -# it should return something like "ispconfig.example.com" -# if not, then we assign a hostname (for example ispconfig): - -echo ispconfig.example.com > /etc/hostname - -vi /etc/hosts - -# and add lines similar but appropriate: - -127.0.0.1 localhost.localdomain localhost -192.168.0.100 ispconfig.example.com ispconfig - -# Run: - -/etc/init.d/hostname.sh - -# enable the Debian Volatile repository to get an updated ClamAV version - -echo "deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free" >> /etc/apt/sources.list.d/volatile.list -apt-get update - -# Some optional choices - -opt0.1) Optionally install SSH-server to get remote shell - -apt-get install openssh-server - -opt0.2) Optionally, if you are not running inside a virtual machine, you can set server clocksync via NTP. Virtual guests get this from the host. - -apt-get -y install ntp ntpdate - -opt0.3) Optionally if you want vi editor improvement - -apt-get -y install vim-nox - - -# Next is the real deal - -1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin, rkhunter, binutils with the following command line (on one line!): - -apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 rkhunter binutils - -# Answer the questions from the package manager as follows. - -Create directories for web-based administration ? <-- No -General type of configuration? <-- Internet site -Mail name? <-- server1.mydomain.tld - SSL certificate required <-- Ok - -# ...use your own domain name of course ;) - - - -# Edit the file /etc/mysql/my.cnf - -vi /etc/mysql/my.cnf - -# and change the line: - -bind-address = 127.0.0.1 - -to: - -#bind-address = 127.0.0.1 - -# then restart mysql - -/etc/init.d/mysql restart - -2) Install Amavisd-new, Spamassassin and ClamAV (1 line!): - -apt-get -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl sudo - -# During the installation, the SSL certificates for IMAP-SSL and POP3-SSL are created with the hostname localhost. To change this to the correct hostname (server1.example.com in this tutorial), delete the certificates... - -cd /etc/courier -rm -f /etc/courier/imapd.pem -rm -f /etc/courier/pop3d.pem - -# ... and modify the following two files; replace CN=localhost with CN=server1.example.com (you can also modify the other values, if necessary): - -vi /etc/courier/imapd.cnf - -[...] -CN=server1.example.com -[...] - -vi /etc/courier/pop3d.cnf - -[...] -CN=server1.example.com -[...] - -# Then recreate the certificates... - -mkimapdcert -mkpop3dcert - -# ... and restart Courier-IMAP-SSL and Courier-POP3-SSL: - -/etc/init.d/courier-imap-ssl restart -/etc/init.d/courier-pop-ssl restart - - -3) Install Apache, PHP5, PhpMyAdmin, better fastCGI, suexec, Pear and mcrypt (1 line!): - -apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby - - -# When phpMyAdmin is asking wether to configure itself automatically, select "Apache2" - -# Then run the following to enable the Apache modules suexec, rewrite and ssl: - -a2enmod suexec rewrite ssl actions include ruby - -# If you want to use WebDAV then run the following to enable the Apache webdav modules: - -a2enmod dav_fs dav auth_digest - -# restart Apache before continuing - -/etc/init.d/apache2 restart - - -4) Install pure-ftpd and quota - -apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool - -# Optional: Enable TLS in pureftpd -echo 1 > /etc/pure-ftpd/conf/TLS -mkdir -p /etc/ssl/private/ -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/pure-ftpd.pem - - -# Edit /etc/fstab. Mine looks like this (I added ,usrquota,grpquota to the partition with the mount point /): - -vi /etc/fstab - ----------------------------------------------------------------------------------------------- -# /etc/fstab: static file system information. -# -# -proc /proc proc defaults 0 0 -/dev/sda1 / ext3 errors=remount-ro,usrquota,grpquota 0 1 -/dev/sda5 none swap sw 0 0 -/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 -/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 ----------------------------------------------------------------------------------------------- - -# To enable quota, run these commands: - -touch /quota.user /quota.group -chmod 600 /quota.* -mount -o remount / -quotacheck -avugm -quotaon -avug - - -5) Install MyDNS - -apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev - -cd /tmp -wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.27.tar.gz -tar xvfz mydns-1.2.8.27.tar.gz -cd mydns-1.2.8 -./configure -make -make install - -# Now create the start / stop script for mydns: - -vi /etc/init.d/mydns - -# and enter the following lines (between the ----- lines): - ------------------------------------------------------- -#! /bin/sh -# -# mydns Start the MyDNS server -# -# Author: Philipp Kern . -# Based upon skeleton 1.9.4 by Miquel van Smoorenburg -# and Ian Murdock . -# -### BEGIN INIT INFO -# Provides: MyDNS -# Required-Start: $syslog -# Should-Start: -# Required-Stop: -# Should-Stop: -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: MyDNS Server -# Description: MyDNS DNS Server -### END INIT INFO - -set -e - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/local/sbin/mydns -NAME=mydns -DESC="DNS server" - -SCRIPTNAME=/etc/init.d/$NAME - -# Gracefully exit if the package has been removed. -test -x $DAEMON || exit 0 - -case "$1" in - start) - echo -n "Starting $DESC: $NAME" - start-stop-daemon --start --quiet \ - --exec $DAEMON -- -b - echo "." - ;; - stop) - echo -n "Stopping $DESC: $NAME" - start-stop-daemon --stop --oknodo --quiet \ - --exec $DAEMON - echo "." - ;; - reload|force-reload) - echo -n "Reloading $DESC configuration..." - start-stop-daemon --stop --signal HUP --quiet \ - --exec $DAEMON - echo "done." - ;; - restart) - echo -n "Restarting $DESC: $NAME" - start-stop-daemon --stop --quiet --oknodo \ - --exec $DAEMON - sleep 1 - start-stop-daemon --start --quiet \ - --exec $DAEMON -- -b - echo "." - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - exit 1 - ;; -esac - -exit 0 ---------------------------------------------------------------------------- - -# now execute: - -chmod +x /etc/init.d/mydns -update-rc.d mydns defaults - -6) Install vlogger and webalizer awstats geoip-bin - -apt-get -y install vlogger webalizer awstats - -mkdir /usr/share/awstats/tools -cp -prf /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl /usr/share/awstats/tools/awstats_buildstaticpages.pl - - - -7) Install Jailkit (optional, only needed if you want to use chrooting for SSH users) - -apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz -tar xvfz jailkit-2.11.tar.gz -cd jailkit-2.11 -./debian/rules binary -cd .. -dpkg -i jailkit_2.11-1_*.deb -rm -rf jailkit-2.11* - -8) Install fail2ban (optional but recomended, because the monitor tries to show the log) -More info at: http://www.howtoforge.com/fail2ban_debian_etch - -apt-get -y install fail2ban - -9) Install ISPConfig 3 - -cd /tmp -wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.tar.gz -tar xvfz ISPConfig-3.0.2.tar.gz -cd ispconfig3_install/install/ - -# Now start the installation process by executing: - -php -q install.php - -# The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -# the default login is: - -user: admin -password: admin - -# In case you get a permission denied error from apache, please restart the apache webserver process. - - - ----------------------------------------------------------------------------------------------------------- -Optional: - -Install a webbased Email Client - -apt-get install squirrelmail -ln -s /usr/share/squirrelmail/ /var/www/webmail - -Access squirrelmail: - -http://192.168.0.100/webmail - - -To configure squirrelmail, run: - -/usr/sbin/squirrelmail-configure - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 5.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - - -Optional recommended packages: - -denyhosts - a utility to help sys admins thwart ssh crackers -rsync - fast remote file copy program (for backup) - ------------------------------------------------------------------------------------------------------------ - - -Possible errors and their solutions ------------------------------------- - -pureftpd login does not work. Take a look at the syslog, if you find an error message like this: -Mar 24 16:26:28 ispconfig pure-ftpd: (?@?) [ERROR] Sorry, invalid address given - -then pureftpd is not able to resolve the hostname. Name resolving can be disabled with these commands: - -echo 'yes' > /etc/pure-ftpd/conf/DontResolve -/etc/init.d/pure-ftpd-mysql restart - - - - - - diff --git a/docs/INSTALL_DEBIAN_5.0_dovecot_bind.txt b/docs/INSTALL_DEBIAN_5.0_dovecot_bind.txt deleted file mode 100644 index b7f83ce4912ee3c54d9093806ec526288243b2b2..0000000000000000000000000000000000000000 --- a/docs/INSTALL_DEBIAN_5.0_dovecot_bind.txt +++ /dev/null @@ -1,250 +0,0 @@ -Installation -------------- - -# It is recommended to use a clean (fresh) Debian Lenny install where you just selected "Standard System" at the package selection during -# setup (tasksel). Then follow the steps below to setup your server with ISPConfig 3. In this guide "vi" is used as text editor, but -# you can use whatever you prefer. You should be root for doing all of this. - - -# Check we have Fully Qualified Domain Name - -/bin/hostname - -# it should return something like "ispconfig.example.com" -# if not, then we assign a hostname (for example ispconfig): - -echo ispconfig.example.com > /etc/hostname - -vi /etc/hosts - -# and add lines similar but appropriate: - -127.0.0.1 localhost.localdomain localhost -192.168.0.100 ispconfig.example.com ispconfig - -# Run: - -/etc/init.d/hostname.sh - -# enable the Debian Volatile repository to get an updated ClamAV version - -echo "deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free" >> /etc/apt/sources.list.d/volatile.list -apt-get update - -# Some optional choices - -opt0.1) Optionally install SSH-server to get remote shell - -apt-get install openssh-server - -opt0.2) Optionally, if you are not running inside a virtual machine, you can set server clocksync via NTP. Virtual guests get this from the host. - -apt-get -y install ntp ntpdate - -opt0.3) Optionally if you want vi editor improvement - -apt-get -y install vim-nox - - -# Next is the real deal - -1) Install Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils with the following command line (on one line!): - -apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d sudo - -# Answer the questions from the package manager as follows. - -Create directories for web-based administration ? <-- No -General type of configuration? <-- Internet site -Mail name? <-- server1.mydomain.tld - SSL certificate required <-- Ok - -# ...use your own domain name of course ;) - - - -# Edit the file /etc/mysql/my.cnf - -vi /etc/mysql/my.cnf - -# and change the line: - -bind-address = 127.0.0.1 - -to: - -#bind-address = 127.0.0.1 - -# then restart mysql - -/etc/init.d/mysql restart - -2) Install Amavisd-new, Spamassassin and ClamAV (1 line!): - -apt-get -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl - - -3) Install Apache, PHP5, phpmyadmin, better fastCGI, suexec, Pear and mcrypt (1 line!): - -apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby - - -# When phpMyAdmin is asking wether to configure itself automatically, select "Apache2" - -# Then run the following to enable the Apache modules suexec, rewrite and ssl: - -a2enmod suexec rewrite ssl actions include ruby - -# If you want to use WebDAV then run the following to enable the Apache webdav modules: - -a2enmod dav_fs dav auth_digest - -# restart Apache before continuing - -/etc/init.d/apache2 restart - - -4) Install pure-ftpd and quota - -apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool - -# Optional: Enable TLS in pureftpd -echo 1 > /etc/pure-ftpd/conf/TLS -mkdir -p /etc/ssl/private/ -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/pure-ftpd.pem - - -# Edit /etc/fstab. Mine looks like this (I added ,usrquota,grpquota to the partition with the mount point /): - -vi /etc/fstab - ----------------------------------------------------------------------------------------------- -# /etc/fstab: static file system information. -# -# -proc /proc proc defaults 0 0 -/dev/sda1 / ext3 errors=remount-ro,usrquota,grpquota 0 1 -/dev/sda5 none swap sw 0 0 -/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 -/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 ----------------------------------------------------------------------------------------------- - -# To enable quota, run these commands: - -touch /quota.user /quota.group -chmod 600 /quota.* -mount -o remount / -quotacheck -avugm -quotaon -avug - - -5) Install BIND DNS Server - -apt-get -y install bind9 dnsutils - -6) Install vlogger and webalizer - -apt-get -y install vlogger webalizer awstats geoip-bin - -mkdir /usr/share/awstats/tools -cp -prf /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl /usr/share/awstats/tools/awstats_buildstaticpages.pl - - -7) Install Jailkit (optional, only needed if you want to use chrooting for SSH users) - -apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.12.tar.gz -tar xvfz jailkit-2.12.tar.gz -cd jailkit-2.12 -./debian/rules binary -cd .. -dpkg -i jailkit_2.12-1_*.deb -rm -rf jailkit-2.12* - -8) Install fail2ban (optional but recomended, because the monitor tries to show the log) -More info at: http://www.howtoforge.com/fail2ban_debian_etch - -apt-get -y install fail2ban - -9) Install ISPConfig 3 - -cd /tmp -wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.2.tar.gz -tar xvfz ISPConfig-3.0.2.2.tar.gz -cd ispconfig3_install/install/ - -# Now start the installation process by executing: - -php -q install.php - -# The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -# the default login is: - -user: admin -password: admin - -# In case you get a permission denied error from apache, please restart the apache webserver process. - - - ----------------------------------------------------------------------------------------------------------- -Optional: - -Install a webbased Email Client - -apt-get install squirrelmail -ln -s /usr/share/squirrelmail/ /var/www/webmail - -Access squirrelmail: - -http://192.168.0.100/webmail - - -To configure squirrelmail, run: - -/usr/sbin/squirrelmail-configure - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 5.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - - -Optional recommended packages: - -denyhosts - a utility to help sys admins thwart ssh crackers -rsync - fast remote file copy program (for backup) - ------------------------------------------------------------------------------------------------------------ - - -Possible errors and their solutions ------------------------------------- - -pureftpd login does not work. Take a look at the syslog, if you find an error message like this: -Mar 24 16:26:28 ispconfig pure-ftpd: (?@?) [ERROR] Sorry, invalid address given - -then pureftpd is not able to resolve the hostname. Name resolving can be disabled with these commands: - -echo 'yes' > /etc/pure-ftpd/conf/DontResolve -/etc/init.d/pure-ftpd-mysql restart - - - - - - diff --git a/docs/INSTALL_DEBIAN_5.0_multiserver.txt b/docs/INSTALL_DEBIAN_5.0_multiserver.txt deleted file mode 100644 index fbc6ea854af5c1f066152db9fe5b52310dbe090c..0000000000000000000000000000000000000000 --- a/docs/INSTALL_DEBIAN_5.0_multiserver.txt +++ /dev/null @@ -1,47 +0,0 @@ - -This guide is incomplete. Work in progress. - - -Installing the webserver --------------------------------------------------- - -apt-get install mysql-server -apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp sudo - -a2enmod suexec rewrite ssl actions include - -# If you want webdav then run the following to enable the Apache webdav modules: - -a2enmod dav_fs -a2enmod dav auth_digest - - -apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool - -vi /etc/default/pure-ftpd-common - -... and change the start mode from inetd to standalone and set VIRTUALCHROOT=true: - -[...] -STANDALONE_OR_INETD=standalone -[...] -VIRTUALCHROOT=true -[...] - -apt-get install vlogger webalizer awstats geoip-bin - -mkdir /usr/share/awstats/tools -cp -prf /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl /usr/share/awstats/tools/awstats_buildstaticpages.pl - -apt-get install gcc make - -apt-get install postfix - - - -Installing the DNS Server --------------------------------------------------- - -apt-get install bind9 dnsutils -apt-get install mysql-server -apt-get install php5-cli php5-mysql php5-mcrypt \ No newline at end of file diff --git a/docs/INSTALL_DEBIAN_6.0_courier_mydns.txt b/docs/INSTALL_DEBIAN_6.0_courier_mydns.txt deleted file mode 100644 index 31083a959ca6cbc98a15b6a69016422a0c03d6f0..0000000000000000000000000000000000000000 --- a/docs/INSTALL_DEBIAN_6.0_courier_mydns.txt +++ /dev/null @@ -1,399 +0,0 @@ -Installation -------------- - -# It is recommended to use a clean (fresh) Debian Squeeze 6.0 install where you just selected "Standard System" at the package selection during -# setup (tasksel). Journaled quota which this guide uses works on ext3 and ext4 file systems, so format disks either one if you are going to use -# quota (recommended). Then follow the steps below to setup your server with ISPConfig 3. In this guide "vi" is used as text editor, but -# you can use whatever you prefer. You should be root for doing all of this. - - -# Check we have Fully Qualified Domain Name - -/bin/hostname - -# it should return something like "ispconfig.example.com" -# if not, then we assign a hostname (for example ispconfig): - -echo ispconfig.example.com > /etc/hostname - -vi /etc/hosts - -# and add lines similar but appropriate: - -127.0.0.1 localhost.localdomain localhost -192.168.0.100 ispconfig.example.com ispconfig - - - -# Some optional choices - -opt0.1) Optionally install SSH-server to get remote shell - -apt-get install openssh-server - -opt0.2) Optionally, if you are not running inside a virtual machine, you can set server clocksync via NTP. Virtual guests get this from the host. - -apt-get -y install ntp ntpdate - -opt0.3) Optionally if you want vi editor improvement - -apt-get -y install vim-nox - - -# Next is the real deal - -1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin, rkhunter, binutils with the following command line (on one line!): - -apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-pop courier-pop-ssl courier-authlib-mysql courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 rkhunter binutils sudo - -# Answer the questions from the package manager as follows. - -Create directories for web-based administration ? <-- No -General type of configuration? <-- Internet site -Mail name? <-- server1.mydomain.tld - SSL certificate required <-- Ok - -# ...use your own domain name of course ;) - - - -# Edit the file /etc/mysql/my.cnf - -vi /etc/mysql/my.cnf - -# and change the line: - -bind-address = 127.0.0.1 - -to: - -#bind-address = 127.0.0.1 - -# then restart mysql - -/etc/init.d/mysql restart - -2) Install Amavisd-new, Spamassassin and ClamAV (1 line!): - -apt-get -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl -#this is necessary? libnet-ldap-perl - -# During the installation, the SSL certificates for IMAP-SSL and POP3-SSL are created with the hostname localhost. To change this to the correct hostname (server1.example.com in this tutorial), delete the certificates... - -cd /etc/courier -rm -f /etc/courier/imapd.pem -rm -f /etc/courier/pop3d.pem - -# ... and modify the following two files; replace CN=localhost with CN=server1.example.com (you can also modify the other values, if necessary): - -vi /etc/courier/imapd.cnf - -[...] -CN=server1.example.com -[...] - -vi /etc/courier/pop3d.cnf - -[...] -CN=server1.example.com -[...] - -# Then recreate the certificates... - -mkimapdcert -mkpop3dcert - -# ... and restart Courier-IMAP-SSL and Courier-POP3-SSL: - -/etc/init.d/courier-imap-ssl restart -/etc/init.d/courier-pop-ssl restart - - -3) Install Apache, PHP5, PhpMyAdmin, better fastCGI, suexec, Pear and mcrypt (1 line!): - -apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby - -#this package is actual missed on official squeeze repository: php5-imagick - -# When phpMyAdmin is asking wether to configure itself automatically, select "Apache2" - -# Then run the following to enable the Apache modules suexec, rewrite and ssl: - -a2enmod suexec rewrite ssl actions include ruby - -# If you want to use WebDAV then run the following to enable the Apache webdav modules: - -a2enmod dav_fs dav auth_digest - -# restart Apache before continuing - -/etc/init.d/apache2 restart - - -4) Install pure-ftpd and quota - -apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool - -# Optional: Some additional settings for pureftpd - -echo "yes" > /etc/pure-ftpd/conf/DisplayDotFiles - -# Enable TLS in pureftpd -echo 1 > /etc/pure-ftpd/conf/TLS -mkdir -p /etc/ssl/private/ -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/pure-ftpd.pem - - -# Edit /etc/fstab. Add "usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0" to the partition where you want to use quota. -# Mine looks like this (I want to use quota on the / partition): - -vi /etc/fstab - ----------------------------------------------------------------------------------------------- -# /etc/fstab: static file system information. -# -# -proc /proc proc defaults 0 0 -/dev/sda1 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1 -/dev/sda5 none swap sw 0 0 -/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 -/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 ----------------------------------------------------------------------------------------------- - -# To enable quota, run these commands: - -touch /aquota.user /aquota.group -chmod 600 /aquota.* -mount -o remount / -quotacheck -F vfsv0 -afcvdugm -quotaon -avug - - -5) Install MyDNS - -apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient-dev - -cd /tmp -wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.27.tar.gz -tar xvfz mydns-1.2.8.27.tar.gz -cd mydns-1.2.8 -./configure -make -make install - -# Now create the start / stop script for mydns: - -vi /etc/init.d/mydns - -# and enter the following lines (between the ----- lines): - ------------------------------------------------------- -#! /bin/sh -# -# mydns Start the MyDNS server -# -# Author: Philipp Kern . -# Based upon skeleton 1.9.4 by Miquel van Smoorenburg -# and Ian Murdock . -# -### BEGIN INIT INFO -# Provides: MyDNS -# Required-Start: $syslog -# Should-Start: -# Required-Stop: -# Should-Stop: -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: MyDNS Server -# Description: MyDNS DNS Server -### END INIT INFO - -set -e - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/local/sbin/mydns -NAME=mydns -DESC="DNS server" - -SCRIPTNAME=/etc/init.d/$NAME - -# Gracefully exit if the package has been removed. -test -x $DAEMON || exit 0 - -case "$1" in - start) - echo -n "Starting $DESC: $NAME" - start-stop-daemon --start --quiet \ - --exec $DAEMON -- -b - echo "." - ;; - stop) - echo -n "Stopping $DESC: $NAME" - start-stop-daemon --stop --oknodo --quiet \ - --exec $DAEMON - echo "." - ;; - reload|force-reload) - echo -n "Reloading $DESC configuration..." - start-stop-daemon --stop --signal HUP --quiet \ - --exec $DAEMON - echo "done." - ;; - restart) - echo -n "Restarting $DESC: $NAME" - start-stop-daemon --stop --quiet --oknodo \ - --exec $DAEMON - sleep 1 - start-stop-daemon --start --quiet \ - --exec $DAEMON -- -b - echo "." - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - exit 1 - ;; -esac - -exit 0 ---------------------------------------------------------------------------- - -# now execute: - -chmod +x /etc/init.d/mydns -update-rc.d mydns defaults - -6) Install vlogger and webalizer - -apt-get -y install vlogger webalizer awstats - -mkdir /usr/share/awstats/tools -cp -prf /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl /usr/share/awstats/tools/awstats_buildstaticpages.pl - - -7) Install Jailkit (optional, only needed if you want to use chrooting for SSH users) - -apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.13.tar.gz -tar xvfz jailkit-2.13.tar.gz -cd jailkit-2.13 -./configure -make -make install -cd .. -rm -rf jailkit-2.13* - -8) Install fail2ban (optional but recomended, because the monitor tries to show the log) -More info at: http://www.howtoforge.com/fail2ban_debian_etch - -apt-get -y install fail2ban - -9) Install ISPConfig 3 - -# There are two possile scenarios, but not both: -9.1) Install the latest released version -9.2) Install directly from SVN - -9.1) Installation of last version from tar.gz - - cd /tmp - wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.tar.gz - tar xvfz ISPConfig-3.0.2.tar.gz - cd ispconfig3_install/install/ - -9.2) Installation from SVN - - apt-get install subversion - cd /tmp - svn export svn://svn.ispconfig.org/ispconfig3/trunk/ - cd trunk/install - - -9.1+9.2) Now proceed with the ISPConfig installation. - -# Now start the installation process by executing: - -php -q install.php - -# The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -# the default login is: - -user: admin -password: admin - -# In case you get a permission denied error from apache, please restart the apache webserver process. - - - ----------------------------------------------------------------------------------------------------------- -Optional: - -Install a webbased Email Client - -apt-get install squirrelmail -ln -s /usr/share/squirrelmail/ /var/www/webmail - -Access squirrelmail: - -http://192.168.0.100/webmail - - -To configure squirrelmail, run: - -/usr/sbin/squirrelmail-configure - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 5.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - - -Optional recommended packages: - -denyhosts - a utility to help sys admins thwart ssh crackers -rsync - fast remote file copy program (for backup) - ------------------------------------------------------------------------------------------------------------ - - -Possible errors and their solutions ------------------------------------- - -pureftpd login does not work. Take a look at the syslog, if you find an error message like this: -Mar 24 16:26:28 ispconfig pure-ftpd: (?@?) [ERROR] Sorry, invalid address given - -then pureftpd is not able to resolve the hostname. Name resolving can be disabled with these commands: - -echo 'yes' > /etc/pure-ftpd/conf/DontResolve -/etc/init.d/pure-ftpd-mysql restart - ------------------------------------------------------------------------------------------------------------ -Fail2ban also working with ipv6: -# Download here and install the package: http://homes.dcc.ufba.br/~rogeriobastos/files/fail2ban/ -# Set banaction = route in jail.conf -# Create or modify route.conf in /etc/fail2ban/action.d -[Definition] -actionban = ip route add unreachable -actionunban = ip route del unreachable -action6ban = ip route add unreachable -action6unban = ip route del unreachable ------------------------------------------------------------------------------------------------------------ - - - - - - diff --git a/docs/INSTALL_DEBIAN_6.0_dovecot_bind.txt b/docs/INSTALL_DEBIAN_6.0_dovecot_bind.txt deleted file mode 100644 index 3fbdffe01da26ddd35b963e9ab6109b74a291ecc..0000000000000000000000000000000000000000 --- a/docs/INSTALL_DEBIAN_6.0_dovecot_bind.txt +++ /dev/null @@ -1,279 +0,0 @@ -Installation -------------- - -# It is recommended to use a clean (fresh) Debian Squeeze 6.0 install where you just selected "Standard System" at the package selection during -# setup (tasksel). Journaled quota which this guide uses works on ext3 and ext4 file systems, so format disks either one if you are going to use -# quota (recommended). Then follow the steps below to setup your server with ISPConfig 3. In this guide "vi" is used as text editor, but -# you can use whatever you prefer. You should be root for doing all of this. - - -# Check we have Fully Qualified Domain Name - -/bin/hostname - -# it should return something like "ispconfig.example.com" -# if not, then we assign a hostname (for example ispconfig): - -echo ispconfig.example.com > /etc/hostname - -vi /etc/hosts - -# and add lines similar but appropriate: - -127.0.0.1 localhost.localdomain localhost -192.168.0.100 ispconfig.example.com ispconfig - -# Run: - -/etc/init.d/hostname.sh - -# enable the Debian Volatile repository to get an updated ClamAV version -# The Volatile repository for Debian Squeeze was not available yet at the time this howto was written. -# echo "deb http://volatile.debian.org/debian-volatile squeeze/volatile main contrib non-free" >> /etc/apt/sources.list.d/volatile.list -# apt-get update - -# Some optional choices - -opt0.1) Optionally install SSH-server to get remote shell - -apt-get install openssh-server - -opt0.2) Optionally, if you are not running inside a virtual machine, you can set server clocksync via NTP. Virtual guests get this from the host. - -apt-get -y install ntp ntpdate - -opt0.3) Optionally if you want vi editor improvement - -apt-get -y install vim-nox - - -# Next is the real deal - -1) Install Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils with the following command line (on one line!): - -apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d sudo - -# Answer the questions from the package manager as follows. - -General type of configuration? <-- Internet site -Mail name? <-- server1.mydomain.tld - -# ...use your own domain name of course ;) - - - -# Edit the file /etc/mysql/my.cnf - -vi /etc/mysql/my.cnf - -# and change the line: - -bind-address = 127.0.0.1 - -to: - -#bind-address = 127.0.0.1 - -# then restart mysql - -/etc/init.d/mysql restart - -2) Install Amavisd-new, Spamassassin and ClamAV (1 line!): - -apt-get -y install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl - - -3) Install Apache, PHP5, phpmyadmin, better fastCGI, suexec, Pear and mcrypt (1 line!): - -apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt imagemagick libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby - - -# When phpMyAdmin is asking wether to configure itself automatically, select "Apache2" - -# Then run the following to enable the Apache modules suexec, rewrite and ssl: - -a2enmod suexec rewrite ssl actions include ruby - -# restart Apache before continuing - -/etc/init.d/apache2 restart - - -4) Install pure-ftpd and quota - -apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool - -# Optional: Enable TLS in pureftpd -echo 1 > /etc/pure-ftpd/conf/TLS -mkdir -p /etc/ssl/private/ -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/pure-ftpd.pem - - -# Edit /etc/fstab. Add "usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0" to the partition where you want to use quota. -# Mine looks like this (I want to use quota on the / partition): - -vi /etc/fstab - ----------------------------------------------------------------------------------------------- -# /etc/fstab: static file system information. -# -# -proc /proc proc defaults 0 0 -/dev/sda1 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1 -/dev/sda5 none swap sw 0 0 -/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 -/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 ----------------------------------------------------------------------------------------------- - -# To enable quota, run these commands: - -touch /aquota.user /aquota.group -chmod 600 /aquota.* -mount -o remount / -quotacheck -F vfsv0 -afcvdugm -quotaon -avug - - -5) Install BIND DNS Server - -apt-get -y install bind9 dnsutils - -6) Install vlogger and webalizer - -apt-get -y install vlogger webalizer awstats - -mkdir /usr/share/awstats/tools -cp -prf /usr/share/doc/awstats/examples/awstats_buildstaticpages.pl /usr/share/awstats/tools/awstats_buildstaticpages.pl - - -7) Install Jailkit (optional, only needed if you want to use chrooting for SSH users) - -apt-get -y install build-essential autoconf automake1.9 libtool flex bison debhelper -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.13.tar.gz -tar xvfz jailkit-2.13.tar.gz -cd jailkit-2.13 -./configure -make -make install -cd .. -rm -rf jailkit-2.13* - -8) Install fail2ban (optional but recomended, because the monitor tries to show the log) -More info at: http://www.howtoforge.com/fail2ban_debian_etch - -apt-get -y install fail2ban - -9) Install ISPConfig 3 - -cd /tmp -wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.2.tar.gz -tar xvfz ISPConfig-3.0.2.2.tar.gz -cd ispconfig3_install/install/ - -# Now start the installation process by executing: - -php -q install.php - -# The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -# the default login is: - -user: admin -password: admin - -# In case you get a permission denied error from apache, please restart the apache webserver process. - - - ----------------------------------------------------------------------------------------------------------- -Optional: - -Install a webbased Email Client - -apt-get install squirrelmail -ln -s /usr/share/squirrelmail/ /var/www/webmail - -Access squirrelmail: - -http://192.168.0.100/webmail - - -To configure squirrelmail, run: - -/usr/sbin/squirrelmail-configure - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 5.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - - -Optional recommended packages: - -denyhosts - a utility to help sys admins thwart ssh crackers -rsync - fast remote file copy program (for backup) - ------------------------------------------------------------------------------------------------------------ - -Ispc log files rotation, for now manual add but to add in ispc installer: - -/etc/logrotate.d/logispc3 - -/var/log/ispconfig/ispconfig.log { - weekly - missingok - rotate 4 - compress - delaycompress -} -/var/log/ispconfig/cron.log { - weekly - missingok - rotate 4 - compress - delaycompress -} - - ------------------------------------------------------------------------------------------------------------ - -Possible errors and their solutions ------------------------------------- - -pureftpd login does not work. Take a look at the syslog, if you find an error message like this: -Mar 24 16:26:28 ispconfig pure-ftpd: (?@?) [ERROR] Sorry, invalid address given - -then pureftpd is not able to resolve the hostname. Name resolving can be disabled with these commands: - -echo 'yes' > /etc/pure-ftpd/conf/DontResolve -/etc/init.d/pure-ftpd-mysql restart - - ------------------------------------------------------------------------------------------------------------ -Fail2ban also working with ipv6: -# Download here and install the package: http://homes.dcc.ufba.br/~rogeriobastos/files/fail2ban/ -# Set banaction = route in jail.conf -# Create or modify route.conf in /etc/fail2ban/action.d -[Definition] -actionban = ip route add unreachable -actionunban = ip route del unreachable -action6ban = ip route add unreachable -action6unban = ip route del unreachable ------------------------------------------------------------------------------------------------------------ - - - - diff --git a/docs/INSTALL_FEDORA_12_dovecot_bind.txt b/docs/INSTALL_FEDORA_12_dovecot_bind.txt deleted file mode 100644 index 8bf4e04b1e2c8b465e6903070930942e9ae90970..0000000000000000000000000000000000000000 --- a/docs/INSTALL_FEDORA_12_dovecot_bind.txt +++ /dev/null @@ -1,154 +0,0 @@ - -Installation ------------ - -It is recommended to use a clean (fresh) Fedora install. Then follow the steps below to setup your server with ISPConfig 3: - -Installation of some basic requirements: - -// rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* -yum update - -You should disable selinux now, as some programs will not start when selinux is enabled: - -vi /etc/selinux/config - -and set: - -SELINUX=disabled - -then reboot the server. - - -1) Install Postfix, Dovecot MySQL, phpMyAdmin with the following command line (on one line!): - -yum install ntp httpd mysql-server php php-mysql php-mbstring phpMyAdmin getmail postfix dovecot dovecot-mysql wget - -chkconfig --levels 235 mysqld on -/etc/init.d/mysqld start - -chkconfig --levels 235 httpd on -/etc/init.d/httpd start - -chkconfig --levels 235 dovecot on -/etc/init.d/dovecot start - -chkconfig --levels 235 sendmail off -chkconfig --levels 235 postfix on -/etc/init.d/sendmail stop -/etc/init.d/postfix start - - -Set the mysql database password: - -/usr/bin/mysql_secure_installation - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -yum install amavisd-new spamassassin clamav clamav-data clamav-server clamav-update unzip bzip2 unrar - -chkconfig --levels 235 amavisd on -chkconfig --levels 235 clamd.amavisd on -/usr/bin/freshclam -/etc/init.d/amavisd start -/etc/init.d/clamd.amavisd start - -3) Install apache, PHP5 and phpmyadmin (1 line!): - -yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel phpmyadmin - -disable php mapserver module as it causes errors on cli: - -vi /etc/php.d/mapserver.ini - -and add ; in front of the line extension=php_mapscript.so - -; extension=php_mapscript.so - -4) Install pure-ftpd and quota - -yum install pure-ftpd quota - -chkconfig --levels 235 pure-ftpd on - -5) Install bind dns server - -yum install bind bind-utils - -chkconfig --levels 235 named on - -6) Install vlogger dependencies and webalizer - -yum install webalizer perl-DateTime-Format-HTTP perl-DateTime-Format-Builder - -6.5) Install jailkit - -yum install gcc - -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz -tar xvfz jailkit-2.11.tar.gz -cd jailkit-2.11 -./configure -make -make install -rm -rf jailkit-2.11* - -6.6) Install fail2ban - -yum install fail2ban - -7) Configure the firewall - -Now you should switch off the firewall by running: - -system-config-firewall-tui - -ISPConfig comes with a iptables bsed firewall script that can be managed from within the ispconfig interface. - - -8) Install ISPConfig 3 - - cd /tmp - wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.1.tar.gz - tar xvfz ISPConfig-3.0.2.tar.gz - cd ispconfig3_install/install/ - -Now start the installation process by executing: - -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -yum install squirrelmail - - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 4.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - - diff --git a/docs/INSTALL_FEDORA_9.txt b/docs/INSTALL_FEDORA_9.txt deleted file mode 100644 index 7f1531fabd609f3a8a8b7f025cd683fad99dfe8d..0000000000000000000000000000000000000000 --- a/docs/INSTALL_FEDORA_9.txt +++ /dev/null @@ -1,215 +0,0 @@ - -Installation ------------ - -It is recommended to use a clean (fresh) Fedora install. Then follow the steps below to setup your server with ISPConfig 3: - -Installation of some basic requirements: - -rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* -yum update -yum groupinstall 'Development Tools' -yum groupinstall 'Development Libraries' - -You should disable selinux now, as some programs will not start when selinux is enabled: - -vi /etc/selinux/config - -and set: - -SELINUX=disabled - -then reboot the server. - - -1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin with the following command line (on one line!): - -yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpMyAdmin pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel getmail - -useradd -m -s /bin/bash compileuser -passwd compileuser - -visudo - -## Allow root to run any commands anywhere -root ALL=(ALL) ALL -compileuser ALL=(ALL) ALL - - -su compileuser - -mkdir $HOME/rpm -mkdir $HOME/rpm/SOURCES -mkdir $HOME/rpm/SPECS -mkdir $HOME/rpm/BUILD -mkdir $HOME/rpm/SRPMS -mkdir $HOME/rpm/RPMS -mkdir $HOME/rpm/RPMS/i386 - -echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros - - -wget http://prdownloads.sourceforge.net/courier/courier-authlib-0.61.0.tar.bz2 -wget http://prdownloads.sourceforge.net/courier/courier-imap-4.4.1.tar.bz2 -wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2 - -sudo rpmbuild -ta courier-authlib-0.61.0.tar.bz2 - -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-0.61.0-1.fc9.i386.rpm -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-mysql-0.61.0-1.fc9.i386.rpm -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-authlib-devel-0.61.0-1.fc9.i386.rpm - -rpmbuild -ta courier-imap-4.4.1.tar.bz2 - -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/courier-imap-4.4.1-1.9.i386.rpm - -sudo rpmbuild -ta maildrop-2.0.4.tar.bz2 - -sudo rpm -ivh /home/compileuser/rpm/RPMS/i386/maildrop-2.0.4-1.9.i386.rpm - -exit - -yum install postfix - -chkconfig --levels 235 mysqld on -/etc/init.d/mysqld start - -chkconfig --levels 235 httpd on -/etc/init.d/httpd start - -chkconfig --levels 235 courier-authlib on -/etc/init.d/courier-authlib start - -chkconfig --levels 235 sendmail off -chkconfig --levels 235 postfix on -chkconfig --levels 235 saslauthd on -/etc/init.d/sendmail stop -/etc/init.d/postfix start -/etc/init.d/saslauthd start - -chkconfig --levels 235 courier-imap on -/etc/init.d/courier-authlib restart -/etc/init.d/courier-imap restart - - -Set the mysql database password: - -mysqladmin -u root password yourrootsqlpassword -mysqladmin -h ispconfig.local -u root password yourrootsqlpassword - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -yum install amavisd-new spamassassin clamav clamav-data clamav-server clamav-update unzip bzip2 unrar - -chkconfig --levels 235 amavisd on -chkconfig --levels 235 clamd.amavisd on -/usr/bin/freshclam -/etc/init.d/amavisd start -/etc/init.d/clamd.amavisd start - -3) Install apache, PHP5 and phpmyadmin (1 line!): - -yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel phpmyadmin - - -4) Install pure-ftpd and quota - -yum install pure-ftpd quota - -chkconfig --levels 235 pure-ftpd on - -5) Install mydns - -rpm -i http://mydns.bboy.net/download/mydns-mysql-1.1.0-1.i386.rpm - -chkconfig --levels 235 mydns on - -6) Install vlogger and webalizer - -yum install webalizer perl-DateTime-Format-HTTP perl-DateTime-Format-Builder - -cd /tmp -wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz -tar xvfz vlogger-1.3.tar.gz -mv vlogger-1.3/vlogger /usr/sbin/ -rm -rf vlogger* - -7) Configure the firewall - -Now you should switch off the firewall by running: - -system-config-firewall-tui - -ISPConfig comes with a iptables bsed firewall script that can be meneged from within the ispconfig interface. - - -8) Install ISPConfig 3 - -There are two possile scenarios, but not both: -8.1) Install the latest released version -8.2) Install directly from SVN - -8.1) Installation of beta 3 from tar.gz - - cd /tmp - wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz - tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz - cd ispconfig3_install/install/ - -8.2) Installation from SVN - - yum install subversion - cd /tmp - svn export svn://svn.ispconfig.org/ispconfig3/trunk/ - cd trunk/install - - -8.1+8.2) Now proceed with the ISPConfig installation. - -Now start the installation process by executing: - -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -yum install squirrelmail - - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 4.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - -Installing Jailkit: - -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz -tar xvfz jailkit-2.5.tar.gz -cd jailkit-2.5 -./configure -make -make install -rm -rf jailkit-2.5* diff --git a/docs/INSTALL_OPENSUSE_11.txt b/docs/INSTALL_OPENSUSE_11.txt deleted file mode 100644 index de8c0a079a403cc07ac1aa61c8a2471f2fe5f6b5..0000000000000000000000000000000000000000 --- a/docs/INSTALL_OPENSUSE_11.txt +++ /dev/null @@ -1,201 +0,0 @@ - -Installation ------------ - -It is recommended to use a clean (fresh) OpenSUSE installatiom where you selected to install just the minimal packages. A Gnome or KDE desktop is not needed and will just slow down the server. Then follow the steps below to setup your server with ISPConfig 3: - -Install some basic packes and the compilers that we need later - -yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ make vim telnet cron iptables iputils man man-pages - -1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin with the following command line (on one line!): - -yast2 -i postfix postfix-mysql mysql mysql-client phpMyAdmin courier-imap courier-authlib courier-authlib-mysql python cron cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd libmysqlclient-devel - -chkconfig --add mysql -/etc/init.d/mysql start - -chkconfig --add postfix -/etc/init.d/postfix start - -chkconfig --add saslauthd -/etc/init.d/saslauthd start - -chkconfig --add saslauthd -/etc/init.d/saslauthd start - -chkconfig --add fam -chkconfig --add courier-authdaemon -chkconfig --add courier-pop -chkconfig --add courier-imap -/etc/init.d/courier-pop start -/etc/init.d/courier-imap start -chkconfig --add courier-pop-ssl -chkconfig --add courier-imap-ssl -/etc/init.d/courier-pop-ssl start -/etc/init.d/courier-imap-ssl start - -cd /tmp -wget http://download.opensuse.org/repositories/server:/mail/openSUSE_11.0/i586/getmail-4.7.6-1.4.i586.rpm -rpm -i getmail-4.7.6-1.4.i586.rpm - -// Warnings like "warning: getmail-4.7.6-1.4.i586.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" can be ignored. - -// Install maildrop -rpm --force -i http://download.opensuse.org/repositories/home%3A/cboltz/openSUSE_10.3/i586/maildrop-2.0.3-16.1.i586.rpm - -// Install pam_mysql - -yast2 -i pam-devel -cd /tmp -wget http://heanet.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.7RC1.tar.gz -tar xvfz pam_mysql-0.7RC1.tar.gz -cd pam_mysql-0.7RC1 -./configure -make -make install -rm -rf pam_mysql-0.7RC1 -rm pam_mysql-0.7RC1.tar.gz - -// Set the mysql database password: - -mysqladmin -u root password yourrootsqlpassword -mysqladmin -h ispconfig.local -u root password yourrootsqlpassword - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql - -chkconfig --add amavis -chkconfig --add clamd -/etc/init.d/amavis start -/etc/init.d/clamd start - -3) Install PHP5 modules (1 line!): - -yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dbase php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-ncurses php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl - -Then run the following to enable the Apache modules: - -a2enmod suexec -a2enmod rewrite -a2enmod ssl -a2enmod actions - -chkconfig --add apache2 -/etc/init.d/apache2 start - -4) Install pure-ftpd and quota - -yast2 -i pure-ftpd quota - -// The current pure-ftpd package from SuSE is unstable and segfaults when a file is uploaded, -// we will replace it with a manually compiled package now: - -cd /tmp -wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.21.tar.gz -tar xvfz pure-ftpd-1.0.21.tar.gz -cd pure-ftpd-1.0.21/ -./configure --sysconfdir=/etc/pure-ftpd --with-everything --with-mysql -make -make install -mv /usr/sbin/pure-ftpd /usr/sbin/pure-ftpd.suse -ln -s /usr/local/sbin/pure-ftpd /usr/sbin/pure-ftpd -rm -rf pure-ftpd-1.0.21 -rm -f pure-ftpd-1.0.21.tar.gz - -chkconfig --add pure-ftpd -/etc/init.d/pure-ftpd start - - -5) Install mydns - -cd /tmp -wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/server:/dns/SUSE_Factory/i586/mydns-mysql-1.1.0-3.72.i586.rpm -wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/server:/dns/SUSE_Factory/i586/mydns-1.1.0-3.72.i586.rpm -rpm -i mydns*.rpm -rm -rf /tmp/mydns* - -chkconfig --add mydns - -6) Install vlogger and webalizer - -cd /tmp -wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz -tar xvfz vlogger-1.3.tar.gz -mv vlogger-1.3/vlogger /usr/sbin/ -rm -rf vlogger* - - -yast2 -i webalizer perl-DateManip - - -7) Install ISPConfig 3 - -There are two possile scenarios, but not both: -7.1) Install the latest released version -7.2) Install directly from SVN - -7.1) Installation of beta 3 from tar.gz - - cd /tmp - wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz - tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz - cd ispconfig3_install/install/ - -7.2) Installation from SVN - - yast2 -i subversion - cd /tmp - svn export svn://svn.ispconfig.org/ispconfig3/trunk/ - cd trunk/install - - -7.1+7.2) Now proceed with the ISPConfig installation. - -Now start the installation process by executing: - -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -yast2 -i squirrelmail - ----------------------------------------------------------------------------------------------------------- - -Hints: - -debian 4.0 under openvz: - -VPSID=101 -for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE -do - vzctl set $VPSID --capability ${CAP}:on --save -done - ----------------------------------------------------------------------------------------------------------- - -Installing Jailkit: - -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz -tar xvfz jailkit-2.5.tar.gz -cd jailkit-2.5 -./configure -make -make install -rm -rf jailkit-2.5* diff --git a/docs/INSTALL_OPENSUSE_11_1.txt b/docs/INSTALL_OPENSUSE_11_1.txt deleted file mode 100644 index f6ea738ed6a034418c41549cd6c1657544fcafcf..0000000000000000000000000000000000000000 --- a/docs/INSTALL_OPENSUSE_11_1.txt +++ /dev/null @@ -1,210 +0,0 @@ - -Installation ------------ - -It is recommended to use a clean (fresh) OpenSUSE installatiom where you selected to install just the minimal packages. A Gnome or KDE desktop is not needed and will just slow down the server. Then follow the steps below to setup your server with ISPConfig 3: - -The following guide is for the 32Bit version of openSUSE, for 64Bit installations the package names may differ especially the names of downloaded rpm files. - -Install some basic packes and the compilers that we need later - -yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ make vim telnet cron iptables iputils man man-pages nano pico - -1) Install Postfix, Courier, Saslauthd, MySQL with the following command line (on one line!): - -yast2 -i postfix postfix-mysql mysql mysql-client courier-imap courier-authlib courier-authlib-mysql python cron cyrus-sasl cyrus-sasl-crammd5 cyrus-sasl-digestmd5 cyrus-sasl-gssapi cyrus-sasl-otp cyrus-sasl-plain cyrus-sasl-saslauthd libmysqlclient-devel - -chkconfig --add mysql -/etc/init.d/mysql start - -chkconfig --add postfix -/etc/init.d/postfix start - -chkconfig --add saslauthd -/etc/init.d/saslauthd start - -chkconfig --add saslauthd -/etc/init.d/saslauthd start - -chkconfig --add fam -chkconfig --add courier-authdaemon -chkconfig --add courier-pop -chkconfig --add courier-imap -/etc/init.d/courier-pop start -/etc/init.d/courier-imap start -chkconfig --add courier-pop-ssl -chkconfig --add courier-imap-ssl -/etc/init.d/courier-pop-ssl start -/etc/init.d/courier-imap-ssl start - - -cd /tmp -wget http://download.opensuse.org/repositories/server:/mail/openSUSE_11.0/i586/getmail-4.7.6-1.4.i586.rpm -rpm -i getmail-4.7.6-1.4.i586.rpm - -// Install maildrop -wget http://download.opensuse.org/repositories/home:/atzewilms/openSUSE_11.1_Update/i586/maildrop-2.0.4-10.5.i586.rpm -rpm --force -i maildrop-2.0.4-10.5.i586.rpm - -// Install pam_mysql -yast2 -i pam-devel -cd /tmp -wget http://heanet.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.7RC1.tar.gz -tar xvfz pam_mysql-0.7RC1.tar.gz -cd pam_mysql-0.7RC1 -./configure -make -make install -rm -rf /tmp/pam_mysql-0.7RC1 -rm /tmp/pam_mysql-0.7RC1.tar.gz - - -// Set the mysql database password: - -mysql_secure_installation - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql - -chkconfig --add amavis -chkconfig --add clamd -/etc/init.d/amavis start -/etc/init.d/clamd start - -2.1) Install apache2 - -yast2 -i apache2 apache2-mod_fcgid - -rpm -i http://download.opensuse.org/repositories/server:/php/server_database_apache_openSUSE_11.0/i586/suphp-0.6.2-10.41.i586.rpm - -3) Install PHP5 modules (1 line!): - -yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dbase php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-ncurses php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5 - -Then run the following to enable the Apache modules: - -a2enmod suexec -a2enmod rewrite -a2enmod ssl -a2enmod actions -a2enmod suphp -a2enmod fcgid - -// Fix a suexec permission problem - -chown root:www /usr/sbin/suexec2 -chmod 4755 /usr/sbin/suexec2 - -// and start apache - -chkconfig --add apache2 -/etc/init.d/apache2 start - -cd /tmp - -yast2 -i pwgen -rpm -i http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.1/noarch/phpMyAdmin-3.1.2-1.1.noarch.rpm -ln -s /srv/www/htdocs/phpMyAdmin /usr/local/ispconfig/interface/web/phpmyadmin - -// Warnings like "warning: phpMyAdmin-3.1.2-1.1.src.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" can be ignored. - -4) Install pure-ftpd and quota - -yast2 -i pure-ftpd quota - -chkconfig --add pure-ftpd -/etc/init.d/pure-ftpd start - - -5) Install mydns - -cd /tmp -wget http://download.opensuse.org/repositories/home:/bajizs_cnt/openSUSE_11.1/i586/mydns-ng-1.2.8-1.1.i586.rpm -wget http://download.opensuse.org/repositories/home:/bajizs_cnt/openSUSE_11.1/i586/mydns-ng-mysql-1.2.8-1.1.i586.rpm -rpm -i mydns*.rpm - -chkconfig --add mydns - -6) Install vlogger and webalizer - -cd /tmp -wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz -tar xvfz vlogger-1.3.tar.gz -mv vlogger-1.3/vlogger /usr/sbin/ -rm -rf vlogger* -yast2 -i webalizer perl-DateManip - -6.1 Install fail2ban - -rpm -i http://download.opensuse.org/repositories/home:/leonardocf/openSUSE_11.0/i586/fail2ban-0.8.2-5.2.i586.rpm - - - - -6.2) Cleanup - -rm -f /tmp/*.rpm - -6.2 Install jailkit - -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz -tar xvfz jailkit-2.5.tar.gz -cd jailkit-2.5 -./configure -make -make install -cd .. -rm -rf jailkit-2.5* - - -7) Install ISPConfig 3 - -There are two possile scenarios, but not both: -7.1) Install the latest released version -7.2) Install directly from SVN - -7.1) Installation of beta 3 from tar.gz - - cd /tmp - wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz - tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz - cd ispconfig3_install/install/ - -7.2) Installation from SVN - - yast2 -i subversion - cd /tmp - svn export svn://svn.ispconfig.org/ispconfig3/trunk/ - cd trunk/install - - -7.1+7.2) Now proceed with the ISPConfig installation. - -Now start the installation process by executing: - -php -q install.php - -// Cleanup -rm -rf /tmp/trunk - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -yast2 -i squirrelmail - - diff --git a/docs/INSTALL_OPENSUSE_11_2.txt b/docs/INSTALL_OPENSUSE_11_2.txt deleted file mode 100644 index e6c9671b0cd23f2554f639c15a21e279d18b935b..0000000000000000000000000000000000000000 --- a/docs/INSTALL_OPENSUSE_11_2.txt +++ /dev/null @@ -1,173 +0,0 @@ - -Installation ------------ - -It is recommended to use a clean (fresh) OpenSUSE installatiom where you selected to install just the minimal packages. A Gnome or KDE desktop is not needed and will just slow down the server. Then follow the steps below to setup your server with ISPConfig 3: - -The following guide is for the 32Bit version of openSUSE, for 64Bit installations the package names may differ especially the names of downloaded rpm files. - -This guide will use Dovecote as pop3 / imap server and BIND as DNS Server. Dovecot and BIND are supported by ISPConfig version > 3.0.2 - -Install some basic packes and the compilers that we need later - -// yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ make vim telnet cron iptables iputils man man-pages nano pico - -yast2 -i findutils lynx wget vim telnet cron iptables iputils man man-pages nano pico sudo - - -1) Install Postfix, Divecot, MySQL with the following command line (on one line!): - -yast2 -i postfix postfix-mysql mysql mysql-client python libmysqlclient-devel dovecot12 dovecot12-backend-mysql - -chkconfig --add mysql -/etc/init.d/mysql start - -chkconfig --add postfix -/etc/init.d/postfix start - -chkconfig --add dovecot -/etc/init.d/dovecot start - -rpm -i http://download.opensuse.org/repositories/server:/mail/openSUSE_11.2/noarch/getmail-4.16.0-1.1.noarch.rpm - - -// Set the mysql database password: - -mysql_secure_installation - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql - -Open /etc/amavisd.conf... - -vi /etc/amavisd.conf - -... and add the $myhostname line with your correct hostname below the $mydomain line: - -[...] -$mydomain = 'example.com'; # a convenient default for other settings -$myhostname = "server1.$mydomain"; -[...] - -then execute: - -chkconfig --add amavis -chkconfig --add clamd -/etc/init.d/amavis start -/etc/init.d/clamd start - -2.1) Install apache2 - -yast2 -i apache2 apache2-mod_fcgid - -3) Install PHP5 modules (1 line!): - -yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5 - -rpm -i http://download.opensuse.org/repositories/server:/php/openSUSE_11.2/i586/suphp-0.7.1-3.1.i586.rpm - -Edit the file /etc/php5/cli/php.ini - -vi /etc/php5/cli/php.ini - -and change: - -error_reporting = E_ALL & ~E_DEPRECATED - -to: - -error_reporting = E_ALL & ~E_NOTICE - -Then run the following to enable the Apache modules: - -a2enmod suexec -a2enmod rewrite -a2enmod ssl -a2enmod actions -a2enmod suphp -a2enmod fcgid - -// Fix a suexec permission problem - -chown root:www /usr/sbin/suexec2 -chmod 4755 /usr/sbin/suexec2 - -// and start apache - -chkconfig --add apache2 -/etc/init.d/apache2 start - -// Comment out the /error/ alias in the apache error.conf file or the custom error pages in the websites wont work. - -Edit the file error.conf in the apache configuration directory and comment out the line: - -Alias /error/ "/usr/share/apache2/error/ - -By changing the line to: - -# Alias /error/ "/usr/share/apache2/error/ - -// Install phpmyadmin - -cd /tmp - -yast2 -i pwgen -rpm -i http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.2/noarch/phpMyAdmin-3.2.5-1.1.noarch.rpm - -// Warnings like "warning: phpMyAdmin-3.1.2-1.1.src.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" can be ignored. - -4) Install pure-ftpd and quota - -yast2 -i pure-ftpd quota - -chkconfig --add pure-ftpd -/etc/init.d/pure-ftpd start - - -5) Install Bind - -yast2 -i bind - -chkconfig --add named - -6) Install webalizer - -yast2 -i webalizer perl-DateManip - -6.1 Install fail2ban - -yast2 -i fail2ban - - -6.2 Install jailkit - -rpm -i http://download.opensuse.org/repositories/security/openSUSE_11.2/i586/jailkit-2.11-1.1.i586.rpm - -7) Install ISPConfig 3 - -cd /tmp -wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.tar.gz -tar xvfz ISPConfig-3.0.2.tar.gz -cd ispconfig3_install/install/ -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -rpm -i http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.2/noarch/squirrelmail-1.4.19-4.1.noarch.rpm - - diff --git a/docs/INSTALL_OPENSUSE_11_3.txt b/docs/INSTALL_OPENSUSE_11_3.txt deleted file mode 100644 index e036d6b11aea0b91d86af2621503a6e6a95bd7c2..0000000000000000000000000000000000000000 --- a/docs/INSTALL_OPENSUSE_11_3.txt +++ /dev/null @@ -1,195 +0,0 @@ - -Installation ------------ - -It is recommended to use a clean (fresh) OpenSUSE installatiom where you selected to install just the minimal packages. A Gnome or KDE desktop is not needed and will just slow down the server. Then follow the steps below to setup your server with ISPConfig 3: - -The following guide is for the 64Bit version of openSUSE, for 32Bit installations the package names may differ especially the names of downloaded rpm files. - -This guide will use Dovecote as pop3 / imap server and BIND as DNS Server. Dovecot and BIND are supported by ISPConfig version > 3.0.2 - -Before we start, update the installed packages - -zypper update - -Install some basic packes and the compilers that we need later - -yast2 -i findutils readline libgcc glibc-devel findutils-locate gcc flex lynx compat-readline4 db-devel wget gcc-c++ subversion make vim telnet cron iptables iputils man man-pages nano pico sudo - -1) Install Postfix, Divecot, MySQL with the following command line (on one line!): - -yast2 -i postfix postfix-mysql mysql mysql-community-server mysql-client python libmysqlclient-devel dovecot12 dovecot12-backend-mysql pwgen cron - -vi /etc/postfix/master.cf -========================= -[...] -tlsmgr unix - - n 1000? 1 tlsmgr -[...] - -ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot - -chkconfig --add mysql -/etc/init.d/mysql start - -chkconfig --add postfix -/etc/init.d/postfix start - -chkconfig --add dovecot -/etc/init.d/dovecot start - -rpm -ivh http://download.opensuse.org/repositories/server:/mail/openSUSE_11.3/noarch/getmail-4.20.0-1.1.noarch.rpm - -// Set the mysql database password: - -mysql_secure_installation - - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -yast2 -i amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql - -Open /etc/amavisd.conf... - -vi /etc/amavisd.conf - -... and add the $myhostname line with your correct hostname below the $mydomain line: - -[...] -$mydomain = 'example.com'; # a convenient default for other settings -$myhostname = "server1.$mydomain"; -[...] - -then execute: - -mkdir -p /var/run/clamav -ln -s /var/lib/clamav/clamd-socket /var/run/clamav/clamd - -# On 64Bit systems, run this command to symlink the dovecot library folder. Thats for 64Bit systems only, so do not exekute the ln command on 32bit systems. - -ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot - - -chkconfig --add amavis -chkconfig --add clamd -/etc/init.d/amavis start -/etc/init.d/clamd start - -2.1) Install apache2 - -yast2 -i apache2 apache2-mod_fcgid - -3) Install PHP5 modules (1 line!): - -yast2 -i php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5 - -rpm -ivh http://download.opensuse.org/repositories/server:/php/openSUSE_11.3/x86_64/suphp-0.7.1-3.1.x86_64.rpm - -Edit the file /etc/php5/cli/php.ini - -vi /etc/php5/cli/php.ini - -and change: - -error_reporting = E_ALL & ~E_DEPRECATED - -to: - -error_reporting = E_ALL & ~E_NOTICE - -Then run the following to enable the Apache modules: - -a2enmod suexec -a2enmod rewrite -a2enmod ssl -a2enmod actions -a2enmod suphp -a2enmod fcgid - -// Fix a suexec permission problem - -chown root:www /usr/sbin/suexec2 -chmod 4755 /usr/sbin/suexec2 - -// and start apache - -chkconfig --add apache2 -/etc/init.d/apache2 start - -// Comment out the /error/ alias in the apache error.conf file or the custom error pages in the websites wont work. - -Edit the file error.conf in the apache configuration directory and comment out the line: - -Alias /error/ "/usr/share/apache2/error/ - -By changing the line to: - -# Alias /error/ "/usr/share/apache2/error/ - -// Install phpmyadmin - -cd /tmp - -yast2 -i pwgen -rpm -ivh http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.3/noarch/phpMyAdmin-3.3.4-1.1.noarch.rpm - -// Warnings like "warning: phpMyAdmin-3.1.2-1.1.src.rpm: Header V3 DSA signature: NOKEY, key ID 367fe7fc" can be ignored. - -4) Install pure-ftpd and quota - -yast2 -i pure-ftpd quota - -chkconfig --add pure-ftpd -/etc/init.d/pure-ftpd start - - -5) Install Bind - -yast2 -i bind - -chkconfig --add named - -6) Install webalizer and awstats - -rpm -ivh http://download.opensuse.org/repositories/network:/utilities/openSUSE_11.3/noarch/awstats-6.95-3.1.noarch.rpm -yast2 -i webalizer perl-DateManip - -6.1 Install fail2ban - -yast2 -i fail2ban - - -6.2 Install jailkit and ntp - -rpm -ivh http://download.opensuse.org/repositories/security/openSUSE_11.3/x86_64/jailkit-2.11-1.2.x86_64.rpm - -yast2 -i xntp - -chkconfig --add ntp -/etc/init.d/ntp start - -7) Install ISPConfig 3 - -cd /tmp -wget http://www.ispconfig.org/downloads/ISPConfig-3.0.2.2.tar.gz -tar xvfz ISPConfig-3.0.2.2.tar.gz -cd ispconfig3_install/install/ -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - -Optional: - -Install a webbased Email Client - -rpm -i http://download.opensuse.org/repositories/server:/php:/applications/openSUSE_11.2/noarch/squirrelmail-1.4.19-4.1.noarch.rpm - - diff --git a/docs/INSTALL_POWERDNS_DEBIAN_5.txt b/docs/INSTALL_POWERDNS_DEBIAN_5.txt deleted file mode 100644 index 1db50497c2b9b9e15b1adbbde25be661bf66240a..0000000000000000000000000000000000000000 --- a/docs/INSTALL_POWERDNS_DEBIAN_5.txt +++ /dev/null @@ -1,7 +0,0 @@ - -# Installing PowerDNS on Debian ----------------------------------------------------------------------------- - -apt-get install pdns-server pdns-backend-mysql - - diff --git a/docs/INSTALL_UBUNTU_7.10.txt b/docs/INSTALL_UBUNTU_7.10.txt deleted file mode 100644 index be5b713d0853ae97a85ad1acf4065b90dab87be3..0000000000000000000000000000000000000000 --- a/docs/INSTALL_UBUNTU_7.10.txt +++ /dev/null @@ -1,111 +0,0 @@ -Installation ------------ - -It is recommended to use a clean (fresh) Ubuntu 7.10 (Gutsy Gibbon) install where you selected no additional packages or servers during setup. Then follow the steps below to setup your server with ISPConfig 3: - -Now become root user by executing: - -sudo su - -and entering the password of the user that you created during setup. - -Edit the file /etc/apt/sources.list and comment out the line beginning with "deb cdrom:....", then run: - -apt-get update -apt-get -u upgrade - - -1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin with the following command line (on one line!): - -apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl postfix-tls libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 - -Answer the questions from the package manager as follows. - -Create directories for web-based administration ? <-- No -General type of configuration? <-- Internet site -Mail name? <-- server1.mydomain.tld - SSL certificate required <-- Ok - -...use your own domain name of course ;) - -2) Install Amavisd-new, Spamassassin and Clamav (1 line!): - -apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl - - -3) Install apache, PHP5 and phpmyadmin (1 line!): - -apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli - -Then run the following to enable the Apache modules: - -a2enmod suexec -a2enmod rewrite -a2enmod ssl -a2enmod actions -a2enmod include - -4) Install pure-ftpd and quota - -First we have to make sure that the capability module is loaded in the kernel - -modprobe capability -echo 'capability' >> /etc/modules - -Then we install pureftpd and quota. - -apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool - -echo 'yes' > /etc/pure-ftpd/conf/DontResolve - -5) Install mydns - -apt-get install mydns-mysql - -The mydns installer is a bit tricky, you will have to select to create a new database for mydns and use a existing mysql user, e.g. the mysql root user. This database is only to fullfill the requirements for the debian pacakge during installation and will not be used by ISPConfig later. ISPConfig will automatically change the mydns configuration files to use the ISPConfig database. - - -6) Install vlogger and webalizer - -apt-get install vlogger webalizer awstats geoip-bin - - -7) Install ISPConfig 3 - -There are two possile scenarios, but not both: -1) Install the latest alpha -2) Install directly from SVN - -apt-get install php5-cli - -1) Installation of beta 3 - - cd /tmp - wget http://www.ispconfig.org/downloads/ISPConfig_3.0.0.9-rc2.tar.gz - tar xvfz ISPConfig_3.0.0.9-rc2.tar.gz - cd ispconfig3_install/install/ - -2) Installation from SVN - - apt-get install subversion - cd /tmp - svn export svn://svn.ispconfig.org/ispconfig3/trunk/ - cd trunk/install - - -1+2) Now proceed with the ISPConfig installation. - -Now start the installation process by executing: - -php -q install.php - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://192.168.0.100:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. diff --git a/docs/INSTALL_UBUNTU_8.04.txt b/docs/INSTALL_UBUNTU_8.04.txt deleted file mode 100644 index dec6586e7ec4ce3c846df0bb3dfc372cf83fd97f..0000000000000000000000000000000000000000 --- a/docs/INSTALL_UBUNTU_8.04.txt +++ /dev/null @@ -1,438 +0,0 @@ -=============================================================================== - -Installation -=============================================================================== - -It is recommended to use a clean (fresh) Ubuntu 8.04 LTS install where you selected no additional packages or servers during setup. Then follow the steps below to setup your server with ISPConfig 3: - -1) Prepare your OS -******************************************************************************* -Become root user by executing: -___ -sudo su -___ - -and entering the password of the user that you created during setup. - -Edit the file /etc/apt/sources.list and comment out the line beginning with "deb cdrom:....", then run: -___ -apt-get update -apt-get -u upgrade -___ - -1.1) Change The Default Shell -******************************************************************************* -There are alway Shell-Scripts which are not POSIX-compatible and only run when using BASH instead of DASH! -___ -sudo dpkg-reconfigure dash - <-- ANSWER WITH: No -___ - -1.1) Install some software -******************************************************************************* -___ -apt-get install wget -___ - - -2) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin -******************************************************************************* -(1 line!) -___ -apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 -___ - -Answer the questions from the package manager as follows. - -Enter the mysql root password. <-- Enter your mysql-root Password -Create directories for web-based administration ? <-- No -General type of configuration? <-- Internet site -Mail name? <-- server1.mydomain.tld -SSL certificate required <-- Ok - -... use your own domain name of course ;) - -Authentication will be done by saslauthd. We have to change a few things to make it work properly. Because Postfix runs chrooted in /var/spool/postfix we have to do the following: -___ -echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf -echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf - -mkdir -p /var/spool/postfix/var/run/saslauthd -___ -Now we have to edit /etc/default/saslauthd in order to activate saslauthd. Set -### -START=yes -### - -and change the line OPTIONS="-c -m /var/run/saslauthd" to -### -OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" -### - -Next add the postfix user to the sasl group (this makes sure that Postfix has the permission to access saslauthd): -___ -adduser postfix sasl -___ - -Now restart Postfix and start saslauthd: -___ -/etc/init.d/postfix restart -/etc/init.d/saslauthd start -___ - - -3) Install Amavisd-new, Spamassassin and Clamav -******************************************************************************* -(1 line!) -___ -apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl -___ - - -4) Install apache, PHP5 and phpmyadmin -******************************************************************************* -(1 line!) -___ -apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli -___ - -Then run the following to enable the Apache modules: -___ -a2enmod suexec -a2enmod rewrite -a2enmod ssl -a2enmod include -a2enmod actions -a2enmod headers -___ - -4.1) Optional: Install SuPHP -******************************************************************************* -___ -apt-get install libapache2-mod-suphp -vi /etc/suphp/suphp.conf -___ - -set docroot to: -### -docroot=/var/www/clients -### - -Change: application/x-httpd-php=php:/usr/bin/php-cgi to: -### -x-httpd-php=php:/usr/bin/php-cgi -### - -4.2) Optional: Install Fast-CGI -******************************************************************************* -___ -apt-get install libapache2-mod-fcgid -___ - - -5) Install pure-ftpd and quota -******************************************************************************* -___ -apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool -echo 'yes' > /etc/pure-ftpd/conf/DontResolve -___ - - -6) Install mydns -******************************************************************************* -___ -apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev -cd /tmp -wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.15.tar.gz -tar xvfz mydns-1.2.8.15.tar.gz -cd mydns-1.2.8 -./configure -make -make install -___ - -Now create the start / stop script for mydns: -___ -vi /etc/init.d/mydns -___ - -and enter the following lines (between the "---"-lines): - -------------------------------------------------------------------------------- -#! /bin/bash -# -# mydns Start the MyDNS server -# -# Author: Philipp Kern . -# Based upon skeleton 1.9.4 by Miquel van Smoorenburg -# and Ian Murdock . -# - -set -e - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/local/sbin/mydns -NAME=mydns -DESC="DNS server" - -SCRIPTNAME=/etc/init.d/$NAME - -# Gracefully exit if the package has been removed. -test -x $DAEMON || exit 0 - -case "$1" in - start) - echo -n "Starting $DESC: $NAME" - start-stop-daemon --start --quiet \ - --exec $DAEMON -- -b - echo "." - ;; - stop) - echo -n "Stopping $DESC: $NAME" - start-stop-daemon --stop --oknodo --quiet \ - --exec $DAEMON - echo "." - ;; - reload|force-reload) - echo -n "Reloading $DESC configuration ..." - start-stop-daemon --stop --signal HUP --quiet \ - --exec $DAEMON - echo "done." - ;; - restart) - echo -n "Restarting $DESC: $NAME" - start-stop-daemon --stop --quiet --oknodo \ - --exec $DAEMON - sleep 1 - start-stop-daemon --start --quiet \ - --exec $DAEMON -- -b - echo "." - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - exit 1 - ;; -esac - -exit 0 -------------------------------------------------------------------------------- - -now execute: -___ -chmod +x /etc/init.d/mydns -update-rc.d mydns defaults -___ - - -7) Install vlogger, webalizer and firewall -******************************************************************************* -___ -apt-get install vlogger webalizer bastille awstats geoip-bin -___ - -7.1) OPTIONAL: Installing Jailkit -******************************************************************************* -___ -apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.7.tar.gz -tar xvfz jailkit-2.7.tar.gz -cd jailkit-2.7 -./debian/rules binary -cd .. -dpkg -i jailkit_2.7-1_i386.deb -rm -rf jailkit-2.7* -___ - - -8) Install ISPConfig 3 -******************************************************************************* -There are two possile scenarios a) or b), but not both: - -a) Installation of beta 3 -___ -cd /tmp -wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz -tar xvfz ISPConfig_3.0.0.9-rc2.tar.gz -cd ispconfig3_install/install/ -___ - -b) Installation from SVN -___ -apt-get install subversion -cd /tmp -svn export svn://svn.ispconfig.org/ispconfig3/trunk/ -cd trunk/install -___ - -after a) or b) - -proceed with the ISPConfig installation. Now start the installation process by executing: -___ -php -q install.php -___ - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://server1.mydomain.tld:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - - -8) Further Configuration-Tips -******************************************************************************* -8.1) Apache -******************************************************************************* -edit /etc/apache2/sites-available/default -change the first lines to match your system. - -Replace 0.0.0.0 with your IP. -Change Document root to /var/www/apache2-default/ -This directory is now the standard-hompage for your Server. -### -NameVirtualHost 0.0.0.0:80 - - - ServerAdmin webmaster@localhost - - DocumentRoot /var/www/apache2-default/ - -### - -8.2) Postfix - Aliases -******************************************************************************* -change /etc/aliases -### -# See man 5 aliases for format -postmaster: root -clamav: root - -root: webmaster@yourdomain.tld -### - -Then run: -___ -newaliases -___ - -8.3) Php.ini -******************************************************************************* -I changed the following in the php.ini-Files in the following directorys: -/etc/php5/apache2/ -/etc/php5/cgi/ -/etc/php5/cli/ - -It is important to search the following parameters in the php.ini and replace them!!! -Don't just copy the whole stuff to the end of the file. - -### -memory_limit = 64M ; Maximum amount of memory a script may consume (16MB) - -display_errors = Off - -log_errors = On - -upload_max_filesize = 32M - -allow_url_fopen = On -allow_url_include = On - -date.timezone = Europe/Berlin - -extension = imap.so -extension = mcrypt.so - -;Typo3 fast-cgi PHP5 bug fix -cgi.fix_pathinfo = 0 - -### - -add to the end of the file: -### -[htscanner] -Extension = "htscanner.so" -config_file = ".htaccess" -default_docroot = "/var/www" -### - - -9) Additional Software -******************************************************************************* -9.1) NTP, Denyhosts -******************************************************************************* -__ -apt-get install ntp denyhosts -__ - -in /etc/ntp.conf replace the server-line with: -### -server 0.pool.ntp.org -server 1.pool.ntp.org -server 2.pool.ntp.org -### - -9.2) Typo3 - typo3.org -******************************************************************************* -___ -apt-get install imagemagick php5-gd php5-imagick gs gs-esp -___ - -There is a bug in the php5-library under Ubuntu 8.04. You can fix it by changing "cgi.fix_pathinfo = 0" in the php.ini. Look at 8.4). - -10.2) Horde (Webmail) - horde.org -******************************************************************************* -First of all, install the horde3 and Imp4 packages (Ubuntu/Debian) -___ -apt-get install horde3 imp4 gollem kronolith2 mnemo2 nag2 turba2 -pear install --onlyreqdeps Log Mail Mail_Mime MDB2 File Date -___ - -It is then necessary to setup an Alias for Apache. -If you want horde only on single pages, that are created with ispc3: -Add the following line to ISPConfig->Sites->Web Domain->Options->Apache directives -If you want to access webmail on all pages add the following line to /etc/apache2/apache2.conf -### -Alias /horde3 /usr/share/horde3 -### - -Allow Apache to write horde configuration files : -___ -chown -R www-data:www-data /etc/horde -___ - -Important parameters to change are (in Horde setup) : -### -Horde URL (change it to /horde3) -Enable Database Access. Do Not use MySQL Improved (4+), my attempts at using it failed. MySQL Standard runs fine however -Enable Authentication. I recommend IMAP authentication (something like {localhost:143/imap/notls}. Do not forget the /notls, not specifying failed on my setup). Also make sure to add your username to the list of Administrators, otherwise, you won’t have access to horde/imp4 parameters. Using anything else than IMAP seeemed to fail on my setup -Generate the configuration -Horde should now be setup. You now have to configure imp4 -generate a configuration using the horde administration panel -modify the /etc/horde/imp4/servers.php file. Instruction are given inside the file concerning the syntax. If you run Courier-IMAP, and want Imp to automatically authenticate using horde credentials : -$servers[’imap’] = array( -‘name’ => ‘IMAP Server’, -’server’ => ‘localhost’, -‘hordeauth’ => true, -‘protocol’ => ‘imap/notls’, -‘port’ => 143, -‘folders’ => ‘INBOX.’, -‘namespace’ => ‘’, -‘maildomain’ => ‘domain.com’, -’smtphost’ => ‘localhost’, -’smtpport’ => 25, -‘realm’ => ‘’, -‘preferred’ => ‘’, -‘dotfiles’ => false, -‘hierarchies’ => array() -); -### - - -11) have fun and drink a cup of coffee -******************************************************************************* -:-) diff --git a/docs/INSTALL_UBUNTU_8.10.txt b/docs/INSTALL_UBUNTU_8.10.txt deleted file mode 100644 index dc7874ce339f5c46af3beeba35985145a90ff91b..0000000000000000000000000000000000000000 --- a/docs/INSTALL_UBUNTU_8.10.txt +++ /dev/null @@ -1,450 +0,0 @@ -=============================================================================== - -Installation -=============================================================================== - -It is recommended to use a clean (fresh) Ubuntu 8.04 LTS install where you selected no additional packages or servers during setup. Then follow the steps below to setup your server with ISPConfig 3: - -1) Prepare your OS -******************************************************************************* -Become root user by executing: -___ -sudo su -___ - -and entering the password of the user that you created during setup. - -Edit the file /etc/apt/sources.list and comment out the line beginning with "deb cdrom:....", then run: -___ -apt-get update -apt-get -u upgrade -___ - -1.1) Change The Default Shell -******************************************************************************* -There are alway Shell-Scripts which are not POSIX-compatible and only run when using BASH instead of DASH! -___ -sudo dpkg-reconfigure dash - <-- ANSWER WITH: No -___ - -1.1) Install some software -******************************************************************************* -___ -apt-get install wget -___ - - -2) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin -******************************************************************************* -(1 line!) -___ -apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl maildrop getmail4 -___ - -Answer the questions from the package manager as follows. - -Enter the mysql root password. <-- Enter your mysql-root Password -Create directories for web-based administration ? <-- No -General type of configuration? <-- Internet site -Mail name? <-- server1.mydomain.tld -SSL certificate required <-- Ok - -... use your own domain name of course ;) - -Authentication will be done by saslauthd. We have to change a few things to make it work properly. Because Postfix runs chrooted in /var/spool/postfix we have to do the following: -___ -echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf -echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf - -mkdir -p /var/spool/postfix/var/run/saslauthd -chmod 4755 /var/run/courier/authdaemon - -___ -Now we have to edit /etc/default/saslauthd in order to activate saslauthd. Set -### -START=yes -### - -and change the line OPTIONS="-c -m /var/run/saslauthd" to -### -OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r" -### - -Next add the postfix user to the sasl group (this makes sure that Postfix has the permission to access saslauthd): -___ -adduser postfix sasl -___ - -Now restart Postfix and start saslauthd: -___ -/etc/init.d/postfix restart -/etc/init.d/saslauthd start -___ - - -3) Install Amavisd-new, Spamassassin and Clamav -******************************************************************************* -(1 line!) -___ -apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl -___ - - -4) Install apache, PHP5 and phpmyadmin -******************************************************************************* -(1 line!) -___ -apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli -___ - -Then run the following to enable the Apache modules: -___ -a2enmod suexec -a2enmod rewrite -a2enmod ssl -a2enmod include -a2enmod actions -a2enmod headers -___ - -4.1) Optional: Install SuPHP -******************************************************************************* -___ -apt-get install libapache2-mod-suphp -vi /etc/suphp/suphp.conf -___ - -set docroot to: -### -docroot=/var/clients -### - -Change: application/x-httpd-php=php:/usr/bin/php-cgi to: -### -x-httpd-php=php:/usr/bin/php-cgi -### - -4.2) Optional: Install Fast-CGI -******************************************************************************* -___ -apt-get install libapache2-mod-fcgid -___ - - -5) Install pure-ftpd and quota -******************************************************************************* -___ -apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool -echo 'yes' > /etc/pure-ftpd/conf/DontResolve -___ - - -6) Install mydns -******************************************************************************* -___ -apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev -cd /tmp -wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.15.tar.gz -tar xvfz mydns-1.2.8.15.tar.gz -cd mydns-1.2.8 -./configure -make -make install -___ - -Now create the start / stop script for mydns: -___ -vi /etc/init.d/mydns -___ - -and enter the following lines (between the "---"-lines): - -------------------------------------------------------------------------------- -#! /bin/bash -# -# mydns Start the MyDNS server -# -# Author: Philipp Kern . -# Based upon skeleton 1.9.4 by Miquel van Smoorenburg -# and Ian Murdock . -# -### BEGIN INIT INFO -# Provides: MyDNS -# Required-Start: $syslog -# Should-Start: -# Required-Stop: -# Should-Stop: -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: MyDNS Server -# Description: MyDNS DNS Server -### END INIT INFO - -set -e - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/local/sbin/mydns -NAME=mydns -DESC="DNS server" - -SCRIPTNAME=/etc/init.d/$NAME - -# Gracefully exit if the package has been removed. -test -x $DAEMON || exit 0 - -case "$1" in - start) - echo -n "Starting $DESC: $NAME" - start-stop-daemon --start --quiet \ - --exec $DAEMON -- -b - echo "." - ;; - stop) - echo -n "Stopping $DESC: $NAME" - start-stop-daemon --stop --oknodo --quiet \ - --exec $DAEMON - echo "." - ;; - reload|force-reload) - echo -n "Reloading $DESC configuration ..." - start-stop-daemon --stop --signal HUP --quiet \ - --exec $DAEMON - echo "done." - ;; - restart) - echo -n "Restarting $DESC: $NAME" - start-stop-daemon --stop --quiet --oknodo \ - --exec $DAEMON - sleep 1 - start-stop-daemon --start --quiet \ - --exec $DAEMON -- -b - echo "." - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - exit 1 - ;; -esac - -exit 0 -------------------------------------------------------------------------------- - -now execute: -___ -chmod +x /etc/init.d/mydns -update-rc.d mydns defaults -___ - - -7) Install vlogger, webalizer and firewall -******************************************************************************* -___ -apt-get install vlogger webalizer bastille awstats geoip-bin -___ - -7.1) OPTIONAL: Installing Jailkit -******************************************************************************* -___ -apt-get install build-essential autoconf automake1.9 libtool flex bison -cd /tmp -wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz -tar xvfz jailkit-2.5.tar.gz -cd jailkit-2.5 -./configure -make -make install -___ - - -8) Install ISPConfig 3 -******************************************************************************* -There are two possile scenarios a) or b), but not both: - -a) Installation of beta 3 -___ -cd /tmp -wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz -tar xvfz ISPConfig_3.0.0.9-rc2.tar.gz -cd ispconfig3_install/install/ -___ - -b) Installation from SVN -___ -apt-get install subversion -cd /tmp -svn export svn://svn.ispconfig.org/ispconfig3/trunk/ -cd trunk/install -___ - -after a) or b) - -proceed with the ISPConfig installation. Now start the installation process by executing: -___ -php -q install.php -___ - -The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not necessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!): - -http://server1.mydomain.tld:8080/ - -the default login is: - -user: admin -password: admin - -In case you get a permission denied error from apache, please restart the apache webserver process. - - -8) Further Configuration-Tips -******************************************************************************* -8.1) Apache -******************************************************************************* -edit /etc/apache2/sites-available/default -change the first lines to match your system. - -Replace 0.0.0.0 with your IP. -Change Document root to /var/www/apache2-default/ -This directory is now the standard-hompage for your Server. -### -NameVirtualHost 0.0.0.0:80 - - - ServerAdmin webmaster@localhost - - DocumentRoot /var/www/apache2-default/ - -### - -8.2) Postfix - Aliases -******************************************************************************* -change /etc/aliases -### -# See man 5 aliases for format -postmaster: root -clamav: root - -root: webmaster@yourdomain.tld -### - -Then run: -___ -newaliases -___ - -8.3) Php.ini -******************************************************************************* -I changed the following in the php.ini-Files in the following directorys: -/etc/php5/apache2/ -/etc/php5/cgi/ -/etc/php5/cli/ - -It is important to search the following parameters in the php.ini and replace them!!! -Don't just copy the whole stuff to the end of the file. - -### -memory_limit = 64M ; Maximum amount of memory a script may consume (16MB) - -display_errors = Off - -log_errors = On - -upload_max_filesize = 32M - -allow_url_fopen = On -allow_url_include = On - -date.timezone = Europe/Berlin - -extension = imap.so -extension = mcrypt.so - -;Typo3 fast-cgi PHP5 bug fix -cgi.fix_pathinfo = 0 - -### - -add to the end of the file: -### -[htscanner] -Extension = "htscanner.so" -config_file = ".htaccess" -default_docroot = "/var/www" -### - - -9) Additional Software -******************************************************************************* -9.1) NTP, Denyhosts -******************************************************************************* -__ -apt-get install ntp denyhosts -__ - -in /etc/ntp.conf replace the server-line with: -### -server 0.pool.ntp.org -server 1.pool.ntp.org -server 2.pool.ntp.org -### - -9.2) Typo3 - typo3.org -******************************************************************************* -___ -apt-get install imagemagick php5-gd php5-imagick gs gs-esp -___ - -There is a bug in the php5-library under Ubuntu 8.04. You can fix it by changing "cgi.fix_pathinfo = 0" in the php.ini. Look at 8.4). - -10.2) Horde (Webmail) - horde.org -******************************************************************************* -First of all, install the horde3 and Imp4 packages (Ubuntu/Debian) -___ -apt-get install horde3 imp4 gollem kronolith2 mnemo2 nag2 turba2 -pear install --onlyreqdeps Log Mail Mail_Mime MDB2 File Date -___ - -It is then necessary to setup an Alias for Apache. -If you want horde only on single pages, that are created with ispc3: -Add the following line to ISPConfig->Sites->Web Domain->Options->Apache directives -If you want to access webmail on all pages add the following line to /etc/apache2/apache2.conf -### -Alias /horde3 /usr/share/horde3 -### - -Allow Apache to write horde configuration files : -___ -chown -R www-data:www-data /etc/horde -___ - -Important parameters to change are (in Horde setup) : -### -Horde URL (change it to /horde3) -Enable Database Access. Do Not use MySQL Improved (4+), my attempts at using it failed. MySQL Standard runs fine however -Enable Authentication. I recommend IMAP authentication (something like {localhost:143/imap/notls}. Do not forget the /notls, not specifying failed on my setup). Also make sure to add your username to the list of Administrators, otherwise, you won’t have access to horde/imp4 parameters. Using anything else than IMAP seeemed to fail on my setup -Generate the configuration -Horde should now be setup. You now have to configure imp4 -generate a configuration using the horde administration panel -modify the /etc/horde/imp4/servers.php file. Instruction are given inside the file concerning the syntax. If you run Courier-IMAP, and want Imp to automatically authenticate using horde credentials : -$servers[’imap’] = array( -‘name’ => ‘IMAP Server’, -’server’ => ‘localhost’, -‘hordeauth’ => true, -‘protocol’ => ‘imap/notls’, -‘port’ => 143, -‘folders’ => ‘INBOX.’, -‘namespace’ => ‘’, -‘maildomain’ => ‘domain.com’, -’smtphost’ => ‘localhost’, -’smtpport’ => 25, -‘realm’ => ‘’, -‘preferred’ => ‘’, -‘dotfiles’ => false, -‘hierarchies’ => array() -); -### - - -11) have fun and drink a cup of coffee -******************************************************************************* -:-) diff --git a/docs/LOCALIZE_DEBIAN_LENNY.txt b/docs/LOCALIZE_DEBIAN_LENNY.txt deleted file mode 100644 index e66e45300b72d0a528ffe368878fb593c6e0d12e..0000000000000000000000000000000000000000 --- a/docs/LOCALIZE_DEBIAN_LENNY.txt +++ /dev/null @@ -1,144 +0,0 @@ -# For adding more supported languages to server, -# in console, rerun locale-config by calling: - -dpkg-reconfigure locales - -# and either choise what you need, or tag "All languages" on top. Note at when having lots of locales in machine, it will slow down -# installing and upgrading multilingual applications. You can (and should) leave system default as it is. - -#For now my "locale -a" outputs this: - -bokmal -bokmål -C -de_DE -de_DE@euro -de_DE.iso88591 -de_DE.iso885915@euro -de_DE.utf8 -deutsch -en_US -en_US.iso88591 -en_US.iso885915 -en_US.utf8 -fi_FI -fi_FI@euro -fi_FI.iso88591 -fi_FI.iso885915@euro -fi_FI.utf8 -finnish -français -french -fr_FR -fr_FR@euro -fr_FR.iso88591 -fr_FR.iso885915@euro -fr_FR.utf8 -german -nb_NO -nb_NO.iso88591 -nb_NO.utf8 -no_NO -no_NO.ISO-8859-1 -norwegian -POSIX -sv_SE -sv_SE.iso88591 -sv_SE.iso885915 -sv_SE.utf8 -swedish - - -# Edit /etc/apache2/conf.d/charset and add/edit following section: - - AddDefaultCharset off - - # official list of charset names and their respective RFCs. - # - AddCharset us-ascii .ascii .us-ascii - AddCharset ISO-8859-1 .iso8859-1 .latin1 - AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen - AddCharset ISO-8859-3 .iso8859-3 .latin3 - AddCharset ISO-8859-4 .iso8859-4 .latin4 - AddCharset ISO-8859-5 .iso8859-5 .cyr .iso-ru - AddCharset ISO-8859-6 .iso8859-6 .arb .arabic - AddCharset ISO-8859-7 .iso8859-7 .grk .greek - AddCharset ISO-8859-8 .iso8859-8 .heb .hebrew - AddCharset ISO-8859-9 .iso8859-9 .latin5 .trk - AddCharset ISO-8859-10 .iso8859-10 .latin6 - AddCharset ISO-8859-13 .iso8859-13 - AddCharset ISO-8859-14 .iso8859-14 .latin8 - AddCharset ISO-8859-15 .iso8859-15 .latin9 - AddCharset ISO-8859-16 .iso8859-16 .latin10 - AddCharset ISO-2022-JP .iso2022-jp .jis - AddCharset ISO-2022-KR .iso2022-kr .kis - AddCharset ISO-2022-CN .iso2022-cn .cis - AddCharset Big5 .Big5 .big5 .b5 - AddCharset cn-Big5 .cn-big5 - # For russian, more than one charset is used (depends on client, mostly): - AddCharset WINDOWS-1251 .cp-1251 .win-1251 - AddCharset CP866 .cp866 - AddCharset KOI8 .koi8 - AddCharset KOI8-E .koi8-e - AddCharset KOI8-r .koi8-r .koi8-ru - AddCharset KOI8-U .koi8-u - AddCharset KOI8-ru .koi8-uk .ua - AddCharset ISO-10646-UCS-2 .ucs2 - AddCharset ISO-10646-UCS-4 .ucs4 - AddCharset UTF-7 .utf7 - AddCharset UTF-8 .utf8 - AddCharset UTF-16 .utf16 - AddCharset UTF-16BE .utf16be - AddCharset UTF-16LE .utf16le - AddCharset UTF-32 .utf32 - AddCharset UTF-32BE .utf32be - AddCharset UTF-32LE .utf32le - AddCharset euc-cn .euc-cn - AddCharset euc-gb .euc-gb - AddCharset euc-jp .euc-jp - AddCharset euc-kr .euc-kr - #Not sure how euc-tw got in - IANA doesn't list it??? - AddCharset EUC-TW .euc-tw - AddCharset gb2312 .gb2312 .gb - AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2 - AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4 - AddCharset shift_jis .shift_jis .sjis - - AddLanguage ca .ca - AddLanguage cs .cz .cs - AddLanguage da .dk - AddLanguage de .de - AddLanguage el .el - AddLanguage en .en - AddLanguage eo .eo - AddLanguage es .es - AddLanguage et .et - AddLanguage fi .fi - AddLanguage fr .fr - AddLanguage he .he - AddLanguage hr .hr - AddLanguage it .it - AddLanguage ja .ja - AddLanguage ko .ko - AddLanguage ltz .ltz - AddLanguage nl .nl - AddLanguage nn .nn - AddLanguage no .no - AddLanguage pl .po - AddLanguage pt .pt - AddLanguage pt-BR .pt-br - AddLanguage ru .ru - AddLanguage sv .sv - AddLanguage zh-CN .zh-cn - AddLanguage zh-TW .zh-tw - - -#this information could also be in two sections in there, and if most of it looks -#like to be on place already, most important change is "AddDefaultCharset off" - -# After modification, restart Apache service - -/etc/init.d/apache2 restart - - - diff --git a/docs/CHROOTED_DEBIAN_5.0.txt b/docs/under_development/CHROOTED_DEBIAN_5.0.txt similarity index 100% rename from docs/CHROOTED_DEBIAN_5.0.txt rename to docs/under_development/CHROOTED_DEBIAN_5.0.txt diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index 114ce647fc4431678247d16226f7c14a39f84931..ac2319aae6e6f753be285b6a5ec023d3dd52346d 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -670,10 +670,12 @@ class installer_dist extends installer_base { $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; - // copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.conf.master', 'tpl/apache_ispconfig.conf.master'); + $tpl = new tpl('apache_ispconfig.conf.master'); + $tpl->setVar('apache_version',getapacheversion()); + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); - + $ip_addresses = array(); + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -686,15 +688,17 @@ class installer_dist extends installer_base { foreach($ports as $port) { $port = intval($port); if($port > 0 && $port < 65536 && $ip_address != '') { - $content .= 'NameVirtualHost '.$ip_address.":".$port."\n"; + $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); } } } } } + + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); - $content .= "\n"; - wf($vhost_conf_dir.'/ispconfig.conf', $content); + wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); + unset($tpl); if(!@is_link($vhost_conf_enabled_dir."/000-ispconfig.conf")) { exec("ln -s ".$vhost_conf_dir."/ispconfig.conf ".$vhost_conf_enabled_dir."/000-ispconfig.conf"); @@ -1058,28 +1062,30 @@ class installer_dist extends installer_base { // Dont just copy over the virtualhost template but add some custom settings - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.vhost.master', "tpl/apache_ispconfig.vhost.master"); - $content = str_replace('{vhost_port}', $conf['apache']['vhost_port'], $content); + $tpl = new tpl('apache_ispconfig.vhost.master'); + $tpl->setVar('vhost_port',$conf['apache']['vhost_port']); // comment out the listen directive if port is 80 or 443 if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) { - $content = str_replace('{vhost_port_listen}', '#', $content); + $tpl->setVar('vhost_port_listen','#'); } else { - $content = str_replace('{vhost_port_listen}', '', $content); + $tpl->setVar('vhost_port_listen',''); } - if(is_file('/usr/local/ispconfig/interface/ssl/ispserver.crt') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_comment}', '', $content); + if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { + $tpl->setVar('ssl_comment',''); } else { - $content = str_replace('{ssl_comment}', '#', $content); + $tpl->setVar('ssl_comment','#'); } if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) { - $content = str_replace('{ssl_bundle_comment}', '', $content); + $tpl->setVar('ssl_bundle_comment',''); } else { - $content = str_replace('{ssl_bundle_comment}', '#', $content); + $tpl->setVar('ssl_bundle_comment','#'); } + + $tpl->setVar('apache_version',getapacheversion()); - wf("$vhost_conf_dir/ispconfig.vhost", $content); + wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); //copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost"); //* and create the symlink diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index 3ee39390449e0d0a4ee7b25752720a3f3d21608b..88a5640864f0c7936625ac3c94b9d91830eba55e 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -519,6 +519,7 @@ class installer extends installer_base //* Copy the ISPConfig configuration include + /* $content = $this->get_template_file('apache_ispconfig.conf', true); $records = $this->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ".$conf["server_id"]." AND virtualhost = 'y'"); @@ -531,6 +532,37 @@ class installer extends installer_base } $this->write_config_file($conf['apache']['vhost_conf_dir'].'/000-ispconfig.conf', $content); + */ + + $tpl = new tpl('apache_ispconfig.conf.master'); + $tpl->setVar('apache_version',getapacheversion()); + + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); + $ip_addresses = array(); + + if(is_array($records) && count($records) > 0) { + foreach($records as $rec) { + if($rec['ip_type'] == 'IPv6') { + $ip_address = '['.$rec['ip_address'].']'; + } else { + $ip_address = $rec['ip_address']; + } + $ports = explode(',', $rec['virtualhost_port']); + if(is_array($ports)) { + foreach($ports as $port) { + $port = intval($port); + if($port > 0 && $port < 65536 && $ip_address != '') { + $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); + } + } + } + } + } + + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); + + wf($conf['apache']['vhost_conf_dir'].'/000-ispconfig.conf', $tpl->grab()); + unset($tpl); //* Gentoo by default does not include .vhost files. Add include line to config file. $content = rf($conf['apache']['config_file']); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index c66d8886cd680a28171f324c7d25a71dc0f04e33..230f4eb1e69913516a1e2f9666e3b499badd300e 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -685,10 +685,12 @@ class installer_dist extends installer_base { $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; - //copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.conf.master', 'tpl/apache_ispconfig.conf.master'); + $tpl = new tpl('apache_ispconfig.conf.master'); + $tpl->setVar('apache_version',getapacheversion()); + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); - + $ip_addresses = array(); + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -701,15 +703,17 @@ class installer_dist extends installer_base { foreach($ports as $port) { $port = intval($port); if($port > 0 && $port < 65536 && $ip_address != '') { - $content .= 'NameVirtualHost '.$ip_address.":".$port."\n"; + $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); } } } } } - - $content .= "\n"; - wf($vhost_conf_dir.'/ispconfig.conf', $content); + + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); + + wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); + unset($tpl); if(!@is_link($vhost_conf_enabled_dir."/000-ispconfig.conf")) { exec("ln -s ".$vhost_conf_dir."/ispconfig.conf ".$vhost_conf_enabled_dir."/000-ispconfig.conf"); @@ -1114,31 +1118,30 @@ class installer_dist extends installer_base { // Dont just copy over the virtualhost template but add some custom settings - - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.vhost.master', "tpl/apache_ispconfig.vhost.master"); - $content = str_replace('{vhost_port}', $conf['apache']['vhost_port'], $content); + $tpl = new tpl('apache_ispconfig.vhost.master'); + $tpl->setVar('vhost_port',$conf['apache']['vhost_port']); // comment out the listen directive if port is 80 or 443 if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) { - $content = str_replace('{vhost_port_listen}', '#', $content); + $tpl->setVar('vhost_port_listen','#'); } else { - $content = str_replace('{vhost_port_listen}', '', $content); + $tpl->setVar('vhost_port_listen',''); } - if(is_file('/usr/local/ispconfig/interface/ssl/ispserver.crt') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_comment}', '', $content); + if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { + $tpl->setVar('ssl_comment',''); } else { - $content = str_replace('{ssl_comment}', '#', $content); + $tpl->setVar('ssl_comment','#'); } if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) { - $content = str_replace('{ssl_bundle_comment}', '', $content); + $tpl->setVar('ssl_bundle_comment',''); } else { - $content = str_replace('{ssl_bundle_comment}', '#', $content); + $tpl->setVar('ssl_bundle_comment','#'); } + + $tpl->setVar('apache_version',getapacheversion()); - $content = str_replace('/var/www/', '/srv/www/', $content); - - wf("$vhost_conf_dir/ispconfig.vhost", $content); + wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); //if(!is_file('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) { $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig_fcgi_starter.master', 'tpl/apache_ispconfig_fcgi_starter.master'); diff --git a/install/install.php b/install/install.php index 22bd4a780412d1ac6827c73566fa5ba0cb40b0e3..9ae525c911f2340eb80ab43b3e3eb545bae8e5c2 100644 --- a/install/install.php +++ b/install/install.php @@ -65,6 +65,9 @@ if(realpath(dirname(__FILE__)) != $cur_dir) { define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log'); define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../')); +//** Include the templating lib +require_once 'lib/classes/tpl.inc.php'; + //** Check for existing installation /*if(is_dir("/usr/local/ispconfig")) { die('We will stop here. There is already a ISPConfig installation, use the update script to update this installation.'); diff --git a/install/lib/classes/tpl.inc.php b/install/lib/classes/tpl.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..73ff19230b6b95f83e8e32d26b86f1e8f243fec8 --- /dev/null +++ b/install/lib/classes/tpl.inc.php @@ -0,0 +1,1431 @@ + + * @package vLIB + * @access public + * @see vlibTemplate.html + */ + + +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP version 4.0 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 2002 Active Fish Group | +// +----------------------------------------------------------------------+ +// | Authors: Kelvin Jones | +// +----------------------------------------------------------------------+ +// +// $Id: class.tpl.inc.php,v 1.1 2003/07/08 12:31:10 platinum Exp $ + +//** check and avoid multiple loading of class +if (!defined('vlibTemplateClassLoaded')) { + + define('vlibTemplateClassLoaded', 1); + include_once ISPC_INSTALL_ROOT.'/install/lib/classes/tpl_error.inc.php'; + include_once ISPC_INSTALL_ROOT.'/install/lib/classes/tpl_ini.inc.php'; + + class tpl{ + + /*-----------------------------------------------------------------------------\ + | ATTENTION | + | Do not touch the following variables. vlibTemplate will not work otherwise. | + \-----------------------------------------------------------------------------*/ + private $OPTIONS = array( + 'MAX_INCLUDES' => 10, + 'TEMPLATE_DIR' => null, + 'GLOBAL_VARS' => null, + 'GLOBAL_CONTEXT_VARS' => null, + 'LOOP_CONTEXT_VARS' => null, + 'SET_LOOP_VAR' => null, + 'DEFAULT_ESCAPE' => null, + 'STRICT' => null, + 'CASELESS' => null, + 'UNKNOWNS' => null, + 'TIME_PARSE' => null, + 'ENABLE_PHPINCLUDE' => null, + 'INCLUDE_PATHS' => array(), + 'CACHE_DIRECTORY' => null, + 'CACHE_LIFETIME' => null, + 'CACHE_EXTENSION' => null + ); + + /** open and close tags used for escaping */ + private $ESCAPE_TAGS = array( + 'html' => array('open' => 'htmlspecialchars(' , 'close'=> ', ENT_QUOTES)'), + 'url' => array('open' => 'urlencode(' , 'close'=> ')'), + 'rawurl' => array('open' => 'rawurlencode(' , 'close'=> ')'), + 'sq' => array('open' => 'addcslashes(' , 'close'=> ", \"'\")"), + 'dq' => array('open' => 'addcslashes(' , 'close'=> ", '\"')"), + '1' => array('open' => 'htmlspecialchars(' , 'close'=> ', ENT_QUOTES)'), + '0' => array('open' => '' , 'close'=> ''), + 'none' => array('open' => '' , 'close'=> ''), + 'hex' => array('open' => '$this->_escape_hex(' , 'close'=> ', false)'), + 'hexentity' => array('open' => '$this->_escape_hex(' , 'close'=> ', true)') + ); + + + + /** open and close tags used for formatting */ + private $FORMAT_TAGS = array( + 'strtoupper' => array('open' => 'strtoupper(', 'close'=> ')'), + 'uc' => array('open' => 'strtoupper(', 'close'=> ')'), + 'strtolower' => array('open' => 'strtolower(', 'close'=> ')'), + 'lc' => array('open' => 'strtolower(', 'close'=> ')'), + 'ucfirst' => array('open' => 'ucfirst(', 'close'=> ')'), + 'lcucfirst' => array('open' => 'ucfirst(strtolower(', 'close'=> '))'), + 'ucwords' => array('open' => 'ucwords(', 'close'=> ')'), + 'lcucwords' => array('open' => 'ucwords(strtolower(', 'close'=> '))') + ); + + /** operators allowed when using extended TMPL_IF syntax */ + private $allowed_if_ops = array('==', '!=', '<>', '<', '>', '<=', '>='); + + + + /** dbs allowed by vlibTemplate::setDbLoop(). */ + private $allowed_loop_dbs = array('MYSQL', 'POSTGRESQL', 'INFORMIX', 'INTERBASE', 'INGRES', + 'MSSQL', 'MSQL', 'OCI8', 'ORACLE', 'OVRIMOS', 'SYBASE'); + + + + /** root directory of vlibTemplate automagically filled in */ + private $VLIBTEMPLATE_ROOT = null; + + + + /** contains current directory used when doing recursive include */ + private $_currentincludedir = array(); + + + + /** current depth of includes */ + private $_includedepth = 0; + + + + /** full path to tmpl file */ + private $_tmplfilename = null; + + + + /** file data before it's parsed */ + private $_tmplfile = null; + + + + /** parsed version of file, ready for eval()ing */ + private $_tmplfilep = null; + + + + /** eval()ed version ready for printing or whatever */ + private $_tmploutput = null; + + + + /** array for variables to be kept */ + private $_vars = array(); + + + + /** array where loop variables are kept */ + private $_arrvars = array(); + + /** array which holds the current namespace during parse */ + private $_namespace = array(); + + + + /** variable is set to true once the template is parsed, to save re-parsing everything */ + private $_parsed = false; + + + + /** array holds all unknowns vars */ + private $_unknowns = array(); + + + + /** microtime when template parsing began */ + private $_firstparsetime = null; + + + + /** total time taken to parse template */ + private $_totalparsetime = null; + + + + /** name of current loop being passed in */ + private $_currloopname = null; + + + + /** rows with the above loop */ + private $_currloop = array(); + + + + /** define vars to avoid warnings */ + private $_debug = null; + private $_cache = null; + + + + /** array which holds the dynamic Includes */ + private $_dyninclude = array(); + + /*-----------------------------------------------------------------------------\ + | public functions | + \-----------------------------------------------------------------------------*/ + + + + + + /** + * Usually called by the class constructor. + * Stores the filename in $this->_tmplfilename. + * Raises an error if the template file is not found. + * @param string $tmplfile full path to template file + * @return boolean true + * @access public + */ + public function newTemplate($tmplfile) + { + if (!$tfile = $this->_fileSearch($tmplfile)){ + vlibTemplateError::raiseError('VT_ERROR_NOFILE', KILL, $tmplfile); + } + + //* make sure that any parsing vars are cleared for the new template + $this->_tmplfile = null; + $this->_tmplfilep = null; + $this->_tmploutput = null; + $this->_parsed = false; + $this->_unknowns = array(); + $this->_firstparsetime = null; + $this->_totalparsetime = null; + + //* reset debug module + if ($this->_debug){ + $this->_debugReset(); + } + $this->_tmplfilename = $tfile; + return true; + } + + /** + * Sets variables to be used by the template + * If $k is an array, then it will treat it as an associative array + * using the keys as variable names and the values as variable values. + * @param mixed $k key to define variable name + * @param mixed $v variable to assign to $k + * @return boolean true/false + * @access public + */ + public function setVar($k, $v = null) + { + if (is_array($k)) { + foreach($k as $key => $value){ + $key = ($this->OPTIONS['CASELESS']) ? strtolower(trim($key)) : trim($key); + if (preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $key) && $value !== null ) { + $this->_vars[$key] = $value; + } + } + } else { + if (preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $k) && $v !== null) { + if ($this->OPTIONS['CASELESS']) $k = strtolower($k); + $this->_vars[trim($k)] = $v; + } else { + return false; + } + } + return true; + } + + + + /** + * Sets dynamic includes to be used by the template + * If $k is an array, then it will treat it as an associative array + * using the keys as variable names and the values as variable values. + * @param mixed $k key to define variable name + * @param mixed $v variable to assign to $k + * @return boolean true/false + * @access public + */ + public function setInclude($k, $v = null) + { + if(is_array($k)) { + foreach($k as $key => $val) { + $this->_dyninclude[$key] = $val; + } + } else { + $this->_dyninclude[$k] = $v; + } + return true; + } + + /** + * Unsets a variable which has already been set + * Parse in all vars wanted for deletion in seperate parametres + * @param string var name to remove use: vlibTemplate::unsetVar(var[, var..]) + * @return boolean true/false returns true unless called with 0 params + * @access public + */ + public function unsetVar() + { + $num_args = func_num_args(); + if ($num_args < 1) return false; + + for ($i = 0; $i < $num_args; $i++) { + $var = func_get_arg($i); + if ($this->OPTIONS['CASELESS']) $var = strtolower($var); + if (!preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $var)) continue; + unset($this->_vars[$var]); + } + return true; + } + + /** + * Gets all vars currently set in global namespace. + * @return array + * @access public + */ + public function getVars() + { + return empty($this->_vars) ? false : $this->_vars; + } + + /** + * Gets a single var from the global namespace + * @return var + * @access public + */ + public function getVar($var) + { + if ($this->OPTIONS['CASELESS']) $var = strtolower($var); + return (empty($var) || !isset($this->_vars[$var])) ? false : $this->_vars[$var]; + } + + /** + * sets the GLOBAL_CONTEXT_VARS + * @return true + * @access public + */ + public function setContextVars() + { + $_phpself = @$GLOBALS['HTTP_SERVER_VARS']['PHP_SELF']; + $_pathinfo = @$GLOBALS['HTTP_SERVER_VARS']['PATH_INFO']; + $_request_uri = @$GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI']; + $_qs = @$GLOBALS['HTTP_SERVER_VARS']['QUERY_STRING']; + + //* the following fixes bug of $PHP_SELF on Win32 CGI and IIS. + $_self = (!empty($_pathinfo)) ? $_pathinfo : $_phpself; + $_uri = (!empty($_request_uri)) ? $_request_uri : $_self.'?'.$_qs; + + $this->setvar('__SELF__', $_self); + $this->setvar('__REQUEST_URI__', $_uri); + return true; + } + + /** + * Builds the loop construct for use with . + * @param string $k string to define loop name + * @param array $v array to assign to $k + * @return boolean true/false + * @access public + */ + public function setLoop($k, $v) + { + if (is_array($v) && preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $k)) { + $k = ($this->OPTIONS['CASELESS']) ? strtolower(trim($k)) : trim($k); + $this->_arrvars[$k] = array(); + if ($this->OPTIONS['SET_LOOP_VAR'] && !empty($v)) $this->setvar($k, 1); + if (($this->_arrvars[$k] = $this->_arrayBuild($v)) == false) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_ARR', WARNING, $k); + } else { + $this->vars['_'.$k.'_num'] = count($v); + } + } + return true; + } + + /** + * [** EXPERIMENTAL **] + * Function to create a loop from a Db result resource link. + * @param string $loopname to commit loop. If not set, will use last loopname set using newLoop() + * @param string $result link to a Db result resource + * @param string $db_type, type of db that the result resource belongs to. + * @return boolean true/false + * @access public + */ + public function setDbLoop($loopname, $result, $db_type = 'MYSQL') + { + /* + $db_type = strtoupper($db_type); + if (!in_array($db_type, $this->allowed_loop_dbs)) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_LOOP_DB', WARNING, $db_type); + return false; + } + + $loop_arr = array(); + // TODO: Are all these necessary as were onyl using mysql and possible postgres ? - pedro + switch ($db_type) { + + case 'MYSQL': + if (get_resource_type($result) != 'mysql result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = mysql_fetch_assoc($result)) { + $loop_arr[] = $r; + } + break; + + case 'POSTGRESQL': + if (get_resource_type($result) != 'pgsql result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + + $nr = (function_exists('pg_num_rows')) ? pg_num_rows($result) : pg_numrows($result); + + for ($i=0; $i < $nr; $i++) { + $loop_arr[] = pg_fetch_array($result, $i, PGSQL_ASSOC); + } + break; + + case 'INFORMIX': + if (!$result) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = ifx_fetch_row($result, 'NEXT')) { + $loop_arr[] = $r; + } + break; + + case 'INTERBASE': + if (get_resource_type($result) != 'interbase result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = ibase_fetch_row($result)) { + $loop_arr[] = $r; + } + break; + + case 'INGRES': + if (!$result) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = ingres_fetch_array(INGRES_ASSOC, $result)) { + $loop_arr[] = $r; + } + break; + + case 'MSSQL': + if (get_resource_type($result) != 'mssql result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = mssql_fetch_array($result)) { + $loop_arr[] = $r; + } + break; + + case 'MSQL': + if (get_resource_type($result) != 'msql result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = msql_fetch_array($result, MSQL_ASSOC)) { + $loop_arr[] = $r; + } + break; + + case 'OCI8': + if (get_resource_type($result) != 'oci8 statement') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while(OCIFetchInto($result, &$r, OCI_ASSOC+OCI_RETURN_LOBS)) { + $loop_arr[] = $r; + } + break; + + case 'ORACLE': + if (get_resource_type($result) != 'oracle Cursor') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while(ora_fetch_into($result, &$r, ORA_FETCHINTO_ASSOC)) { + $loop_arr[] = $r; + } + break; + + case 'OVRIMOS': + if (!$result) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while(ovrimos_fetch_into($result, &$r, 'NEXT')) { + $loop_arr[] = $r; + } + break; + + case 'SYBASE': + if (get_resource_type($result) != 'sybase-db result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + + while($r = sybase_fetch_array($result)) { + $loop_arr[] = $r; + } + break; + } + $this->setLoop($loopname, $loop_arr); + return true; + */ + } + + /** + * Sets the name for the curent loop in the 3 step loop process. + * @param string $name string to define loop name + * @return boolean true/false + * @access public + */ + public function newLoop($loopname) + { + if (preg_match('/^[a-z_]+[a-z0-9_]*$/i', $loopname)) { + $this->_currloopname[$loopname] = $loopname; + $this->_currloop[$loopname] = array(); + return true; + } else { + return false; + } + } + + /** + * Adds a row to the current loop in the 3 step loop process. + * @param array $row loop row to add to current loop + * @param string $loopname loop to which you want to add row, if not set will use last loop set using newLoop(). + * @return boolean true/false + * @access public + */ + public function addRow($row, $loopname = null) + { + if (!$loopname) $loopname = $this->_currloopname[(count($this->_currloopname)-1)]; + + if (!isset($this->_currloop[$loopname]) || empty($this->_currloopname)) { + vlibTemplateError::raiseError('VT_WARNING_LOOP_NOT_SET', WARNING); + return false; + } + if (is_array($row)) { + $this->_currloop[$loopname][] = $row; + return true; + } else { + return false; + } + } + + /** + * Completes the 3 step loop process. This assigns the rows and resets + * the variables used. + * @param string $loopname to commit loop. If not set, will use last loopname set using newLoop() + * @return boolean true/false + * @access public + */ + public function addLoop($loopname = null) + { + if ($loopname == null) { // add last loop used + if (!empty($this->_currloop)) { + foreach ($this->_currloop as $k => $v) { + $this->setLoop($k, $v); + unset($this->_currloop[$k]); + } + $this->_currloopname = array(); + return true; + } else { + return false; + } + } elseif (!isset($this->_currloop[$loopname]) || empty($this->_currloopname)) { // newLoop not yet envoked + vlibTemplateError::raiseError('VT_WARNING_LOOP_NOT_SET', WARNING); + return false; + } else { // add a specific loop + $this->setLoop($loopname, $this->_currloop[$loopname]); + unset($this->_currloopname[$loopname], $this->_currloop[$loopname]); + } + return true; + } + + /** + * Unsets a loop which has already been set. + * Can only unset top level loops. + * @param string loop to remove use: vlibTemplate::unsetLoop(loop[, loop..]) + * @return boolean true/false returns true unless called with 0 params + * @access public + */ + public function unsetLoop() + { + $num_args = func_num_args(); + if ($num_args < 1) return false; + + for ($i = 0; $i < $num_args; $i++) { + $var = func_get_arg($i); + if ($this->OPTIONS['CASELESS']) $var = strtolower($var); + if (!preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $var)) continue; + unset($this->_arrvars[$var]); + } + return true; + } + + /** + * Resets the vlibTemplate object. After using vlibTemplate::reset() you must + * use vlibTemplate::newTemplate(tmpl) to reuse, not passing in the options array. + * @return boolean true + * @access public + */ + public function reset() + { + $this->clearVars(); + $this->clearLoops(); + $this->_tmplfilename = null; + $this->_tmplfile = null; + $this->_tmplfilep = null; + $this->_tmploutput = null; + $this->_parsed = false; + $this->_unknowns = array(); + $this->_firstparsetime = null; + $this->_totalparsetime = null; + $this->_currloopname = null; + $this->_currloop = array(); + return true; + } + + /** + * Unsets all variables in the template + * @return boolean true + * @access public + */ + public function clearVars() + { + $this->_vars = array(); + return true; + } + + /** + * Unsets all loops in the template + * @return boolean true + * @access public + */ + public function clearLoops() + { + $this->_arrvars = array(); + $this->_currloopname = null; + $this->_currloop = array(); + return true; + } + + /** + * Unsets all variables and loops set using setVar/Loop() + * @return boolean true + * @access public + */ + public function clearAll() + { + $this->clearVars(); + $this->clearLoops(); + return true; + } + + /** + * Returns true if unknowns were found after parsing. + * Function MUST be called AFTER one of the parsing functions to have any relevance. + * @return boolean true/false + * @access public + */ + public function unknownsExist() + { + return !empty($this->_unknowns); + } + + /** + * Alias for unknownsExist. + * @access public + */ + public function unknowns() + { + return $this->unknownsExist(); + } + + /** + * Returns an array of all unknown vars found when parsing. + * This function is only relevant after parsing a document. + * @return array + * @access public + */ + public function getUnknowns() + { + return $this->_unknowns; + } + + /** + * Sets how you want to handle variables that were found in the + * template but not set in vlibTemplate using vlibTemplate::setVar(). + * @param string $arg ignore, remove, print, leave or comment + * @return boolean + * @access public + */ + public function setUnknowns($arg) + { + $arg = strtolower(trim($arg)); + if (preg_match('/^ignore|remove|print|leave|comment$/', $arg)) { + $this->OPTIONS['UNKNOWNS'] = $arg; + return true; + } + return false; + } + + /** + * function sets the paths to use when including files. + * Use of this function: vlibTemplate::setPath(string path [, string path, ..]); + * i.e. if $tmpl is your template object do: $tmpl->setPath('/web/htdocs/templates','/web/htdocs/www'); + * with as many paths as you like. + * if this function is called without any arguments, it will just delete any previously set paths. + * + * @param string path (mulitple) + * @return bool success + * @access public + */ + public function setPath() + { + $num_args = func_num_args(); + if ($num_args < 1) { + $this->OPTIONS['INCLUDE_PATHS'] = array(); + return true; + } + for ($i = 0; $i < $num_args; $i++) { + $thispath = func_get_arg($i); + array_push($this->OPTIONS['INCLUDE_PATHS'], realpath($thispath)); + } + return true; + } + + /** + * After using one of the parse functions, this will allow you + * access the time taken to parse the template. + * see OPTION 'TIME_PARSE'. + * + * @return float time taken to parse template + * @access public + */ + public function getParseTime() + { + if ($this->OPTIONS['TIME_PARSE'] && $this->_parsed) { + return $this->_totalparsetime; + } + return false; + } + + + /** + * Identical to pparse() except that it uses output buffering w/ gz compression thus + * printing the output directly and compressed if poss. + * Will possibly if parsing a huge template. + * + * @access public + * @return boolean true/false + */ + public function fastPrint() + { + $ret = $this->_parse('ob_gzhandler'); + print($this->_tmploutput); + return $ret; + } + + + /** + * Calls parse, and then prints out $this->_tmploutput + * @access public + * @return boolean true/false + */ + public function pparse() + { + if (!$this->_parsed) $this->_parse(); + print($this->_tmploutput); + return true; + } + + /** + * Alias for pparse() + * @access public + */ + public function pprint() + { + return $this->pparse(); + } + + + /** + * Returns the parsed output, ready for printing, passing to mail() ...etc. + * Invokes $this->_parse() if template has not yet been parsed. + * + * @access public + * @return boolean true/false + */ + public function grab() + { + if (!$this->_parsed) $this->_parse(); + return $this->_tmploutput; + } + + /*-----------------------------------------------------------------------------\ + | private functions | + \-----------------------------------------------------------------------------*/ + + /** + * vlibTemplate constructor. + * if $tmplfile has been passed to it, it will send to $this->newTemplate() + * @param string $tmplfile full path to template file + * @param array $options see above + * @return boolean true/false + * @access private + */ + public function __construct($tmplfile = null, $options = null) + { + if (is_array($tmplfile) && $options == null) { + $options = $tmplfile; + unset($tmplfile); + } + + $this->VLIBTEMPLATE_ROOT = dirname(realpath(__FILE__)); + + if (is_array(vlibIni::vlibTemplate())) { + foreach (vlibIni::vlibTemplate() as $name => $val) { + $this->OPTIONS[$name] = $val; + } + } + + if (is_array($options)) { + foreach($options as $key => $val) { + $key = strtoupper($key); + if ($key == 'PATH') { + $this->setPath($val); + } else { + $this->_setOption($key, strtolower($val)); + } + } + } + if($tmplfile) $this->newTemplate($tmplfile); + if ($this->OPTIONS['GLOBAL_CONTEXT_VARS']) $this->setContextVars(); + return true; + } + + /** + * function returns the text from the file, or if we're using cache, the text + * from the cache file. MUST RETURN DATA. + * @param string tmplfile contains path to template file + * @param do_eval used for included files. If set then this function must do the eval()'ing. + * @access private + * @return mixed data/string or boolean + */ + private function _getData ($tmplfile, $do_eval=false) + { + //* check the current file depth + if ($this->_includedepth > $this->OPTIONS['MAX_INCLUDES'] || $tmplfile == false) { + return; + } else { + if ($this->_debug){ + array_push($this->_debugIncludedfiles, $tmplfile); + } + if ($do_eval) { + array_push($this->_currentincludedir, dirname($tmplfile)); + $this->_includedepth++; + } + } + + + if($this->_cache && $this->_checkCache($tmplfile)) { //* cache exists so lets use it + $data = fread($fp = fopen($this->_cachefile, 'r'), filesize($this->_cachefile)); + fclose($fp); + } else { //* no cache lets parse the file + $data = fread($fp = fopen($tmplfile, 'r'), filesize($tmplfile)); + fclose($fp); + + $regex = '/(<|<\/|{|{\/|){1}'; + $regex.= '/i'; + $data = preg_replace_callback($regex, array($this, '_parseTag'), $data); + + if ($this->_cache) { // add cache if need be + $this->_createCache($data); + } + } + + //* now we must parse the $data and check for any 's + if ($this->_debug) $this->doDebugWarnings(file($tmplfile), $tmplfile); + + if ($do_eval) { + $success = @eval('?>'.$data.'_includedepth--; + array_pop($this->_currentincludedir); + return $success; + } else { + return $data; + } + } + + /** + * Searches for all possible instances of file { $file } + * @param string $file path of file we're looking for + * @access private + * @return mixed fullpath to file or boolean false + */ + private function _fileSearch($file) + { + + $filename = basename($file); + $filepath = dirname($file); + + if(isset($_SESSION['s']['module']['name']) && isset($_SESSION['s']['theme'])) { + if(is_file(ISPC_THEMES_PATH.'/'.$_SESSION['s']['theme'].'/templates/'.$_SESSION['s']['module']['name'].'/'.$filename)) { + return ISPC_THEMES_PATH.'/'.$_SESSION['s']['theme'].'/templates/'.$_SESSION['s']['module']['name'].'/'.$filename; + } + } + + //* check fullpath first.. + $fullpath = $filepath.'/'.$filename; + if (is_file($fullpath)) return $fullpath; + + //* ..then check for relative path for current directory.. + if (!empty($this->_currentincludedir)) { + $currdir = $this->_currentincludedir[(count($this->_currentincludedir) -1)]; + $relativepath = realpath($currdir.'/'.$filepath.'/'.$filename); + if (is_file($relativepath)) { + array_push($this->_currentincludedir, dirname($relativepath)); + return $relativepath; + } + } + + //* ..then check for relative path for all additional given paths.. + if (!empty($this->OPTIONS['INCLUDE_PATHS'])) { + foreach ($this->OPTIONS['INCLUDE_PATHS'] as $currdir) { + $relativepath = realpath($currdir.'/'.$filepath.'/'.$filename); + if (is_file($relativepath)) { + return $relativepath; + } + } + } + + //* ..then check path from TEMPLATE_DIR.. + if (!empty($this->OPTIONS['TEMPLATE_DIR'])) { + $fullpath = realpath($this->OPTIONS['TEMPLATE_DIR'].'/'.$filepath.'/'.$filename); + if (is_file($fullpath)) return $fullpath; + } + + //* ..then check relative path from executing php script.. + $fullpath = realpath($filepath.'/'.$filename); + if (is_file($fullpath)) return $fullpath; + + //* ..then check path from template file. + if (!empty($this->VLIBTEMPLATE_ROOT)) { + $fullpath = realpath($this->VLIBTEMPLATE_ROOT.'/'.$filepath.'/'.$filename); + if (is_file($fullpath)) return $fullpath; + } + + return false; // uh oh, file not found + } + + /** + * Modifies the array $arr to add Template variables, __FIRST__, __LAST__ ..etc + * if $this->OPTIONS['LOOP_CONTEXT_VARS'] is true. + * Used by $this->setloop(). + * @param array $arr + * @return array new look array + * @access private + */ + private function _arrayBuild($arr) + { + if (is_array($arr) && !empty($arr)) { + $arr = array_values($arr); // to prevent problems w/ non sequential arrays + for ($i = 0; $i < count($arr); $i++) { + if(!is_array($arr[$i])) return false; + foreach ($arr[$i] as $k => $v) { + unset($arr[$i][$k]); + if ($this->OPTIONS['CASELESS']) $k = strtolower($k); + if (preg_match('/^[0-9]+$/', $k)) $k = '_'.$k; + + if (is_array($v)) { + if (($arr[$i][$k] = $this->_arrayBuild($v)) == false) return false; + } else { // reinsert the var + $arr[$i][$k] = $v; + } + } + if ($this->OPTIONS['LOOP_CONTEXT_VARS']) { + if ($i == 0) $arr[$i]['__FIRST__'] = true; + if (($i + 1) == count($arr)) $arr[$i]['__LAST__'] = true; + if ($i != 0 && (($i + 1) < count($arr))) $arr[$i]['__INNER__'] = true; + if (is_int(($i+1) / 2)) $arr[$i]['__EVEN__'] = true; + if (!is_int(($i+1) / 2)) $arr[$i]['__ODD__'] = true; + $arr[$i]['__ROWNUM__'] = ($i + 1); + } + } + return $arr; + } elseif (empty($arr)) { + return true; + } + } + + /** + * returns a string used for parsing in tmpl_if statements. + * @param string $varname + * @param string $value + * @param string $op + * @param string $namespace current namespace + * @access private + * @return string used for eval'ing + */ + private function _parseIf($varname, $value = null, $op = null, $namespace = null, $format = null) + { + if (isset($namespace)) $namespace = substr($namespace, 0, -1); + $comp_str = ''; // used for extended if statements + + // work out what to put on the end id value="whatever" is used + if (isset($value)) { + + // add the correct operator depending on whether it's been specified or not + if (!empty($op)) { + if (in_array($op, $this->allowed_if_ops)) { + $comp_str .= $op; + } else { + vlibTemplateError::raiseError('VT_WARNING_INVALID_IF_OP', WARNING, $op); + } + } else { + $comp_str .= '=='; + } + + // now we add the value, if it's numeric, then we leave the quotes off + if (is_numeric($value)) { + $comp_str .= $value; + } else { + $comp_str .= '\''.$value.'\''; + } + } + + if (count($this->_namespace) == 0 || $namespace == 'global') return '$this->_vars[\''.$varname.'\']'.$comp_str; + $retstr = '$this->_arrvars'; + $numnamespaces = count($this->_namespace); + for ($i=0; $i < $numnamespaces; $i++) { + if ($this->_namespace[$i] == $namespace || (($i + 1) == $numnamespaces && !empty($namespace))) { + $retstr .= "['".$namespace."'][\$_".$i."]"; + break 1; + } else { + $retstr .= "['".$this->_namespace[$i]."'][\$_".$i."]"; + } + } + if ($this->OPTIONS['GLOBAL_VARS'] && empty($namespace)) { + $retstr = '(('.$retstr.'[\''.$varname.'\'] !== null) ? '.$retstr.'[\''.$varname.'\'] : $this->_vars[\''.$varname.'\'])'; + if(isset($format) && isset($value) && $format == 'version') { + return 'version_compare(' . $retstr . ', \'' . $value . '\', \'' . (!empty($op) ? $op : '==') . '\')'; + } else { + return $retstr.$comp_str; + } + } + else { + if(isset($format) && isset($value) && $format == 'version') { + return 'version_compare(' . $retstr."['".$varname."']" . ', \'' . $value . '\', \'' . (!empty($op) ? $op : '==') . '\')'; + } else { + return $retstr."['".$varname."']".$comp_str; + } + } + } + + + /** + * returns a string used for parsing in tmpl_loop statements. + * @param string $varname + * @access private + * @return string used for eval'ing + */ + private function _parseLoop ($varname) + { + array_push($this->_namespace, $varname); + $tempvar = count($this->_namespace) - 1; + $retstr = "for (\$_".$tempvar."=0 ; \$_".$tempvar." < count(\$this->_arrvars"; + for ($i=0; $i < count($this->_namespace); $i++) { + $retstr .= "['".$this->_namespace[$i]."']"; + if ($this->_namespace[$i] != $varname) $retstr .= "[\$_".$i."]"; + } + return $retstr."); \$_".$tempvar."++) {"; + } + + /** + * returns a string used for parsing in tmpl_var statements. + * @param string $wholetag + * @param string $tag + * @param string $varname + * @param string $escape + * @param string $format + * @param string $namespace + * @access private + * @return string used for eval'ing + */ + private function _parseVar ($wholetag, $tag, $varname, $escape, $format, $namespace) + { + if (!empty($namespace)) $namespace = substr($namespace, 0, -1); + $wholetag = stripslashes($wholetag); + + if (count($this->_namespace) == 0 || $namespace == 'global') { + $var1 = '$this->_vars[\''.$varname.'\']'; + } else { + $var1build = "\$this->_arrvars"; + $numnamespaces = count($this->_namespace); + for ($i=0; $i < $numnamespaces; $i++) { + if ($this->_namespace[$i] == $namespace || (($i + 1) == $numnamespaces && !empty($namespace))) { + $var1build .= "['".$namespace."'][\$_".$i."]"; + break 1; + } else { + $var1build .= "['".$this->_namespace[$i]."'][\$_".$i."]"; + } + } + $var1 = $var1build . "['$varname']"; + if ($this->OPTIONS['GLOBAL_VARS'] && empty($namespace)) { + $var2 = '$this->_vars[\''.$varname.'\']'; + } + } + + $beforevar = ''; + $aftervar = ''; + if (!empty($escape)&& isset($this->ESCAPE_TAGS[$escape])) { + $beforevar .= $this->ESCAPE_TAGS[$escape]['open']; + $aftervar = $this->ESCAPE_TAGS[$escape]['close'] . $aftervar; + } + + if (!empty($format)&& isset($this->FORMAT_TAGS[$format])) { + $beforevar .= $this->FORMAT_TAGS[$format]['open']; + $aftervar = $this->FORMAT_TAGS[$format]['close'] . $aftervar; + } + + //* build return values + $retstr = 'if ('.$var1.' !== null) { '; + $retstr .= 'print('.$beforevar.$var1.$aftervar.'); '; + $retstr .= '}'; + + if (@$var2) { + $retstr .= ' elseif ('.$var2.' !== null) { '; + $retstr .= 'print('.$beforevar.$var2.$aftervar.'); '; + $retstr .= '}'; + } + + switch (strtolower($this->OPTIONS['UNKNOWNS'])) { + case 'comment': + $comment = addcslashes('/', '', $wholetag).'//-->', '"'); + $retstr .= ' else { print("'.$comment.'"); $this->_setUnknown("'.$varname.'"); }'; + return $retstr; + + case 'leave': + $retstr .= ' else { print("'.addcslashes($wholetag, '"').'"); $this->_setUnknown("'.$varname.'"); }'; + return $retstr; + + case 'print': + $retstr .= ' else { print("'.htmlspecialchars($wholetag, ENT_QUOTES).'"); $this->_setUnknown("'.$varname.'"); }'; + return $retstr; + + case 'ignore': + return $retstr; + + case 'remove': + default: + $retstr .= ' else { $this->_setUnknown("'.$varname.'"); }'; + return $retstr; + + } + } + + /** + * takes values from preg_replace in $this->_intparse() and determines + * the replace string. + * + * @param array $args array of all matches found by preg_replace + * @access private + * @return string replace values + */ + private function _parseTag ($args) + { + $wholetag = $args[0]; + $openclose = $args[1]; + $tag = strtolower($args[2]); + + if ($tag == 'else') return ''; + if ($tag == 'tmpl_include') return $wholetag; // ignore tmpl_include tags + + if (preg_match("/^<\/|{\/|