Created
January 7, 2022 20:00
-
-
Save svpernova09/9c3e4c1c2c89f4efb7cc7ba1b343fc74 to your computer and use it in GitHub Desktop.
Install PHP 7.4, 8.0, PHP-FPM, and Apache2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# install basics | |
apt-get install -y php-imagick php-memcached php-redis php-xdebug php-dev imagemagick mcrypt | |
# install packages | |
apt-get install -y \ | |
apache2 libapache2-mod-fcgid php7.4 php7.4-bcmath php7.4-bz2 php7.4-cgi php7.4-cli php7.4-common php7.4-curl php7.4-dba php7.4-dev php7.4-enchant php7.4-fpm php7.4-gd php7.4-gmp php7.4-imap php7.4-interbase php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mysql php7.4-odbc php7.4-opcache php7.4-pgsql php7.4-phpdbg php7.4-pspell php7.4-readline php7.4-snmp php7.4-soap php7.4-sqlite3 php7.4-sybase php7.4-tidy php7.4-xdebug php7.4-xml php7.4-xmlrpc php7.4-xsl php7.4-zip php7.4-imagick php7.4-memcached php7.4-redis php8.0 php8.0-bcmath php8.0-bz2 php8.0-cgi php8.0-cli php8.0-common php8.0-curl php8.0-dba php8.0-dev php8.0-enchant php8.0-fpm php8.0-gd php8.0-gmp php8.0-imap php8.0-interbase php8.0-intl php8.0-ldap php8.0-mbstring php8.0-mysql php8.0-odbc php8.0-opcache php8.0-pgsql php8.0-phpdbg php8.0-pspell php8.0-readline php8.0-snmp php8.0-soap php8.0-sqlite3 php8.0-sybase php8.0-tidy php8.0-xdebug php8.0-xml php8.0-xmlrpc php8.0-xsl php8.0-zip php8.0-memcached php8.0-redis | |
# Configure php.ini for CLI | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.4/cli/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.4/cli/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.4/cli/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.4/cli/php.ini | |
# Configure Xdebug | |
echo "xdebug.mode = debug" >> /etc/php/7.4/mods-available/xdebug.ini | |
echo "xdebug.discover_client_host = true" >> /etc/php/7.4/mods-available/xdebug.ini | |
echo "xdebug.client_port = 9003" >> /etc/php/7.4/mods-available/xdebug.ini | |
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.4/mods-available/xdebug.ini | |
echo "opcache.revalidate_freq = 0" >> /etc/php/7.4/mods-available/opcache.ini | |
# Configure php.ini for FPM | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.4/fpm/php.ini | |
printf "[openssl]\n" | tee -a /etc/php/7.4/fpm/php.ini | |
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.4/fpm/php.ini | |
printf "[curl]\n" | tee -a /etc/php/7.4/fpm/php.ini | |
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.4/fpm/php.ini | |
# Configure FPM | |
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.4/fpm/pool.d/www.conf | |
# Configure php.ini for CLI | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.0/cli/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.0/cli/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.0/cli/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.0/cli/php.ini | |
# Configure Xdebug | |
echo "xdebug.mode = debug" >> /etc/php/8.0/mods-available/xdebug.ini | |
echo "xdebug.discover_client_host = true" >> /etc/php/8.0/mods-available/xdebug.ini | |
echo "xdebug.client_port = 9003" >> /etc/php/8.0/mods-available/xdebug.ini | |
echo "xdebug.max_nesting_level = 512" >> /etc/php/8.0/mods-available/xdebug.ini | |
echo "opcache.revalidate_freq = 0" >> /etc/php/8.0/mods-available/opcache.ini | |
# Configure php.ini for FPM | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.0/fpm/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.0/fpm/php.ini | |
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/8.0/fpm/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.0/fpm/php.ini | |
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/8.0/fpm/php.ini | |
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/8.0/fpm/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.0/fpm/php.ini | |
printf "[openssl]\n" | tee -a /etc/php/8.0/fpm/php.ini | |
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.0/fpm/php.ini | |
printf "[curl]\n" | tee -a /etc/php/8.0/fpm/php.ini | |
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.0/fpm/php.ini | |
# Configure FPM | |
sed -i "s/user = www-data/user = vagrant/" /etc/php/8.0/fpm/pool.d/www.conf | |
sed -i "s/group = www-data/group = vagrant/" /etc/php/8.0/fpm/pool.d/www.conf | |
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/8.0/fpm/pool.d/www.conf | |
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/8.0/fpm/pool.d/www.conf | |
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/8.0/fpm/pool.d/www.conf | |
# Configure Apache | |
sed -i "s/www-data/vagrant/" /etc/apache2/envvars | |
# Enable FPM | |
a2enconf php8.0-fpm | |
# Assume user wants mode_rewrite support | |
sudo a2enmod rewrite | |
# Turn on HTTPS support | |
sudo a2enmod ssl | |
# Turn on proxy & fcgi | |
sudo a2enmod proxy proxy_fcgi | |
# Turn on headers support | |
sudo a2enmod headers actions alias | |
# Add Mutex to config to prevent auto restart issues | |
if [ -z "$(grep '^Mutex posixsem$' /etc/apache2/apache2.conf)" ] | |
then | |
echo 'Mutex posixsem' | sudo tee -a /etc/apache2/apache2.conf | |
fi | |
a2dissite 000-default |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment