Last active
August 25, 2018 01:32
This file contains hidden or 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
#!/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