Skip to content

Instantly share code, notes, and snippets.

@devinci-it
Created March 12, 2026 09:26
Show Gist options
  • Select an option

  • Save devinci-it/11fc95cd213cf1c3769484c36e00f132 to your computer and use it in GitHub Desktop.

Select an option

Save devinci-it/11fc95cd213cf1c3769484c36e00f132 to your computer and use it in GitHub Desktop.
Simple LAMP + Composer installer for Ubuntu/Debian
#!/bin/bash
# Simple LAMP + Composer installer for Ubuntu/Debian
set -e
echo "Starting LAMP + Composer installation..."
# Update system
echo "Updating package list..."
sudo apt update -y
sudo apt upgrade -y
# Install Apache
echo "Installing Apache..."
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2
# Install PHP and common extensions
echo "Installing PHP and common extensions..."
sudo apt install php libapache2-mod-php php-cli php-mysql php-curl php-json php-mbstring php-xml php-zip -y
# Install MySQL or MariaDB
read -p "Do you want to install MySQL or MariaDB? (mysql/mariadb): " db_choice
if [[ "$db_choice" == "mysql" ]]; then
echo "Installing MySQL server..."
sudo apt install mysql-server -y
sudo systemctl enable mysql
sudo systemctl start mysql
elif [[ "$db_choice" == "mariadb" ]]; then
echo "Installing MariaDB server..."
sudo apt install mariadb-server -y
sudo systemctl enable mariadb
sudo systemctl start mariadb
else
echo "Invalid choice, skipping database installation."
fi
# Install Composer
echo "Installing Composer..."
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
echo 'ERROR: Invalid Composer installer checksum'
rm composer-setup.php
exit 1
fi
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
# Enable Apache mods and restart
sudo a2enmod rewrite
sudo systemctl restart apache2
echo "Installation complete!"
echo "Apache version: $(apache2 -v | grep 'Server version')"
echo "PHP version: $(php -v | head -n 1)"
if [[ "$db_choice" == "mysql" ]]; then
echo "MySQL version: $(mysql --version)"
elif [[ "$db_choice" == "mariadb" ]]; then
echo "MariaDB version: $(mariadb --version)"
fi
echo "Composer version: $(composer --version)"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment