Setup Apache, FastCGI and PHP 7.4 on Ubuntu 20 Rumi, May 25, 2024 Prerequisites Update the installed packages. apt update Install the Ondřej PHP repository. apt install software-properties-commonsudo add-apt-repository ppa:ondrej/php apt update Check that the repositories are correctly installed. grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* Step 1 – Install Apache apt install apache2 Step 2 – Install the PHP versions In this case, php 7.4 will be installed # PHP 7.4 apt-get install php7.4 php7.4-bcmath php7.4-dev php7.4-cli php7.4-cgi php7.4-common php7.4-gd php7.4-json php7.4-mbstring php7.4-xml php7.4-zip Step 3 – Install FastCGI # Ubuntu 16.04 apt install libapache2-mod-fastcgi # Ubuntu 18.04 or Ubuntu 20 apt install libapache2-mod-fcgid Step 4 – Setup the FastCGI handler for each PHP version Two handlers will be created, one for each PHP version installed. # PHP 7.4 vim /var/www/cgi-bin/php74.fastcgi chmod +x /var/www/cgi-bin/php74.fastcgi chown www-data:www-data /var/www/cgi-bin/php74.fastcgi php74.fastcgi #!/bin/bash PHPRC="/etc/php/7.4/cgi/php.ini" PHP_FCGI_CHILDREN=4 PHP_FCGI_MAX_REQUESTS=1000 export PHPRC export PHP_FCGI_CHILDREN export PHP_FCGI_MAX_REQUESTS exec /usr/lib/cgi-bin/php7.4 Step 5 – Configure the sites Change directory to the default web directory. # Ubuntu 16.04 cd /var/www # Ubuntu 18.04 or Ubuntu 20 cd /var/www/html Create the folders each site. mkdir php70-example Create the index files for each site. vim php74-example/index.php index.php <?php phpinfo(); ?> Step 6 – Setup the virtual hosts cd /etc/apache2/sites-available vim php74-example.conf php74-example.conf <VirtualHost *:80> ServerName php74-example ServerAdmin php74-example@example.com DocumentRoot /var/www/html/php74-example ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/html/php74-example"> Options +Indexes +FollowSymLinks +ExecCGI AddHandler fcgid-script .php FCGIWrapper /var/www/cgi-bin/php74.fastcgi .php AllowOverride All Order allow,deny Allow from All </Directory> </VirtualHost> Step 7 – Configure Apache Disable the default PHP modules. a2dismod php* Enable the necessary modules a2enmod actions alias fcgid proxy_fcgi rewrite Disable the default site. a2dissite 000-default Enable the corresponding sites a2ensite php74-example Step 8 – Restart Apache /etc/init.d/apache2 reload Step 9 – Setup the firewall sudo ufw allow 'Apache' sudo ufw allow 80/tcp sudo ufw allow 81/tcp sudo ufw disable sudo ufw enable Src: How to Install Multiple PHP Version with Apache on Debian 11/10 https://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-ubuntu-12.04 Administrations Application Collected Articles FastCGIPHP 7.4UbuntuUbuntu 20