Last active
November 12, 2024 15:20
-
-
Save emilas44/fb4ac8c7f7384a3fe3ac3edab532f49f to your computer and use it in GitHub Desktop.
Bash script to install NGINX, PHP, MYSQL, ZSH, GIT, ZIP, SUPERVISOR, COMPOSER
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
PHP_VERSION=8.3 | |
export OS_USER_PASSWORD="password" | |
export MYSQL_ROOT_PASSWORD="password" | |
export MYSQL_USER_PASSWORD="password" | |
echo " | |
βββββββββββββββββββββββββ βββ βββββββ βββββββ ββββββ βββ ββββββββββββββββ | |
βββββββββββββββββββββββββ βββ ββββββββββββββββββββββββββββ ββββββββββββββββ | |
ββββββββββββββ ββββββββββββ βββ ββββββ βββββββββββ ββββββ ββββββββ | |
ββββββββββββββ ββββββββββββ βββ ββββββ βββββββββββ ββββββ ββββββββ | |
ββββββββββββββββ βββ ββββββββββββββββββββββββββββ βββββββββββββββββββββββββββ | |
ββββββββββββββββ βββ ββββββββ βββββββ ββββββββββ βββββββββββββββββββββββββββ | |
" | |
#sudo dpkg-reconfigure locales | |
sudo tee -a /etc/locale.gen << EOF | |
de_DE.UTF-8 UTF-8 | |
EOF | |
sudo locale-gen | |
sudo dpkg-reconfigure tzdata | |
#sudo ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime | |
#sudo dpkg-reconfigure -f noninteractive tzdata | |
echo " | |
ββββββ βββββββ βββββββββ βββββββ βββββββββββββββββ βββ ββββββββββ βββββββ ββββββ βββββββββββββββββ | |
βββββββββββββββββββββββββ ββββββββ βββββββββββββββββ βββ ββββββββββββββββββββββββββββββββββββββββββββ | |
ββββββββββββββββ ββββββββββββ ββββββββββ βββ βββ ββββββββββββββ βββββββββββ βββ ββββββ | |
βββββββββββββββ ββββββββββββ βββββββββ βββ βββ ββββββββββ βββ βββββββββββ βββ ββββββ | |
βββ ββββββ βββ βββββββββββββββββ βββ ββββββββββββ βββββββββββ βββ βββ ββββββββ | |
βββ ββββββ βββ βββββββ ββββββββ βββ βββββββ βββ βββββββ βββ βββ βββ ββββββββ | |
" | |
sudo apt-get update | |
sudo apt-get install -y software-properties-common | |
echo " | |
ββββ βββ βββββββ βββββββ ββββββ βββ | |
βββββ βββββββββββ ββββββββ βββββββββββ | |
ββββββ ββββββ βββββββββββββ βββ ββββββ | |
βββββββββββββ ββββββββββββββββ ββββββ | |
βββ βββββββββββββββββββββ ββββββββββ βββ | |
βββ βββββ βββββββ ββββββ ββββββββ βββ | |
" | |
sudo -A add-apt-repository -y ppa:ondrej/nginx | |
sudo apt-get update | |
sudo apt-get -y install nginx | |
echo " | |
βββββββ βββ ββββββββββ | |
βββββββββββ βββββββββββ | |
ββββββββββββββββββββββββ | |
βββββββ βββββββββββββββ | |
βββ βββ ββββββ | |
βββ βββ ββββββ | |
" | |
sudo -A add-apt-repository -y ppa:ondrej/php | |
sudo apt-get update | |
sudo apt-get install -y php$PHP_VERSION-fpm | |
echo " | |
βββββββ βββ ββββββββββ βββββββββββ ββββββββββββββββββββββββ ββββββββββββββ βββββββ ββββ βββββββββββ | |
βββββββββββ βββββββββββ ββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ βββββββββββ | |
ββββββββββββββββββββββββββββββββββββ ββββββ βββ ββββββ ββββββ βββββββββββββββββ βββββββββ βββββββββββ | |
βββββββ βββββββββββββββ ββββββββββββ ββββββ βββ ββββββ ββββββββββββββββββββββββ βββββββββββββββββββββ | |
βββ βββ ββββββ ββββββββββββ βββ βββ βββββββββββ βββββββββββββββββββββββββββββ ββββββββββββββ | |
βββ βββ ββββββ βββββββββββ βββ βββ βββββββββββ ββββββββββββββββ βββββββ βββ βββββββββββββ | |
" | |
sudo apt-get install -y php$PHP_VERSION-bcmath | |
sudo apt-get install -y php$PHP_VERSION-cgi | |
sudo apt-get install -y php$PHP_VERSION-common # | |
sudo apt-get install -y php$PHP_VERSION-ctype # | |
sudo apt-get install -y php$PHP_VERSION-curl | |
sudo apt-get install -y php$PHP_VERSION-fileinfo # | |
sudo apt-get install -y php$PHP_VERSION-gd | |
sudo apt-get install -y php$PHP_VERSION-mbstring | |
sudo apt-get install -y php$PHP_VERSION-mysql | |
sudo apt-get install -y php$PHP_VERSION-opcache # | |
sudo apt-get install -y php$PHP_VERSION-pdo # | |
sudo apt-get install -y php$PHP_VERSION-tokenizer # | |
sudo apt-get install -y php$PHP_VERSION-xml | |
sudo apt-get install -y php$PHP_VERSION-zip | |
sudo systemctl restart nginx | |
echo " | |
ββββ βββ ββββββ ββββ βββ βββββββ ββββββββββββββββββ βββββββ ββββββββββββ ββββββββββ ββββββββββ βββ | |
βββββ ββββββββββββββββ ββββββββββββ βββββββββββββββββββ ββββββββ ββββββββββββ βββββββββββ ββββββββββββββ | |
ββββββ βββββββββββββββββ ββββββ βββββββββ βββββ ββββββββββββββββββββ βββββββ ββββββββββββ βββ ββββββββββββββ | |
βββββββββββββββββββββββββββββββ ββββββββββββββ ββββββββββ βββββββββ ββββββ ββββββββββββ βββ ββββββββββββββ | |
βββ βββββββββ ββββββ βββββββββββββββ ββββββββββββββ ββββββββββββ βββ ββββββββββββββββββββ βββββββββββ | |
βββ ββββββββ ββββββ βββββ βββββββ ββββββββββββββ βββββββ βββ βββ βββββββ βββββββ βββ βββββββββββ | |
" | |
sudo apt-get install -y nano git zip curl zsh redis-server openssh-server | |
echo " | |
βββββββββββββββββββ βββ βββββββ βββββββββββββββ βββββββββββ βββββββ βββββββ ββββββββββββ ββββββββββββββββββββββ βββ | |
βββββββββββββββββββ βββ βββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββ ββββββββββββββββββββββ βββ | |
βββββ ββββββββββββββββββββββββββββββββββββ βββ βββββββββββββββββββββββ βββββββββββββββββ ββββββ βββββββββββββββββββββββββββ | |
βββββ ββββββββββββββββββββββββββββββββββββ βββ βββββββββββββββββββββββ ββββββββββ ββββββ ββββββββββββββββββββββββββββββββββ | |
βββββββββββββββββββ βββ βββ ββββββββββββββββββββββββββββββ ββββββββββββ βββββββββββ βββββββββββββββββββββββββ βββ | |
βββββββββββββββββββ βββ βββ ββββββββββββββββββ βββββββββββ βββββββ βββ βββββββββββ ββββββββββββββββββββββββ βββ | |
" | |
sudo apt-get install -y zsh redis-server openssh-server | |
echo " | |
βββββββ βββββββ βββββββ βββββββββββ ββββββββββββββββββββββββ ββββββββ βββββββ βββ βββββββ βββββββββββββββ | |
βββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββββββ | |
βββββββββββββββββββ βββ βββββββββ βββ βββ ββββββββββββββββββββ βββ ββββββ βββ βββββββββ ββββββββ | |
βββββββ βββββββββββ βββββ βββββββββ βββ βββ ββββββββββββββββββββ βββ ββββββ βββ βββββββββ ββββββββ | |
βββ βββ ββββββββββββββββββββββββββββββββββββ βββ ββββββββ βββ ββββββββββββββββββββββββββββββββββββ βββ | |
βββ βββ βββ βββββββ ββββββ ββββββββ βββββββ βββ ββββββββ βββ βββββββ βββββββββββββββ βββββββββββ βββ | |
" | |
sudo mkdir /var/www/projects | |
sudo chown $USER:$USER /var/www/projects | |
echo " | |
ββββ βββββββ βββββββββββ βββββββ βββ βββββββββββββββββββββββ βββ ββββββββββββββββββ | |
βββββ βββββββββ ββββββββββββββββββββββββ βββββββββββββββββββββββββββ βββββββββββββββββββ | |
βββββββββββ βββββββ βββββββββββ ββββββ ββββββ ββββββββββββββ βββββββββββ βββββββββ ββββββββ | |
βββββββββββ βββββ βββββββββββββ ββββββ ββββββ ββββββββββββββ ββββββββββββ ββββββββββ ββββββββ | |
βββ βββ βββ βββ βββββββββββββββββββββββββ βββββββββββββββββββ βββ βββββββ βββββββββββ βββ | |
βββ βββ βββ ββββββββ βββββββ ββββββββ βββββββββββββββββββ βββ βββββ βββββββββββ βββ | |
" | |
sudo apt-get install mysql-server -y | |
# Pre-configure MySQL root password | |
echo "Pre-configuring MySQL root password..." | |
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD" | |
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $MYSQL_ROOT_PASSWORD" | |
sudo mysql -u root <<EOF | |
-- Set root password if not already set | |
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '$MYSQL_ROOT_PASSWORD'; | |
-- Remove anonymous users | |
DELETE FROM mysql.user WHERE User=''; | |
-- Disallow remote root login | |
UPDATE mysql.user SET Host='localhost' WHERE User='root'; | |
-- Remove test database | |
DELETE FROM mysql.db WHERE Db='test' OR Db='test_%'; | |
-- Reload privilege tables to apply changes | |
FLUSH PRIVILEGES; | |
EOF | |
# Step 3 - Create New MySQL User and Grant Privileges | |
echo "Creating new MySQL user 'dbuser' with mysql_native_password..." | |
sudo mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<EOF | |
CREATE USER IF NOT EXISTS 'dbuser'@'localhost' IDENTIFIED WITH mysql_native_password BY '$MYSQL_USER_PASSWORD'; | |
GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost' WITH GRANT OPTION; | |
FLUSH PRIVILEGES; | |
EOF | |
echo "MySQL installation and configuration complete." | |
echo " | |
βββββββββββ ββββββββββ βββββββββββββββ βββ ββββββββββββββ βββββββ βββββββ | |
βββββββββββ ββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ | |
βββββββββββ βββββββββββββββββ βββββββββββ βββββββββββββββββ βββββββββββ | |
βββββββββββ ββββββββββ ββββββ ββββββββββββ ββββββββββββββββββ βββββββββββ | |
ββββββββββββββββββββ βββββββββββ βββ βββββββ βββββββββββββββββββββββ βββ | |
ββββββββ βββββββ βββ βββββββββββ βββ βββββ βββββββββββ βββββββ βββ βββ | |
" | |
sudo apt-get install supervisor | |
echo " | |
βββββββ βββ βββ ββββ βββββββ βββ βββββββββββββββββββ βββ | |
ββββββββββββ βββ βββββ βββββββββ ββββ βββββββββββββββββββ βββ | |
βββ ββββββββββββββββββββββββββββ βββββββββββββ βββββ ββββββββββββββββ | |
βββ ββββββββββββββββββββββββββββ βββββ βββββββββββ ββββββββββββββββ | |
ββββββββββββ βββ βββ βββ βββ βββ βββββββββββββββββββ βββ | |
βββββββ βββ βββ βββ βββ βββ βββββββββββββββββββ βββ | |
" | |
echo "insert password for sudo" | |
chsh -s $(which zsh) <<< "$OS_USER_PASSWORD" | |
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" "" --unattended | |
echo " | |
βββββββ βββββββ ββββ βββββββββββ βββββββ βββββββββββββββββββββββ | |
ββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββββ | |
βββ βββ βββββββββββββββββββββββββ βββββββββββββββββ ββββββββ | |
βββ βββ βββββββββββββββββββββ βββ βββββββββββββββββ ββββββββ | |
ββββββββββββββββββββ βββ ββββββ ββββββββββββββββββββββββββββ βββ | |
βββββββ βββββββ βββ ββββββ βββββββ βββββββββββββββββββ βββ | |
" | |
cd ~ | |
curl -sS https://getcomposer.org/installer | php | |
sudo mv composer.phar /usr/local/bin/composer | |
echo " | |
βββββββ ββββββ βββββββββββ βββ ββββββ βββ βββ ββββββ ββββββββββββββββββββββββ | |
βββββββββββββββββββββββββββ βββ βββββββββββ βββββββββββββββββββββββββββββββββββ | |
ββββββββββββββββββββββββββββββββ βββββββββββ βββββββββββββββββββββββββ ββββββββ | |
ββββββββββββββββββββββββββββββββ βββββββββββ βββββββββββββββββββββββββ ββββββββ | |
ββββββββββββββ ββββββββββββββ ββββββββββββββ βββββββββββββββββ βββββββββββββββββββββββββββ | |
ββββββββββ βββ ββββββββββββββ ββββββββββββββ βββββββββββββββββ βββββββββββββββββββββββββββ | |
" | |
echo "alias upd='sudo apt update'" >> /home/$USER/.bash_aliases && source /home/$USER/.bash_aliases | |
echo "alias upg='sudo apt upgrade'" >> /home/$USER/.bash_aliases && source /home/$USER/.bash_aliases | |
echo "alias cls='clear'" >> /home/$USER/.bash_aliases && source /home/$USER/.bash_aliases | |
echo "alias ll='ls -lah'" >> /home/$USER/.bash_aliases && source /home/$USER/.bash_aliases | |
echo "alias www='cd /var/www/projects'" >> /home/$USER/.bash_aliases && source /home/$USER/.bash_aliases | |
echo "alias pa='php artisan'" >> /home/$USER/.bash_aliases && source /home/$USER/.bash_aliases | |
echo "alias lclear='composer dump-autoload && pa clear-compiled && pa config:clear && pa cache:clear && pa view:clear && pa route:clear'" >> /home/$USER/.bash_aliases && source /home/$USER/.bash_aliases | |
echo "alias phpunit='vendor/bin/phpunit'" >> /home/$USER/.bash_aliases && source /home/$USER/.bash_aliases | |
echo " | |
βββββββββββ ββββββββββ βββββββ βββββββ βββββββββ βββββββ βββββββ ββββ βββββββββββ βββββββ βββββββββββββββββββββββ βββββββ βββββββ βββ βββββββ ββββββ ββββββββββββ βββ | |
ββββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββ βββ ββββββββββββββββββββββββββββ βββ | |
ββββββ ββββββ βββββββββββ βββββββββββ ββββββββββββ βββ βββββββββββββββββββββββββ βββββββββββββββββ βββββββββββββββββββββββββββββββ βββββββββββββββββββββββββ βββ ββββββββ | |
ββββββ ββββββ βββββββ βββ βββββββββββ ββββββββββββ βββ βββββββββββββββββββββ βββ βββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββ βββ ββββββββ | |
ββββββββββββ ββββββ ββββββββββββ βββ βββ ββββββββββββββββββββ βββ ββββββ ββββββββββββββββββββββββββββ βββ ββββββββββββββ ββββββ βββ βββ βββ βββ βββ βββ | |
βββββββββββ ββββββ βββββββ βββ βββ βββ βββββββ βββββββ βββ ββββββ βββββββ βββββββββββββββββββ βββ βββββββ ββββββ βββββ βββ βββ βββ βββ βββ βββ | |
" | |
echo "and include .bash_aliases in .zshrc" | |
tee -a /home/$USER/.zshrc << EOF | |
export PATH=$PATH:/home/$USER/.config/composer/vendor/bin | |
if [ -f ~/.bash_aliases ]; then | |
. ~/.bash_aliases | |
fi | |
EOF | |
echo " | |
ββββββ βββββββ βββββββββ βββββββ βββββββββββββββββ βββ ββββββββββ βββββββ ββββββ βββββββββββββββββ | |
βββββββββββββββββββββββββ ββββββββ βββββββββββββββββ βββ ββββββββββββββββββββββββββββββββββββββββββββ | |
ββββββββββββββββ ββββββββββββ ββββββββββ βββ βββ ββββββββββββββ βββββββββββ βββ ββββββ | |
βββββββββββββββ ββββββββββββ βββββββββ βββ βββ ββββββββββ βββ βββββββββββ βββ ββββββ | |
βββ ββββββ βββ βββββββββββββββββ βββ ββββββββββββ βββββββββββ βββ βββ ββββββββ | |
βββ ββββββ βββ βββββββ ββββββββ βββ βββββββ βββ βββββββ βββ βββ βββ ββββββββ | |
" | |
sudo apt-get update | |
echo " | |
ββββββ βββββββ βββββββββ βββββββ βββββββββββββββββ βββ ββββββββββ βββββββ βββββββ ββββββ βββββββ ββββββββ | |
βββββββββββββββββββββββββ ββββββββ βββββββββββββββββ βββ βββββββββββββββββββ ββββββββββββββββββββββββββββββββ | |
ββββββββββββββββ ββββββββββββ ββββββββββ βββ βββ ββββββββββββββ βββββββββββββββββββββββ βββββββββ | |
βββββββββββββββ ββββββββββββ βββββββββ βββ βββ ββββββββββ βββ ββββββββββββββββββββββ βββββββββ | |
βββ ββββββ βββ βββββββββββββββββ βββ ββββββββββββ ββββββββββββ ββββββ βββββββββββββββββββ | |
βββ ββββββ βββ βββββββ ββββββββ βββ βββββββ βββ βββββββ βββ ββββββ ββββββββββ ββββββββ | |
" | |
sudo apt-get upgrade -y | |
sudo apt upgrade -y | |
echo " | |
ββββββ βββββββ βββββββββ ββββββββββ ββββββββ ββββββ ββββ βββ | |
βββββββββββββββββββββββββ βββββββββββ βββββββββββββββββββββ βββ | |
ββββββββββββββββ ββββββββββββ βββ ββββββ ββββββββββββββ βββ | |
βββββββββββββββ ββββββββββββ βββ ββββββ ββββββββββββββββββ | |
βββ ββββββ βββ βββββββββββββββββββββββββββ ββββββ ββββββ | |
βββ ββββββ βββ ββββββββββββββββββββββββββ ββββββ βββββ | |
" | |
sudo apt-get autoremove | |
sudo apt-get clean | |
echo ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" | |
echo ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" | |
echo ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" | |
echo ":::::::::::::::: You need to logout or reconnect for changes to take affect :::::::::" | |
echo ":::::::: when you log in the prompt for command line should be like this: β ~ ::::::" | |
echo ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment