Skip to content

Instantly share code, notes, and snippets.

@matbrgz
Last active August 25, 2018 01:32
Show Gist options
  • Save matbrgz/d71227abbf4821b811c5edd1115b827c to your computer and use it in GitHub Desktop.
Save matbrgz/d71227abbf4821b811c5edd1115b827c to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
# Author: MatheusRV
# Source: Author and Specific Documentation
# License: GNU GPLv3
# Instructions: Download, exec chmod +x' then run.
# Just run curl -O https://gist.githubusercontent.com/MatheusRV/e2e88118f29c62b6770463573de5baf3/raw/wslinstall.sh && sudo chmod +x wslinstall.sh && sudo ./wslinstall.sh
clear
#if grep -q Microsoft /proc/version; then
# OS="Windows"
#else
# OS="Linux"
#fi
#Bash Config
#vi .bash_aliases.
#export PATH=~/.composer/vendor/bin:$PATH.
#source .bashrc.
printf "\n
███████╗ ███╗ ███╗ ██╗ ██████╗\n
██╔════╝ ████╗ ████║ ██║ ██╔════╝\n
█████╗ ██╔████╔██║ ██║ ██║ \n
██╔══╝ ██║╚██╔╝██║ ██║ ██║ \n
███████╗ ██║ ╚═╝ ██║ ██║ ╚██████╗\n
╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝\n\n"
echo "Choose what you want to install using key 'Y' for Yes and 'n' for No"
echo "Default Dev Folder (Linux Style: /mnt/d/Dev): "
read -r -e defaultfolder
echo "Install Apache (Y/n)"
read -r -e apache
echo "Install Nginx (Y/n)"
read -r -e nginx
echo "php Version: (Type 72 for php7.2, type 7.1 for php7.1 or 56 for php5.6 or key ENTER to escape)"
read -r -e phpv
echo "Install Laravel (Y/n)"
read -r -e laravel
echo "Install MySQL: (Y/n)"
read -r -e mysql
if [ "$mysql" == Y ] || [ "$mysql" == y ] ; then
echo "Install phpMyAdmin: (Y/n)"
read -r -e phpmyadmin
fi
echo "Install Postgre: (Y/n)"
read -r -e postgre
echo "Install Redis: (Y/n)"
read -r -e redis
echo "Install Node Version Manager: (Y/n)"
read -r -e nvm
echo "Install pyenv: (Y/n)"
read -r -e pyenv
if [ "$pyenv" == Y ] || [ "$pyenv" == y ] ; then
echo "Install pyenv-virtualenv: (Y/n)"
read -r -e pyenvvirtualenv
fi
echo "Install GoLang: (Y/n)"
read -r -e go
echo "Install Ruby Version Manager: (Y/n)"
read -r -e rvm
if [ "$rvm" == Y ] || [ "$rvm" == y ] ; then
echo "Install Jekyll: (Y/n)"
read -r -e jekyll
fi
echo "Install Vagrant: (Y/n)"
read -r -e vagrant
echo "Install Docker: (Y/n)"
read -r -e docker
echo "Install Mosh: (Y/n)"
read -r -e mosh
echo "Install Mosh: (Y/n)"
clear
printf "\n
███████╗ ███╗ ███╗ ██╗ ██████╗\n
██╔════╝ ████╗ ████║ ██║ ██╔════╝\n
█████╗ ██╔████╔██║ ██║ ██║ \n
██╔══╝ ██║╚██╔╝██║ ██║ ██║ \n
███████╗ ██║ ╚═╝ ██║ ██║ ╚██████╗\n
╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝\n"
echo "Wait until complete, your password will be asked multiple times!"
echo "Be patient!!!"
# WSL Init
#if [ "$OS" == "Windows" ] ; then
#sudo bash -c 'echo "" >> /etc/wsl.conf'
#fi
# Init
sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade
sudo chmod -R go-w /home
sudo apt-get install -y software-properties-common build-essential curl jq libnss3-tools libssl-dev ca-certificates
if [ "$apache" == Y ] || [ "$apache" == y ] ; then
#Apache2
sudo apt-get -y install apache2
#Config for Dev folder
sudo rm -f /etc/apache2/sites-available/000-default.conf
sudo bash -c 'echo "<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot '"${defaultfolder}"'
<Directory '"${defaultfolder}"'>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
#LogLevel info ssl:warn
ErrorLog '"${APACHE_LOG_DIR}"'/error.log
CustomLog '"${APACHE_LOG_DIR}"'/access.log combined
</VirtualHost>" >> /etc/apache2/sites-available/000-default.conf'
sudo /etc/init.d/apache2 restart
#Allowing rewrite rules
sudo a2enmod rewrite && sudo /etc/init.d/apache2 restart
#Allow autoindex for editing apache directory listing
sudo a2enmod autoindex
#Hiding Error [core:warn] Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT - https://github.com/Microsoft/WSL/issues/1953
#sudo bash -c 'echo "AcceptFilter https none
#AcceptFilter http none" >> /etc/apache2/apache2.conf'
fi
if [ "$nginx" == Y ] || [ "$nginx" == y ] ; then
#NGINX
sudo apt-get -y install nginx
fi
#Instaling a new theme for apache directory listing
#wget https://github.com/AdamWhitcroft/Apaxy/archive/master.tar.gz && sudo tar -xvzf master.tar.gz && sudo cp -r apaxy-master /mnt/d/Cloud/OneDrive/Dev/apaxy-master $$ rm -f -R apaxy-master
#sudo bash -c 'echo "" >> '$defaultfolder'.htaccess'
if [ "$phpv" == 72 ] ; then
#PHP 7.2
sudo add-apt-repository -y ppa:ondrej/php && sudo apt-get update
sudo apt-get -y install php7.2 php7.2-fpm php7.2-gd php7.2-mbstring php7.2-curl php7.2-xml php7.2-pdo php7.2-json mcrypt php7.2-zip php7.2-mysql php7.2-dev libapache2-mod-php7.2
fi
if [ "$phpv" == 71 ] ; then
#PHP 7.1
sudo add-apt-repository -y ppa:ondrej/php && sudo apt-get update
sudo apt-get -y install php7.1 php7.1-gd php7.1-mbstring php7.1-xml php7.1-pdo php7.1-json mcrypt php7.1-zip php7.1-dev libapache2-mod-php7.1
fi
if [ "$phpv" == 56 ] ; then
#PHP5.6
sudo add-apt-repository -y ppa:ondrej/php && sudo apt-get update
fi
if [ ! -z "$phpv" ] ; then
#Composer
wget https://raw.githubusercontent.com/composer/getcomposer.org/1b137f8bf6db3e79a38a5bc45324414a6b1f9df2/web/installer -O - -q | sudo php -- --install-dir=/usr/local/bin --filename=composer --quite
sudo chown -R "${USER}" ~/.composer/
fi
if [ "$mysql" == Y ] || [ "$mysql" == y ] ; then
#MySQL
sudo apt-get -y install mysql-server mysql-client
sudo usermod -d /var/lib/mysql/ mysql
if [ "$phpmyadmin" == Y ] || [ "$phpmyadmin" == y ] ; then
#phpmyadmin
sudo /etc/init.d/mysql stop && service mysqld stop && sudo apt-get -y install phpmyadmin
#sudo bash -c 'echo "Include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf'
fi
fi
if [ "$postgre" == Y ] || [ "$postgre" == y ] ; then
#Postgre
sudo apt-get -y install postgresql postgresql-common
fi
if [ "$redis" == Y ] || [ "$redis" == y ] ; then
#Redis
sudo apt-get -y install redis-server
fi
if [ "$laravel" == Y ] || [ "$laravel" == y ] ; then
#Laravel Global
composer global require "laravel/installer"
if [ "$mysql" == Y ] || [ "$mysql" == y ] ; then
#Laravel Default .env DB user
mysql -u root -p -e "CREATE DATABASE homestead /*\!40100 DEFAULT CHARACTER SET utf8 */;"
mysql -u root -p -e "CREATE USER homestead@localhost IDENTIFIED BY 'secret';"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON homestead.* TO 'homestead'@'localhost';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
fi
fi
if [ "$nvm" == Y ] || [ "$nvm" == y ] ; then
#NVM
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
"$SHELL"
nvm install node && nvm use node && npm install -g yarn
fi
if [ "$pyenv" == Y ] || [ "$pyenv" == y ] ; then
#Pyenv
sudo apt-get install -y python-pip
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
{
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
} >> ~/.bashrc
"$SHELL"
pyenv install 2.7.8
"$SHELL"
if [ "$pyenvvirtualenv" == Y ] || [ "$pyenvvirtualenv" == y ] ; then
git clone https://github.com/pyenv/pyenv-virtualenv.git "$(pyenv root)"/plugins/pyenv-virtualenv
echo "eval $(pyenv virtualenv-init -)" >> ~/.bash_profile
"$SHELL"
fi
fi
if [ "$go" == Y ] || [ "$go" == y ] ; then
#Go
curl -s -L https://gist.githubusercontent.com/besser/2280c49ed0c8ffc43502e6b63241ed00/raw/58ccd0a1edb6de6cc249c0f094f00a40da77c64d/wsl-go-install.sh | sudo bash
fi
if [ "$rvm" == Y ] || [ "$rvm" == y ] ; then
#RVM
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable
"$SHELL"
rvm install ruby
/bin/bash --login
rvm use 2.4.1
fi
if [ "$jekyll" == Y ] || [ "$jekyll" == y ] ; then
#Jekyll
gem install jekyll bundler
fi
if [ "$vagrant" == Y ] || [ "$vagrant" == y ] ; then
#Vagrant
{
export PATH="$PATH:/mnt/c/Program Files/Oracle/VirtualBox"
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"
export VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH="/mnt/d/Cloud/OneDrive/Dev"
export VAGRANT_HOME="/home/${USER}/.vagrant.d"
} >> ~/.bashrc
cd ~ && wget https://releases.hashicorp.com/vagrant/2.1.1/vagrant_2.1.1_x86_64.deb
sudo dpkg -i vagrant_2.1.1_x86_64.deb
sudo apt-get -y purge virtualbox
sudo apt-get -y remove virtualbox-dkms
fi
if [ "$docker" == Y ] || [ "$docker" == y ] ; then
#Docker
#Instal Docker Store for Windows
export DOCKER_CHANNEL=edge
export DOCKER_COMPOSE_VERSION=1.21.0
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
sudo usermod -aG docker "${USER}"
docker -H localhost:2375 images
sudo curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-"$(uname -s)"-"$(uname -s)" -o /usr/local/bin/docker-compose &&
sudo chmod +x /usr/local/bin/docker-compose
echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> /home/"${USER}"/.bashrc
"$SHELL"
fi
if [ "$mosh" == Y ] || [ "$mosh" == y ] ; then
sudo apt-get -y install perl protobuf-compiler libprotobuf-dev libncurses5-dev zlib1g-dev libssl-dev pkg-config
sudo add-apt-repository -y ppa:keithw/mosh
sudo apt-get -y update
sudo apt-get -y install mosh
fi
#Configuring ~/.bashrc
sudo bash -c 'echo '"${defaultfolder}"' >> ~/.bashrc'
#Cleaning
sudo apt-get -y autoremove && sudo apt-get -y autoclean && sudo apt-get -y clean
#Extra WSL
# https://gist.github.com/nidorx/888592768f861f4335ba6efe4206dcb8
# https://gist.github.com/MadLittleMods/0e38f03774fb16e8d698175e505f1f3e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment