I-MSCP Upgrade - some old I-MSCP Verison to 1.3.x

  • 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.

  • Bei manchen Servern führt


    open_files_limit=50000


    in Verbindung mit sehr großen Datenbanken zu Problemen, daher haben wir den Wert auf 2048 angepasst. Seitdem sind die Probleme mit den Backups bei den entsprechenden Datenbanken nicht mehr vorhanden.


    Soweit ich sehe ist auch das update_mysql beim aktualisieren von MySQL Datenbank von 5.5 auf 5.7 jetzt im Installer ingetriert. Das Händische Ausführen des MySQL Updates ist daher nicht mehr notwendig.


    Dazu habe ich den Hinweis


    Quote


    nano /var/www/imscp/gui/plugins/RoundcubePlugins/config.php
    managedsieve aktivieren



    Danach Plugins aktualisieren


    Ergänzt, da sonst die Filterfunktionen nicht aktiv werden.

  • Are you aware that you can achieve exactly the same thing in one pass:


    Code
    1. perl /var/www/imscp/gui/plugins/PhpSwitcher/PhpCompiler/php_compiler.pl 5.3 5.4 5.5 5.6 7.0


    :D

    badge.php?id=1239063037&bid=2518&key=1747635596&format=png&z=547451206


  • Eine Anmerkung dazu. Alte vBulletin Foren haben Probleme mit diesem Parameter, danach wird die Datenbank nicht mehr angezeigt. Wenn man also solche alte Webseiten betreibt, in jeden Fall diesen Schritt nicht durchführen, da dieser zu Problemen mit den Boards fühern kann.