forked from evolix/ansible-roles
132 lines
4.2 KiB
Bash
Executable file
132 lines
4.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
: "${AUTOSYSADMIN_LIB:=/usr/local/lib/autosysadmin}"
|
|
source "${AUTOSYSADMIN_LIB}/common.sh" || exit 1
|
|
source "${AUTOSYSADMIN_LIB}/repair.sh" || exit 1
|
|
|
|
pre_repair
|
|
|
|
## Apache
|
|
|
|
service="apache2.service"
|
|
service_name="apache2"
|
|
|
|
if is_systemd_enabled "${service}"; then
|
|
if is_systemd_active "${service}"; then
|
|
log_all "${service} is active. Skip."
|
|
else
|
|
# Save service status before restart
|
|
systemctl status "${service}" | save_in_log_dir "${service_name}.before.status"
|
|
|
|
# check syntax
|
|
if apache2ctl -t > /dev/null 2>&1; then
|
|
# Try to restart
|
|
timeout 20 systemctl restart "${service}" > /dev/null
|
|
rc=$?
|
|
if [ "${rc}" -eq "0" ]; then
|
|
log_action "Restart ${service_name}: OK"
|
|
else
|
|
log_action "Restart ${service_name}: failed"
|
|
fi
|
|
|
|
# Save service status after restart
|
|
systemctl status "${service}" | save_in_log_dir "${service_name}.after.status"
|
|
|
|
# Save error logs
|
|
date=$(LANG=en_US.UTF-8 date '+%b %d')
|
|
grep "${date}" /home/*/log/error.log /var/log/apache2/*error.log \
|
|
| grep -v \
|
|
-e "Got error 'PHP message:" \
|
|
-e "No matching DirectoryIndex" \
|
|
-e "client denied by server configuration" \
|
|
-e "server certificate does NOT include an ID which matches the server name" \
|
|
| save_in_log_dir "apache-errors.log"
|
|
else
|
|
log_action "Restart ${service_name}: skip (invalid configuration)"
|
|
fi
|
|
fi
|
|
else
|
|
log_all "${service} is disabled (or missing). Skip."
|
|
fi
|
|
|
|
## Nginx
|
|
|
|
service="nginx.service"
|
|
service_name="nginx"
|
|
|
|
if is_systemd_enabled "${service}"; then
|
|
if is_systemd_active "${service}"; then
|
|
log_all "${service} is active. Skip."
|
|
else
|
|
# Save service status before restart
|
|
systemctl status "${service}" | save_in_log_dir "${service_name}.before.status"
|
|
|
|
# check syntax
|
|
if nginx -t > /dev/null 2>&1; then
|
|
# Try to restart
|
|
timeout 20 systemctl restart "${service}" > /dev/null
|
|
rc=$?
|
|
if [ "${rc}" -eq "0" ]; then
|
|
log_action "Restart ${service_name}: OK"
|
|
else
|
|
log_action "Restart ${service_name}: failed"
|
|
fi
|
|
|
|
# Save service status after restart
|
|
systemctl status "${service}" | save_in_log_dir "${service_name}.after.status"
|
|
|
|
# Save error logs
|
|
### Consider doing for Nginx the same as Apache
|
|
else
|
|
log_action "Restart ${service_name}: skip (invalid configuration)"
|
|
fi
|
|
fi
|
|
else
|
|
log_all "${service} is disabled (or missing). Skip."
|
|
fi
|
|
|
|
## LXC
|
|
|
|
if is_systemd_enabled 'lxc.service'; then
|
|
for container in $(lxc-ls -1 | grep --fixed-strings 'php' | grep --extended-regexp --invert-match --regexp '\bold\b' --regexp '\bdisabled\b'); do
|
|
repair_lxc_php "${container}"
|
|
done
|
|
else
|
|
log_all "LXC is disabled (or missing). Skip."
|
|
fi
|
|
|
|
## FPM
|
|
|
|
fpm_services=$(systemd_list_services 'php*-fpm*')
|
|
if [ -n "${fpm_services}" ]; then
|
|
for service in ${fpm_services}; do
|
|
service_name="${service//.service/}"
|
|
if is_systemd_enabled "${service}"; then
|
|
if is_systemd_active "${service}"; then
|
|
log_all "${service} is active. Skip."
|
|
else
|
|
# Save service status before restart
|
|
systemctl status "${service}" | save_in_log_dir "${service_name}.before.status"
|
|
|
|
# Try to restart
|
|
timeout 20 systemctl restart "${service}" > /dev/null
|
|
rc=$?
|
|
if [ "${rc}" -eq "0" ]; then
|
|
log_action "Restart ${service_name}: OK"
|
|
else
|
|
log_action "Restart ${service_name}: failed"
|
|
fi
|
|
|
|
# Save service status after restart
|
|
systemctl status "${service}" | save_in_log_dir "${service_name}.after.status"
|
|
fi
|
|
else
|
|
log_all "${service} is disabled (or missing). Skip."
|
|
fi
|
|
done
|
|
else
|
|
log_all "PHP FPM not found. Skip."
|
|
fi
|
|
|
|
post_repair
|