Add script 'check-php-socket-path.sh'.
This commit is contained in:
parent
d7610514a5
commit
f0240489eb
449
check-php-socket-path.sh
Executable file
449
check-php-socket-path.sh
Executable file
@ -0,0 +1,449 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CUR_IFS="$IFS"
|
||||
|
||||
script_name="$(basename $(realpath $0))"
|
||||
script_dir="$(dirname $(realpath $0))"
|
||||
|
||||
conf_dir="${script_dir}/conf"
|
||||
|
||||
declare -a unsorted_website_arr
|
||||
declare -a website_arr
|
||||
|
||||
log_file="$(mktemp)"
|
||||
|
||||
backup_date=$(date +%Y-%m-%d-%H%M)
|
||||
|
||||
|
||||
# =============
|
||||
# --- Some functions
|
||||
# =============
|
||||
|
||||
clean_up() {
|
||||
|
||||
|
||||
if [[ -f "$_backup_crontab_file" ]]; then
|
||||
|
||||
blank_line
|
||||
echononl "(Re)Install previously saved crontab from '$_backup_crontab_file'.."
|
||||
|
||||
crontab $_backup_crontab_file >> $log_file 2>&1
|
||||
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat $log_file)"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# Perform program exit housekeeping
|
||||
rm -f $log_file
|
||||
blank_line
|
||||
exit $1
|
||||
}
|
||||
|
||||
is_number() {
|
||||
|
||||
return $(test ! -z "${1##*[!0-9]*}" > /dev/null 2>&1);
|
||||
|
||||
# - also possible
|
||||
# -
|
||||
#[[ ! -z "${1##*[!0-9]*}" ]] && return 0 || return 1
|
||||
#return $([[ ! -z "${1##*[!0-9]*}" ]])
|
||||
}
|
||||
|
||||
echononl(){
|
||||
echo X\\c > /tmp/shprompt$$
|
||||
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
|
||||
echo -e -n "$*\\c" 1>&2
|
||||
else
|
||||
echo -e -n "$*" 1>&2
|
||||
fi
|
||||
rm /tmp/shprompt$$
|
||||
}
|
||||
echo_done() {
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[32mdone\033[m ]"
|
||||
else
|
||||
echo " [ done ]"
|
||||
fi
|
||||
}
|
||||
echo_ok() {
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[32mok\033[m ]"
|
||||
else
|
||||
echo " [ ok ]"
|
||||
fi
|
||||
}
|
||||
echo_warning() {
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[33m\033[1mwarn\033[m ]"
|
||||
else
|
||||
echo " [ warning ]"
|
||||
fi
|
||||
}
|
||||
echo_failed(){
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
|
||||
else
|
||||
echo ' [ failed! ]'
|
||||
fi
|
||||
}
|
||||
echo_skipped() {
|
||||
if $terminal ; then
|
||||
echo -e "\033[75G[ \033[37mskipped\033[m ]"
|
||||
else
|
||||
echo " [ skipped ]"
|
||||
fi
|
||||
}
|
||||
fatal (){
|
||||
echo ""
|
||||
echo ""
|
||||
if $terminal ; then
|
||||
echo -e "\t[ \033[31m\033[1mFatal\033[m ]: \033[37m\033[1m$*\033[m"
|
||||
echo ""
|
||||
echo -e "\t\033[31m\033[1m Script will be interrupted..\033[m\033[m"
|
||||
else
|
||||
echo "fatal: $*"
|
||||
echo "Script will be interrupted.."
|
||||
fi
|
||||
clean_up 1
|
||||
}
|
||||
|
||||
error(){
|
||||
echo ""
|
||||
if $terminal ; then
|
||||
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
|
||||
else
|
||||
echo "Error: $*"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
warn (){
|
||||
echo ""
|
||||
if $terminal ; then
|
||||
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
|
||||
else
|
||||
echo "Warning: $*"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
info (){
|
||||
echo ""
|
||||
if $terminal ; then
|
||||
echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*"
|
||||
else
|
||||
echo "Info: $*"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
detect_os_1 () {
|
||||
|
||||
if $(which lsb_release > /dev/null 2>&1) ; then
|
||||
|
||||
os_dist="$(lsb_release -i | awk '{print tolower($3)}')"
|
||||
os_version="$(lsb_release -r | awk '{print tolower($2)}')"
|
||||
os_codename="$(lsb_release -c | awk '{print tolower($2)}')"
|
||||
|
||||
if [[ "$os_dist" = "debian" ]]; then
|
||||
if $(echo "$os_version" | grep -q '\.') ; then
|
||||
os_version=$(echo "$os_version" | cut --delimiter='.' -f1)
|
||||
fi
|
||||
fi
|
||||
|
||||
elif [[ -e "/etc/os-release" ]]; then
|
||||
|
||||
. /etc/os-release
|
||||
|
||||
os_dist=$ID
|
||||
os_version=${VERSION_ID}
|
||||
|
||||
fi
|
||||
|
||||
# remove whitespace from os_dist and os_version
|
||||
os_dist="${os_dist// /}"
|
||||
os_version="${os_version// /}"
|
||||
|
||||
}
|
||||
|
||||
## - Check if a given array (parameter 2) contains a given string (parameter 1)
|
||||
## -
|
||||
containsElement () {
|
||||
local e
|
||||
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
|
||||
return 1
|
||||
}
|
||||
|
||||
blank_line() {
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# ----------
|
||||
# - Jobhandling
|
||||
# ----------
|
||||
|
||||
# - Run 'clean_up' for signals SIGHUP SIGINT SIGTERM
|
||||
# -
|
||||
trap clean_up SIGHUP SIGINT SIGTERM
|
||||
|
||||
|
||||
# ----------
|
||||
# - Some checks ..
|
||||
# ----------
|
||||
|
||||
# - Running in a terminal?
|
||||
# -
|
||||
if [[ -t 1 ]] ; then
|
||||
terminal=true
|
||||
else
|
||||
terminal=false
|
||||
fi
|
||||
|
||||
|
||||
# ----------
|
||||
# Read Configurations from $conf_file
|
||||
# ----------
|
||||
|
||||
|
||||
# ==========
|
||||
# - Begin Main Script
|
||||
# ==========
|
||||
|
||||
# ----------
|
||||
# - Headline
|
||||
# ----------
|
||||
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
echo -e "\033[1m----------\033[m"
|
||||
echo -e "\033[32m\033[1mRunning script \033[m\033[1m$script_name\033[32m .. \033[m"
|
||||
echo -e "\033[1m----------\033[m"
|
||||
fi
|
||||
|
||||
|
||||
# - Determin httpd binary
|
||||
# -
|
||||
_httpd_binary="`which httpd`"
|
||||
if [ -z "$_httpd_binary" ]; then
|
||||
_httpd_binary="$(ps -axu | grep httpd | grep -e "^root" | grep -v grep | awk '{print$11}')"
|
||||
if [ -z "$_httpd_binary" ]; then
|
||||
if [ -x "/usr/local/apache2/bin/httpd" ]; then
|
||||
_httpd_binary="/usr/local/apache2/bin/httpd"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# - Determin ServerRoot Directory
|
||||
# -
|
||||
apache_base_dir=`$_httpd_binary -t -D DUMP_RUN_CFG | grep ServerRoot | awk '{print$2}' | tr -d '"'`
|
||||
if [ "`realpath /usr/local/apache2`" = "$apache_base_dir" ]; then
|
||||
apache_base_dir="/usr/local/apache2"
|
||||
_apache_base_dir_realpath="`realpath $apache_base_dir`"
|
||||
elif [ -z "$apache_base_dir" ]; then
|
||||
if [ -d "`realpath /usr/local/apache2`" ];then
|
||||
apache_base_dir="/usr/local/apache2"
|
||||
_apache_base_dir_realpath="`realpath $apache_base_dir`"
|
||||
fi
|
||||
else
|
||||
_apache_base_dir_realpath=$apache_base_dir
|
||||
fi
|
||||
if [ -z "$apache_base_dir" ];then
|
||||
_base_webserver_info_needed=true
|
||||
else
|
||||
_pass_apache_base_dir=true
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# - Determine the installed different PHP major versions
|
||||
# -
|
||||
__major_php_verisons=""
|
||||
_php_installation_dirs=`find /usr/local -mindepth 1 -maxdepth 1 -type l -name "*php-*" -print | sort`
|
||||
for dir in $_php_installation_dirs ; do
|
||||
_major_version="${dir##*-}"
|
||||
__major_php_verisons="$__major_php_verisons $_major_version"
|
||||
done
|
||||
_major_php_verisons=`echo "$__major_php_verisons" | sed 's/^ *//'`
|
||||
|
||||
clear
|
||||
|
||||
__vhost_base_dir=${apache_base_dir}/conf/vhosts
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo ""
|
||||
echo "Insert Directory where the vhost configuration file should stay.."
|
||||
echo ""
|
||||
echo ""
|
||||
_vhost_base_dir=
|
||||
while [ "X$_vhost_base_dir" = "X" ] ; do
|
||||
echononl "VHost Base Directory [$__vhost_base_dir]: "
|
||||
read _vhost_base_dir
|
||||
if [ "X$_vhost_base_dir" = "X" ]; then
|
||||
_vhost_base_dir=$__vhost_base_dir
|
||||
fi
|
||||
if [ ! -d "$_vhost_base_dir" ];then
|
||||
echo -e "\n\t\033[1;33mDirectory \"${_vhost_base_dir}\" not found! Try again..\033[m\n"
|
||||
_vhost_base_dir=""
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
echo ""
|
||||
echo -e " \033[32m\033[1mParameter Summary:\033[m"
|
||||
echo ""
|
||||
|
||||
echo " PHP installed versions.............: $_major_php_verisons"
|
||||
echo ""
|
||||
echo " Apache VHost directory.............: $_vhost_base_dir"
|
||||
|
||||
echo ""
|
||||
echononl " \033[33mContinue with this parameters? [\033[1myes/no\033[m]: "
|
||||
read OK
|
||||
while [[ "${OK,,}" != "yes" ]] && [[ "${OK,,}" != "no" ]] ; do
|
||||
echononl " \033[33mWrong entry!\033[m [\033[1myes/no\033[m]: "
|
||||
read OK
|
||||
done
|
||||
[[ "${OK,,}" = "yes" ]] || fatal "Canceled by user input."
|
||||
|
||||
|
||||
# ----------
|
||||
# - Some pre-script tasks ..
|
||||
# ----------
|
||||
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e " \033[32m-----\033[m"
|
||||
echo -e " \033[1mDoing some pre-script tasks ..\033[m"
|
||||
echo -e " \033[32m-----\033[m"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echononl " Backup vhost directory \033[1m${_vhost_base_dir}\033[m"
|
||||
cp -a "${_vhost_base_dir}" "${_vhost_base_dir}.${backup_date}" > $log_file 2>&1
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat $log_file)"
|
||||
fi
|
||||
|
||||
|
||||
# ----------
|
||||
# - Main part of script
|
||||
# ----------
|
||||
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e " \033[32m-----\033[m"
|
||||
echo -e " \033[1mMain part of script ..\033[m"
|
||||
echo -e " \033[32m-----\033[m"
|
||||
fi
|
||||
|
||||
_changed=false
|
||||
for __version in ${_major_php_verisons} ; do
|
||||
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
echo -e " Check socket path for PHP version $__version"
|
||||
echo ""
|
||||
fi
|
||||
_changed_version=false
|
||||
|
||||
if [[ -S "/tmp/php-${__version}-fpm.www.sock" ]]; then
|
||||
_socket_path="/tmp"
|
||||
elif [[ -S "/run/php/php-${__version}-fpm.www.sock" ]]; then
|
||||
_socket_path="/run/php"
|
||||
else
|
||||
warn "No PHP socket file found for version $__version .."
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
for _file in $(ls -d ${_vhost_base_dir}/*) ; do
|
||||
|
||||
if [[ -d "$_file" ]] ; then
|
||||
continue
|
||||
fi
|
||||
if [[ -h "$_file" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if grep -q -e "${__version}-fpm.www.sock" "$_file" > /dev/null 2>&1 ; then
|
||||
|
||||
if ! grep -q -e "${_socket_path}/php-${__version}-fpm.www.sock" "$_file" > /dev/null 2>&1 ; then
|
||||
|
||||
echononl " Change vhost configuration \033[1m$(basename "$_file")\033[m"
|
||||
|
||||
perl -i -n -p -e "s#(.+proxy:unix:).+${__version}-fpm.www.sock(\|.*)#\1${_socket_path}/php-${__version}-fpm.www.sock\2#" $_file > $log_file 2>&1
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo_ok
|
||||
_changed=true
|
||||
_changed_version=true
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat $log_file)"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
if ! $_changed_version ; then
|
||||
echo -e " -- \033[33mNothing to do\033[m --"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
|
||||
|
||||
# ----------
|
||||
# - Some post-script tasks ..
|
||||
# ----------
|
||||
|
||||
if $terminal ; then
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e " \033[32m-----\033[m"
|
||||
echo -e " \033[1mDoing some post-script tasks ..\033[m"
|
||||
echo -e " \033[32m-----\033[m"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echononl " Restart apache webservice.."
|
||||
if $_changed ; then
|
||||
systemctl restart apache2 > $log_file 2>&1
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo_ok
|
||||
_changed=true
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat $log_file)"
|
||||
fi
|
||||
else
|
||||
echo_skipped
|
||||
|
||||
echo ""
|
||||
echo " Nothing has changed"
|
||||
echononl " Remove previously created backup of '${_vhost_base_dir}'."
|
||||
rm -rf "${_vhost_base_dir}.${backup_date}" > $log_file 2>&1
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo_ok
|
||||
_changed=true
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat $log_file)"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
clean_up 0
|
Loading…
Reference in New Issue
Block a user