Guten Tag,
in den letzten Wochen haben wir einige Zeit investiert bei ip-projects.de um eine Updateanleitung für unsere Webserver zu schreiben. Diese Update Anleitung beinhaltet ein Dist Upgrade von Debian 6/7 auf Debian 8 sowie einige Anpassungen für den Betrieb von MySQL 5.7. Ich bitte um entschuldigung, dass die Anleitung etwas Quick and Dirty aussieht / ist, diese ist eher für den internen Gebrauch innerhalb unseres Unternehmens vorgesehen. Ich werde aber versuchen auch kleinere Erläuterungen zu den jeweiligen Schritten durchzuführen. Bitte bei der Anleitung mitdenken und nicht stupide Copy Past durchführen.
:: Upgrade auf Debian 8 und I-MSCP 1.3.0:
======================================================
I-MSCP vorbereiten und Backups generieren
======================================================
- Alle Plugins in I-MSCP deaktivieren
- Backups der config Dateien anfertigen (das macht Sinn wenn man später mal einige Einstellungen prüfen möchte)
cd /home
tar cfv apache-sites-available.tar /etc/apache2/sites-available
tar cfv php-ini.tar /var/www/fcgi/*/php5/php.ini
tar cfv config.tar /etc/postfix/main.cf /etc/courier/imapd-ssl /etc/courier/pop3d-ssl /etc/proftpd/proftpd.conf /etc/hosts /etc/resolv.conf
tar cfv apache-imscp.tar /etc/apache2/imscp
======================================================
Dist Upgrade durchführen - Das geht in der Form ab Debian 6 - in dieser Anleitung wird aber von einer Aktualisierung von Debian 7 auf Debian 8 ausgegangen. Wenn man von Debian 6 auf Debian 8 aktualisiert, muss man natürlich als Zwischenschritt Debian 7 einführen. Direkt auf Debian 8 von Debian 6 zu aktualisieren empfehle ich persönlich nicht
======================================================
aptitude update
aptitude safe-upgrade
nano /etc/apt/sources.list
"
deb http://mirror.ip-projects.de/debian jessie main contrib non-free
deb-src http://mirror.ip-projects.de/debian jessie main contrib non-free
deb http://mirror.ip-projects.de/debian/ jessie-updates main contrib non-free
deb-src http://mirror.ip-projects.de/debian/ jessie-updates main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
"
aptitude update
aptitude install dpkg apt aptitude
aptitude full-upgrade
reboot
/etc/init.d/udev stop
apt-get update && apt-get upgrade -y
======================================================
Upgrade I-MSCP
======================================================
apt-get purge apache2*
rm -r /etc/apache2
apt-get purge courier-*
apt-get autoremove
apt-get purge php5-xcache
apt-get -y install php5-memcache mysql-client libapache2-mod-perl2 php-xajax libcgi-ajax-perl php5-imagick php5-common php5-snmp php5-sqlite php5-gd php5-imap php5-mcrypt imagemagick libjmagick6-java graphicsmagick php5-cgi php5-ldap php5-curl php5-cli php5-dev htop php5-xsl rsync statsvn build-essential libssl-dev libparams-validate-perl bzip2 rsync python python-crypto screen memcached php5-memcached fail2ban ntpdate htop php5-xcache bzip2 spamassassin mailutils clamav libnet-dns-perl spamassassin ruby libavcodec-dev build-essential libavcodec56 libimage-exiftool-perl libxine2-ffmpeg libogg-vorbis-decoder-perl libogg-vorbis-header-pureperl-perl libogg-vorbis-header-pureperl-perl libvorbis-dev vorbis-tools mplayer2 gnome-mplayer mplayerthumbs php5-xcache
nano /etc/proftpd/modules.conf
auskommentieren - LoadModule mod_vroot.c
wget <neuste I-MSCP Version> - https://github.com/i-MSCP/imscp/archive/1.3.0.tar.gz
tar xzvf 1.3.0.tar.gz
rm 1.3.0.tar.gz
cd imscp-1.3.0/
perl imscp-autoinstall
perl imscp-autoinstall -dr sql
- Auswahl von MySQL 5.7
- FastCGI (Ich bin Fast CGI Fan, man kann aber natürlich auch FPM verwenden)
nano /etc/mysql/conf.d/ipp.cnf (Ein paar kleine lustige Einstellungen die eine deutliche Performancesteigerung bringen)
[mysqld]
ft_min_word_len = 3
query_cache_type = 1
join_buffer_size = 512K
tmp_table_size = 128M
max_heap_table_size = 128M
table_open_cache = 512
innodb_buffer_pool_size = 8G
key_buffer_size = 512M
query_cache_limit = 512M
open_files_limit=2048
thread_cache_size = 128
query_cache_size = 64M
nano /etc/mysql/conf.d/charset.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
/etc/init.d/mysql restart
mysqlcheck -u root -p -h 127.0.0.1 --auto-repair --check --all-databases
mysqlcheck -u root -p -h 127.0.0.1 --optimize --all-databases
- Ändern des Filemanagers auf net2ftp (wir selbst sind kein Fan mehr von Pydio - das natürlich nur ausführen, wenn man einen anderen Filemanager nutzt. Der Vorteil bei net2ftp ist, dass Kunden Zip Dateien hochladen können und man diese 1 Klick über den Filemanager entpacken kann.)
/var/www/imscp/engine/setup/imscp-reconfigure --reconfigure filemanager
- Ändern des Mailservers auf Dovecot (sofern man nicht schon Dovecot einsetzt. Dovecot ist gerade für den Einsatz von Roundcube Plugins besser.)
imscp-autoinstall --reconfigure po
- mpm_worker deaktivieren und mpm_prefork aktivieren (Gerade wenn man ältere Webseiten hat die sehr stark frequentiert sind kann es beim mpm_worker zu Leaks kommen bei den PHP Prozessen, daher wechseln wir aktuell immer auf prefork standardmäßig)
a2dismod mpm_worker
a2enmod mpm_prefork
/etc/apache2/mods-enabled/mpm_prefork.conf
<IfModule mpm_prefork_module>
StartServers 100
MinSpareServers 100
MaxSpareServers 100
MaxRequestWorkers 15000
MaxConnectionsPerChild 0
</IfModule>
Hier natürlich etwas die Schwellwerte hochsetzen, diese Werte sind für größere Server ausgelegt. Man muss natürlich die Werte auf seinen Webserver anpassen.
- I-MSCP max_upload / post_max_filesize erhöhen auf min. 1024m
nano /var/www/fcgi/master/php5/php.ini
- weitere Apache Module für Caching aktivieren
a2enmod cache file_cache socache_shmcb socache_memcache
service apache2 restart
======================================================
Upgrade I-MSCP Plugins
======================================================
- ClamAV
apt-get install clamav clamav-base clamav-daemon clamav-freshclam clamav-milter
service clamav-freshclam stop
freshclam
service clamav-freshclam start
service clamav-daemon restart
- Cronjobs
aptitude update && aptitude install msmtp
- DomainAutoApproval
- InstantSSH
aptitude install bash build-essential busybox-static flex libpam-chroot psmisc python strace libunix-mknod-perl
- Let's Encrypt
- Panel Redirect
- PHPSwitcher
perl /var/www/imscp/gui/plugins/PhpSwitcher/PhpCompiler/php_compiler.pl 5.3 5.4 5.5 5.6 7.0
PHP 5.3
Pear Pfad: /opt/phpswitcher/php5.3/share/pear
FCGI: /opt/phpswitcher/php5.3/bin/php-cgi
FPM: /opt/phpswitcher/php5.3/sbin/psw5.3-fpm
config Datei: /opt/phpswitcher/php5.3/etc/php-fpm.conf
pool Verzeichnis: /opt/phpswitcher/php5.3/etc/php-fpm.d
PHP 5.4
Pear Pfad: /opt/phpswitcher/php5.4/share/pear
FCGI: /opt/phpswitcher/php5.4/bin/php-cgi
FPM: /opt/phpswitcher/php5.4/sbin/psw5.4-fpm
config Datei: /opt/phpswitcher/php5.4/etc/php-fpm.conf
pool Verzeichnis: /opt/phpswitcher/php5.4/etc/php-fpm.d
PHP 5.5
Pear Pfad: /opt/phpswitcher/php5.5/share/pear
FCGI: /opt/phpswitcher/php5.5/bin/php-cgi
FPM: /opt/phpswitcher/php5.5/sbin/psw5.5-fpm
config Datei: /opt/phpswitcher/php5.5/etc/php-fpm.conf
pool Verzeichnis: /opt/phpswitcher/php5.5/etc/php-fpm.d
PHP 5.6
Pear Pfad: /opt/phpswitcher/php5.6/share/pear
FCGI: /opt/phpswitcher/php5.6/bin/php-cgi
FPM: /opt/phpswitcher/php5.6/sbin/psw5.6-fpm
config Datei: /opt/phpswitcher/php5.6/etc/php-fpm.conf
pool Verzeichnis: /opt/phpswitcher/php5.6/etc/php-fpm.d
PHP 7.0
Pear Pfad: /opt/phpswitcher/php7.0/share/pear
FCGI: /opt/phpswitcher/php7.0/bin/php-cgi
FPM: /opt/phpswitcher/php7.0/sbin/psw7.0-fpm
config Datei: /opt/phpswitcher/php7.0/etc/php-fpm.conf
pool Verzeichnis: /opt/phpswitcher/php7.0/etc/php-fpm.d
wget http://downloads2.ioncube.com/…loaders_lin_x86-64.tar.gz
tar xzvf ioncube_loaders_lin_x86-64.tar.gz
mv ioncube/ /usr/lib/php5/20131226/
nano /etc/php5/mods-available/ioncube.ini
-> zend_extension = /usr/lib/php5/20131226/ioncube/ioncube_loader_lin_5.6.so
ln -s /etc/php5/mods-available/ioncube.ini /etc/php5/cgi/conf.d/01-ioncube.ini
ln -s /etc/php5/mods-available/ioncube.ini /etc/php5/cli/conf.d/01-ioncube.ini
echo 'zend_extension = /usr/lib/php5/20131226/ioncube/ioncube_loader_lin_5.3.so' >> /opt/phpswitcher/php5.3/etc/php/conf.d/modules.ini
echo 'zend_extension = /usr/lib/php5/20131226/ioncube/ioncube_loader_lin_5.4.so' >> /opt/phpswitcher/php5.4/etc/php/conf.d/modules.ini
echo 'zend_extension = /usr/lib/php5/20131226/ioncube/ioncube_loader_lin_5.5.so' >> /opt/phpswitcher/php5.5/etc/php/conf.d/modules.ini
echo 'zend_extension = /usr/lib/php5/20131226/ioncube/ioncube_loader_lin_5.6.so' >> /opt/phpswitcher/php5.6/etc/php/conf.d/modules.ini
- PolicyWeight
apt-get install policyd-weight
- Roundcube Plugins
aptitude install dovecot-sieve dovecot-managesieved
nano /var/www/imscp/gui/plugins/RoundcubePlugins/config.php
managedsieve aktivieren
-> Danach Plugins aktualisieren
- SpamAssassin
aptitude install spamassassin spamass-milter libmail-dkim-perl libnet-ident-perl libencode-detect-perl pyzor razor
- Mailman
aptitude install mailman
newlist mailman
service mailman restart
touch /var/lib/mailman/data/virtual-mailman
postmap /var/lib/mailman/data/virtual-mailman
service postfix restart
======================================================
Backups rückspielen
======================================================
cd /home
cp php-ini.tar /
cd /
tar xvf php-ini.tar
cd /home
cp apache-imscp.tar /
cd /
tar xvf apache-imscp.tar
service apache2 restart
- Aus den Backups prüfen, welche IP-Adresse in der postfix/main.cf als sende IP hinterlegt war und diese in der neuen postfix/main.cf hinterlegen
cd /home
tar xvf config.tar
nano etc/postfix/main.cf
service apache2 restart
service postfix restart
======================================================
Abschließende Anpassungen
======================================================
- SSH Port auf default 22 ändern und Bind auf die lokale IP entfernen
nano /etc/ssh/sshd_config
service ssh restart
- NTP Zeitaktualisierung einrichten
ntpdate ptbtime1.ptb.de
crontab -e
0 0 * * * ntpdate ptbtime1.ptb.de
- Fail2Ban jail.conf aktualisieren und ggf. anpassen auf neuen Mailserver
nano /etc/fail2ban/jail.conf
/etc/init.d/fail2ban restart
- Kernel Upgrade (optional - wir versuchen immer 1000 hz Kernel zu verwenden in der aktuellsten Version)
wget http://mirror.ip-projects.de/k…ge-4.6.2-gs_462_amd64.deb
dpkg -i linux-image-4.6.2-gs_462_amd64.deb
rm linux-image-4.6.2-gs_462_amd64.deb
update-grub
Final - reboot
Gerne einmal unsere kleine Anleitung auf einem nicht produktiven System vorher testen. Bei unseren Webservern geht das Ganze so aber kurz und schmerzfrei durch.