tools: add standalone prepare_php.sh script.
This commit is contained in:
		
							parent
							
								
									73f8a452c8
								
							
						
					
					
						commit
						44981e6c3e
					
				| 
						 | 
				
			
			@ -0,0 +1,126 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
# Automated PHP environment build for Nextcloud.
 | 
			
		||||
# SwITNet Ltd © - 2024, https://switnet.net/
 | 
			
		||||
# GPLv3 or later.
 | 
			
		||||
 | 
			
		||||
PHPVER=$1
 | 
			
		||||
STABLE_PHP="$(apt-cache madison php|grep -v ppa|awk -F'[:+]' 'NR==1{print $2}')"
 | 
			
		||||
PHP_REPO="$(apt-cache policy | awk '/http/&&/php/{print$2}' | awk -F "/" 'NR==1{print$5}')"
 | 
			
		||||
PHP_FPM_DIR="/etc/php/$PHPVER/fpm"
 | 
			
		||||
PHP_INI="$PHP_FPM_DIR/php.ini"
 | 
			
		||||
PHP_CONF="/etc/php/$PHPVER/fpm/pool.d/www.conf"
 | 
			
		||||
TMP_GPG_REPO="$(mktemp -d)"
 | 
			
		||||
 | 
			
		||||
if [ $# -ne 1 ]; then
 | 
			
		||||
  echo "Usage: $0 8.2"
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
install_aval_package() {
 | 
			
		||||
for i in $1
 | 
			
		||||
  do
 | 
			
		||||
     if [ -z "$(apt-cache madison "$i" 2>/dev/null)" ]; then
 | 
			
		||||
     echo " > Package $i not available on repo."
 | 
			
		||||
     else
 | 
			
		||||
     echo " > Add package $i to the install list"
 | 
			
		||||
     packages="$packages $i"
 | 
			
		||||
     fi
 | 
			
		||||
 done
 | 
			
		||||
 echo "$packages"
 | 
			
		||||
 apt-get -y install "$packages"
 | 
			
		||||
 packages=""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_gpg_keyring() {
 | 
			
		||||
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com "$1"
 | 
			
		||||
apt-key export "$1" | gpg --dearmour | tee "$TMP_GPG_REPO"/"$1".gpg >/dev/null
 | 
			
		||||
apt-key del "$1"
 | 
			
		||||
mv "$TMP_GPG_REPO"/"$1".gpg /etc/apt/trusted.gpg.d/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_php_repo() {
 | 
			
		||||
if [ "$PHP_REPO" = "php" ]; then
 | 
			
		||||
    echo "PHP $PHPVER already installed"
 | 
			
		||||
    apt-get -q2 update
 | 
			
		||||
    apt-get -yq2 dist-upgrade
 | 
			
		||||
else
 | 
			
		||||
    echo "# Adding Ondrej PHP $PHPVER PPA Repository"
 | 
			
		||||
    add_gpg_keyring E5267A6C
 | 
			
		||||
    echo "deb [arch=amd64] http://ppa.launchpad.net/ondrej/php/ubuntu $DISTRO_RELEASE main" > /etc/apt/sources.list.d/php"$PHPVER".list
 | 
			
		||||
    apt-get update -q2
 | 
			
		||||
fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
add_php_repo
 | 
			
		||||
 | 
			
		||||
install_aval_package " \
 | 
			
		||||
            imagemagick \
 | 
			
		||||
            php$PHPVER-fpm \
 | 
			
		||||
            php$PHPVER-bcmath \
 | 
			
		||||
            php$PHPVER-bz2 \
 | 
			
		||||
            php$PHPVER-cli \
 | 
			
		||||
            php$PHPVER-cgi \
 | 
			
		||||
            php$PHPVER-curl \
 | 
			
		||||
            php$PHPVER-gd \
 | 
			
		||||
            php$PHPVER-gmp \
 | 
			
		||||
            php$PHPVER-imagick \
 | 
			
		||||
            php$PHPVER-intl \
 | 
			
		||||
            php$PHPVER-json \
 | 
			
		||||
            php$PHPVER-ldap \
 | 
			
		||||
            php$PHPVER-mbstring \
 | 
			
		||||
            php$PHPVER-pgsql \
 | 
			
		||||
            php$PHPVER-redis \
 | 
			
		||||
            php$PHPVER-soap \
 | 
			
		||||
            php$PHPVER-xml \
 | 
			
		||||
            php$PHPVER-xmlrpc \
 | 
			
		||||
            php$PHPVER-zip \
 | 
			
		||||
            redis-server \
 | 
			
		||||
            unzip \
 | 
			
		||||
            "
 | 
			
		||||
 | 
			
		||||
#System related
 | 
			
		||||
install_ifnot smbclient
 | 
			
		||||
sed -i "s|.*env\[HOSTNAME\].*|env\[HOSTNAME\] = \$HOSTNAME|" "$PHP_CONF"
 | 
			
		||||
sed -i "s|.*env\[PATH\].*|env\[PATH\] = /usr/local/bin:/usr/bin:/bin|" "$PHP_CONF"
 | 
			
		||||
sed -i "s|.*env\[TMP\].*|env\[TMP\] = /tmp|" "$PHP_CONF"
 | 
			
		||||
sed -i "s|.*env\[TMPDIR\].*|env\[TMPDIR\] = /tmp|" "$PHP_CONF"
 | 
			
		||||
sed -i "s|.*env\[TEMP\].*|env\[TEMP\] = /tmp|" "$PHP_CONF"
 | 
			
		||||
sed -i "s|;clear_env = no|clear_env = no|" "$PHP_CONF"
 | 
			
		||||
 | 
			
		||||
echo "
 | 
			
		||||
Tunning PHP.ini...
 | 
			
		||||
"
 | 
			
		||||
# Change values in php.ini (increase max file size)
 | 
			
		||||
# max_execution_time
 | 
			
		||||
sed -i "s|max_execution_time =.*|max_execution_time = 3500|g" "$PHP_INI"
 | 
			
		||||
# max_input_time
 | 
			
		||||
sed -i "s|max_input_time =.*|max_input_time = 3600|g" "$PHP_INI"
 | 
			
		||||
# memory_limit
 | 
			
		||||
sed -i "s|memory_limit =.*|memory_limit = 512M|g" "$PHP_INI"
 | 
			
		||||
# post_max
 | 
			
		||||
sed -i "s|post_max_size =.*|post_max_size = 1025M|g" "$PHP_INI"
 | 
			
		||||
# upload_max
 | 
			
		||||
sed -i "s|upload_max_filesize =.*|upload_max_filesize = 1024M|g" "$PHP_INI"
 | 
			
		||||
 | 
			
		||||
phpenmod opcache
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
echo "# OPcache settings for Nextcloud"
 | 
			
		||||
echo "opcache.enable=1"
 | 
			
		||||
echo "opcache.enable_cli=1"
 | 
			
		||||
echo "opcache.interned_strings_buffer=8"
 | 
			
		||||
echo "opcache.max_accelerated_files=10000"
 | 
			
		||||
echo "opcache.memory_consumption=256"
 | 
			
		||||
echo "opcache.save_comments=1"
 | 
			
		||||
echo "opcache.revalidate_freq=1"
 | 
			
		||||
echo "opcache.validate_timestamps=1"
 | 
			
		||||
} >> "$PHP_INI"
 | 
			
		||||
 | 
			
		||||
update-alternatives --set php           /usr/bin/php"$STABLE_PHP"
 | 
			
		||||
update-alternatives --set php-fpm.sock  /run/php/php"$STABLE_PHP"-fpm.sock
 | 
			
		||||
update-alternatives --set php-cgi      	/usr/bin/php-cgi"$STABLE_PHP"
 | 
			
		||||
update-alternatives --set php-cgi-bin   /usr/lib/cgi-bin/php"$STABLE_PHP"
 | 
			
		||||
update-alternatives --set phar          /usr/bin/phar"$STABLE_PHP"
 | 
			
		||||
update-alternatives --set phar.phar     /usr/bin/phar.phar"$STABLE_PHP"
 | 
			
		||||
 | 
			
		||||
systemctl restart php"$PHPVER"-fpm.service
 | 
			
		||||
		Loading…
	
		Reference in New Issue