Update mysql_install.sh
This commit is contained in:
parent
386c795ea4
commit
1a48f887d5
|
|
@ -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 "$@"
|
||||
Loading…
Reference in New Issue