Update mysql_install.sh

This commit is contained in:
RomanNum3ral 2026-04-07 13:03:07 +00:00
parent 386c795ea4
commit 1a48f887d5
1 changed files with 61 additions and 16 deletions

View File

@ -6,6 +6,7 @@ set -Eeuo pipefail
# Includes:
# - Apache prefork fix for mod_php
# - ServerName fix
# - Proper PHP handler so PHP executes instead of displaying as text
# ============================================================
DB_ROOT_PASSWORD="${DB_ROOT_PASSWORD:-}"
@ -54,9 +55,21 @@ append_if_missing() {
grep -Fqx "$line" "$file" 2>/dev/null || echo "$line" >> "$file"
}
# ============================================================
# FIX 1: Apache MPM (required for mod_php)
# ============================================================
ensure_block_if_missing() {
local file="$1"
local marker="$2"
local block="$3"
if ! grep -Fq "$marker" "$file"; then
printf '\n%s\n' "$block" >> "$file"
fi
}
install_packages() {
log "Installing packages"
pacman -Sy --needed --noconfirm mariadb apache php php-apache phpmyadmin openssl
}
configure_apache_mpm_for_php() {
log "Switching Apache from threaded MPM to prefork for mod_php"
@ -65,18 +78,15 @@ configure_apache_mpm_for_php() {
sed -i 's|^LoadModule mpm_event_module modules/mod_mpm_event.so|#LoadModule mpm_event_module modules/mod_mpm_event.so|' "$HTTPD_CONF" || true
sed -i 's|^#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so|LoadModule mpm_prefork_module modules/mod_mpm_prefork.so|' "$HTTPD_CONF" || true
if ! grep -q "mpm_prefork_module" "$HTTPD_CONF"; then
if ! grep -Eq '^[[:space:]]*LoadModule mpm_prefork_module modules/mod_mpm_prefork.so' "$HTTPD_CONF"; then
echo 'LoadModule mpm_prefork_module modules/mod_mpm_prefork.so' >> "$HTTPD_CONF"
fi
}
# ============================================================
# FIX 2: ServerName warning
# ============================================================
configure_server_name() {
log "Setting Apache ServerName"
if ! grep -q "^ServerName" "$HTTPD_CONF"; then
if ! grep -Eq '^[[:space:]]*ServerName[[:space:]]+' "$HTTPD_CONF"; then
echo "ServerName localhost" >> "$HTTPD_CONF"
fi
}
@ -86,11 +96,21 @@ enable_php_module_httpd() {
backup_file "$HTTPD_CONF"
sed -i 's|^#LoadModule php_module modules/libphp.so|LoadModule php_module modules/libphp.so|' "$HTTPD_CONF" || true
if grep -Eq '^[#[:space:]]*LoadModule php_module modules/libphp.so' "$HTTPD_CONF"; then
sed -i 's|^[#[:space:]]*LoadModule php_module modules/libphp.so|LoadModule php_module modules/libphp.so|' "$HTTPD_CONF"
elif ! grep -Eq '^[[:space:]]*LoadModule php_module modules/libphp.so' "$HTTPD_CONF"; then
echo 'LoadModule php_module modules/libphp.so' >> "$HTTPD_CONF"
fi
append_if_missing "$HTTPD_CONF" "AddHandler php-script .php"
append_if_missing "$HTTPD_CONF" "Include conf/extra/php_module.conf"
append_if_missing "$HTTPD_CONF" "Include conf/extra/phpmyadmin.conf"
ensure_block_if_missing "$HTTPD_CONF" "<FilesMatch \\.php\$>" '<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
DirectoryIndex index.php index.html'
}
configure_php() {
@ -98,8 +118,16 @@ configure_php() {
backup_file "$PHP_INI"
sed -i 's|^;*extension=mysqli|extension=mysqli|' "$PHP_INI" || true
sed -i 's|^;*extension=pdo_mysql|extension=pdo_mysql|' "$PHP_INI" || true
sed -i 's|^[;[:space:]]*extension=mysqli|extension=mysqli|' "$PHP_INI" || true
sed -i 's|^[;[:space:]]*extension=pdo_mysql|extension=pdo_mysql|' "$PHP_INI" || true
if ! grep -Eq '^[[:space:]]*extension=mysqli' "$PHP_INI"; then
echo 'extension=mysqli' >> "$PHP_INI"
fi
if ! grep -Eq '^[[:space:]]*extension=pdo_mysql' "$PHP_INI"; then
echo 'extension=pdo_mysql' >> "$PHP_INI"
fi
}
configure_phpmyadmin_apache() {
@ -126,13 +154,22 @@ generate_blowfish_secret() {
configure_phpmyadmin_main() {
log "Configuring phpMyAdmin"
[[ -f "$PHPMYADMIN_MAIN_CONF" ]] || die "phpMyAdmin config not found at $PHPMYADMIN_MAIN_CONF"
backup_file "$PHPMYADMIN_MAIN_CONF"
local blowfish
blowfish="$(generate_blowfish_secret)"
echo "\$cfg['blowfish_secret'] = '${blowfish}';" >> "$PHPMYADMIN_MAIN_CONF"
echo "\$cfg['Servers'][\$i]['auth_type'] = 'cookie';" >> "$PHPMYADMIN_MAIN_CONF"
if ! grep -Fq "\$cfg['blowfish_secret']" "$PHPMYADMIN_MAIN_CONF"; then
echo "\$cfg['blowfish_secret'] = '${blowfish}';" >> "$PHPMYADMIN_MAIN_CONF"
fi
if grep -Fq "\$cfg['Servers'][\$i]['auth_type']" "$PHPMYADMIN_MAIN_CONF"; then
sed -i "s|\$cfg\['Servers'\]\[\$i\]\['auth_type'\][[:space:]]*=.*|\$cfg['Servers'][\$i]['auth_type'] = 'cookie';|" "$PHPMYADMIN_MAIN_CONF"
else
echo "\$cfg['Servers'][\$i]['auth_type'] = 'cookie';" >> "$PHPMYADMIN_MAIN_CONF"
fi
}
initialize_mariadb() {
@ -166,6 +203,7 @@ secure_mariadb() {
mariadb <<SQL
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
DROP DATABASE IF EXISTS test;
ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_ROOT_PASSWORD}';
FLUSH PRIVILEGES;
@ -179,9 +217,15 @@ write_php_test_page() {
echo "<?php phpinfo(); ?>" > "$INFO_FILE"
}
install_packages() {
log "Installing packages"
pacman -Sy --needed --noconfirm mariadb apache php php-apache phpmyadmin openssl
print_summary() {
echo
echo "Done."
echo "phpMyAdmin: http://localhost/phpmyadmin"
echo "PHP test: http://localhost/info.php"
echo
echo "MariaDB root password: ${DB_ROOT_PASSWORD}"
echo
echo "Delete ${INFO_FILE} after testing."
}
main() {
@ -198,6 +242,7 @@ main() {
start_enable_services
secure_mariadb
write_php_test_page
print_summary
}
main "$@"