Skip to content

Instantly share code, notes, and snippets.

@aguinaldotupy
Created September 1, 2020 23:33
Show Gist options
  • Save aguinaldotupy/2f16cb6071c86852acfef6a7de4ca699 to your computer and use it in GitHub Desktop.
Save aguinaldotupy/2f16cb6071c86852acfef6a7de4ca699 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Function check user root
f_check_root() {
if (($EUID == 0)); then
# If user is root, continue to function f_sub_main
f_sub_main
else
# If user not is root, print message and exit script
echo "Please run this script by user root !"
exit
fi
}
# Function update os
f_update_os() {
echo "Starting update os ..."
echo ""
sleep 1
apt-get update
apt-get upgrade -y
echo ""
sleep 1
}
f_install_curl_and_git() {
########## INSTALL Curl and Git ##########
echo "Start install curl and git"
echo ""
sleep 1
sudo apt install -y curl git unzip
}
f_install_fira_code() {
########## INSTALL FIRA CODE ##########
echo "Start install fira code"
echo ""
sleep 1
sudo add-apt-repository universe
sudo apt install fonts-firacode
}
f_install_oh_my_zsh() {
########## INSTALL OH-MY-ZSH ##########
echo "Start install oh-my-zsh ..."
echo ""
sleep 1
sudo apt install zsh
echo "ZSH VERSION: $(zsh --version)"
sleep 1
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
sed -i '1 i\exec zsh' .bashrc
}
f_install_mysql_8_0() {
MYSQL_PASSWORD="123!imparavel#mudar"
MYSQL_PASSWORD_ROOT="123!imparavel#mudar"
MYSQL_USER=admin
########## INSTALL MYSQL-SERVER ##########
echo "Start install MYSQL-SERVER"
echo ""
sleep 1
sudo debconf-set-selections <<<"mysql-server mysql-server/root_password password ${MYSQL_PASSWORD_ROOT}"
sudo debconf-set-selections <<<"mysql-server mysql-server/root_password_again password ${MYSQL_PASSWORD_ROOT}"
sudo apt-get -y install mysql-server
echo ""
mysql -u root --password=${MYSQL_PASSWORD_ROOT} <<MYSQL_SCRIPT
CREATE USER ${MYSQL_USER}@localhost IDENTIFIED BY "${MYSQL_PASSWORD}";
GRANT ALL PRIVILEGES ON *.* TO ${MYSQL_USER}@localhost;
FLUSH PRIVILEGES;
ALTER USER ${MYSQL_USER}@localhost IDENTIFIED WITH mysql_native_password BY "${MYSQL_PASSWORD}";
MYSQL_SCRIPT
echo ""
echo "MySQL user created."
echo "Username: ${MYSQL_USER}"
echo "Password: ${MYSQL_PASSWORD}"
}
f_install_dbeaver() {
sudo apt -y install openjdk-11-jdk openjdk-11-jre
wget -O - https://dbeaver.io/debs/dbeaver.gpg.key | sudo apt-key add -
echo "deb https://dbeaver.io/debs/dbeaver-ce /" | sudo tee /etc/apt/sources.list.d/dbeaver.list
sudo apt update
sudo apt -y install dbeaver-ce
apt policy dbeaver-ce
}
f_install_node_js() {
echo "Start install NODE JS"
echo ""
sleep 1
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs
echo "NODE VERSION: $(node -v)"
echo "NPM VERSION: $(npm -v)"
}
f_install_nginx() {
sudo apt install -y nginx
sudo ufw enable
sudo ufw allow 'Nginx HTTP'
systemctl status nginx
}
f_install_php() {
echo "Start install PHP 7 ..."
echo ""
sleep 1
sudo apt install -y php7.4 php-xml php-imagick php7.4-{cli,common,fpm,bcmath,bz2,intl,gd,mbstring,mysql,zip,curl,xdebug}
}
f_install_composer() {
echo "Start install composer"
echo ""
sleep 1
curl -sS https://getcomposer.org/installer -o composer-setup.php
HASH=$(curl -sS https://composer.github.io/installer.sig)
echo "$HASH"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
echo ""
sleep 1
composer global require hirak/prestissimo
}
f_self_trusted_local_host() {
echo "Configure trusted localhost"
echo ""
sleep 1
FILE="open_ssl.conf"
mkdir local_ssl && cd local_ssl || exit;
touch ${FILE}
echo ""
echo "Working in dir ... $(pwd)"
sleep 1
echo ""
cat > "${FILE}" <<EOF
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = BR
ST = São Paulo
L = São Paulo
O = Tupy
OU = TI
CN = LocalHost_Server
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = *.test
EOF
openssl req -x509 -nodes -days 1024 -newkey rsa:2048 -keyout localhost.key -out localhost.crt -config "${FILE}" -extensions 'v3_req'
sudo cp localhost.crt /etc/ssl/certs/localhost.crt
sudo cp localhost.key /etc/ssl/private/localhost.key
sudo nginx -t
sudo service nginx reload
sudo apt-get update
sudo apt-get install -y libnss3-tools
certutil -d sql:$HOME/.pki/nssdb -A -t "CT,c,c" -n "localhost" -i localhost.crt
cd ..
echo "Working in dir ... $(pwd)"
}
f_install_redis() {
sudo apt install -y redis-server
sed 's/supervised no/supervised systemd/g' /etc/redis/redis.conf
sudo systemctl restart redis.service
systemctl status redis
sudo netstat -lnp | grep redis
}
f_install() {
f_install_curl_and_git
f_install_fira_code
f_install_oh_my_zsh
f_install_mysql_8_0
f_install_dbeaver
f_install_node_js
f_install_nginx
f_install_php
f_install_composer
f_self_trusted_local_host
f_install_redis
}
# The sub main function, use to call neccessary functions of installation
f_sub_main() {
# f_update_os
f_install
}
# The main function
f_main() {
f_check_root
# f_sub_main
}
f_main
exit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment