it-swarm.com.de

Wie wählt man PHP Version 5 und 7 pro virtualhost in Apache 2.4 unter Debian?

Wäre es möglich, PHP 7 und PHP 5 gleichzeitig in Apache 2.4 auf Debian 9 auszuführen? Ich möchte in der Lage sein, PHP Version, die ich pro virtualhost verwenden möchte. Ich halte dies für nützlich, da einige meiner Websites immer noch veraltete PHP= Funktionen verwenden. Auf diese Weise kann ich Upgrades pro Site durchführen. Wie erreiche ich so etwas?

Zum Beispiel

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName mywebsite.com
   DocumentRoot /var/www/mywebsite.com

   # UsePHP 7
</virtualHost>

nd

<VirtualHost *:80>
   ServerAdmin [email protected]
   ServerName mywebsite2.com
   DocumentRoot /var/www/mywebsite2.com

   # UsePHP 5
</virtualHost>
21
Z0q

Fangen wir von vorne an. Ich gehe davon aus, dass Sie lieber php-fpm anstelle des Apache-Moduls verwenden möchten.

Installieren Sie zuerst Apache:

Sudo apt-get update
Sudo apt-get install Apache2

Als nächstes installieren Sie mehrere PHP:

Debian 9:
Installiere PHP 7:

Sudo apt-get install php7.0-cli php7.0-fpm php-pear libapache2-mod-fastcgi

Repositories konfigurieren:

Sudo apt-get install apt-transport-https
Sudo curl https://packages.sury.org/php/apt.gpg | apt-key add -
Sudo echo 'deb https://packages.sury.org/php/ stretch main' > /etc/apt/sources.list.d/deb.sury.org.list
Sudo apt-get update

Installiere PHP 5:

Sudo apt-get install php5.6-cli php5.6-fpm

Debian 8:
Installiere PHP 5:

Sudo apt-get install php5 php5-fpm php-pear libapache2-mod-fastcgi

Repositories konfigurieren:
Bearbeiten Sie /etc/apt/sources.list Und fügen Sie die folgenden Zeilen am Ende der Datei hinzu:

deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all

Installieren Sie den GPG-Schlüssel:

wget https://www.dotdeb.org/dotdeb.gpg
Sudo apt-key add dotdeb.gpg
Sudo apt-get update

Installiere PHP 7:

Sudo apt-get install php7.0 php7.0-fpm

Wechseln Sie als nächstes von Prefork und aktivieren Sie die erforderlichen Module:
Für Debian 8:

a2dismod php5 mpm_prefork

Für Debian 9:

a2dismod php7 mpm_prefork

Weiter für beide:

a2enmod actions fastcgi alias proxy_fcgi mpm_worker
systemctl restart Apache2

Ändern Sie den Inhalt von /etc/Apache2/mods-enabled/fastcgi.conf In den folgenden:

<IfModule !mod_fastcgi.c>
    AddHandler fcgid-script fcg fcgi fpl
</IfModule>
<IfModule mod_fastcgi.c>
    <Directory /usr/lib/cgi-bin>
        Require all granted
    </Directory>
</IfModule>

Erstellen Sie nun Dokumentstammordner für Websites:

mkdir -p /var/www/example.com/public_html
mkdir -p /var/www/test.com/public_html

Fügen Sie Sys-Benutzer für diese Websites hinzu:

Sudo useradd example --home-dir /var/www/example.com
Sudo useradd test --home-dir /var/www/test.com

Eigentümer konfigurieren:

Sudo chown -R example.example /var/www/example.com
Sudo chown -R test.test /var/www/test.com

Zum Beispiel verwendet die Website example.com PHP 5 und die Website test.com PHP 7.

Erstellen Sie Konfigurationsdateien für Websites:
Website auf PHP 5:

touch /etc/Apache2/sites-available/example.com.conf
ln -s /etc/Apache2/sites-available/example.com.conf /etc/Apache2/sites-enabled/example.com.conf
cat /etc/Apache2/sites-available/example.com.conf
<VirtualHost *:80>

        ServerAdmin [email protected]
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/public_html
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined

        <IfModule mod_fastcgi.c>
            AddType application/x-httpd-fastphp5 .php
            Action application/x-httpd-fastphp5 /php5-fcgi
            Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi-example.com
            FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi-example.com -socket /var/run/php5-fpm-example.com.sock -pass-header Authorization
        </IfModule>

</VirtualHost>

Website auf PHP 7:

touch /etc/Apache2/sites-available/test.com.conf
ln -s /etc/Apache2/sites-available/test.com.conf /etc/Apache2/sites-enabled/test.com.conf
cat /etc/Apache2/sites-available/test.com.conf
<VirtualHost *:80>

        ServerAdmin [email protected]
        ServerName test.com
        ServerAlias www.test.com
        DocumentRoot /var/www/test.com/public_html
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined

        <IfModule mod_fastcgi.c>
                AddHandler php7-fcgi .php
                Action php7-fcgi /php7-fcgi virtual
                Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi-test.com
                FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-test.com -socket /var/run/php/php7.0-fpm-test.com.sock -pass-header Authorization
        </IfModule>

</VirtualHost>

Erstellen Sie Pool-Konfigurationen (ich habe Folgendes verwendet):
Website auf PHP 5:

cat /etc/php5/fpm/pool.d/example.com.conf
[example.com]
user = example
group = example
listen = /var/run/php5-fpm-example.com.sock
listen.owner = www-data
listen.group = www-data
php_admin_value[disable_functions] = exec,passthru,Shell_exec,system
php_admin_flag[allow_url_fopen] = off
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /

Website auf PHP 7:

cat /etc/php/7.0/fpm/pool.d/test.com.conf
[test.com]
user = test
group = test
listen = /var/run/php/php7.0-fpm-test.com.sock
listen.owner = www-data
listen.group = www-data
php_admin_value[disable_functions] = exec,passthru,Shell_exec,system
php_admin_flag[allow_url_fopen] = off
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /

Starten Sie die Apache- und PHP-FPM-Dienste neu:

Sudo systemctl restart Apache2 php5-fpm php7.0-fpm

Genießen!

35
Elvis Plesky