Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- export DEBIAN_FRONTEND=noninteractive
- # Update Package List
- apt-get update
- # Update System Packages
- apt-get -y upgrade
- # Force Locale
- echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
- locale-gen en_US.UTF-8
- # Install Some PPAs
- apt-get install -y software-properties-common curl
- apt-add-repository ppa:nginx/development -y
- apt-add-repository ppa:chris-lea/redis-server -y
- apt-add-repository ppa:ondrej/php -y
- # gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
- # apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 5072E1F5
- # sh -c 'echo "deb http://repo.mysql.com/apt/ubuntu/ xenial mysql-5.7" >> /etc/apt/sources.list.d/mysql.list'
- # wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
- # sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
- curl -s https://packagecloud.io/gpg.key | apt-key add -
- echo "deb http://packages.blackfire.io/debian any main" | tee /etc/apt/sources.list.d/blackfire.list
- curl --silent --location https://deb.nodesource.com/setup_6.x | bash -
- # Update Package Lists
- apt-get update
- # Install Some Basic Packages
- apt-get install -y build-essential dos2unix gcc git libmcrypt4 libpcre3-dev ntp unzip \
- make python2.7-dev python-pip re2c supervisor unattended-upgrades whois vim libnotify-bin \
- pv cifs-utils
- # Set My Timezone
- ln -sf /usr/share/zoneinfo/UTC /etc/localtime
- # Install PHP Stuffs
- apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
- php7.1-cli php7.1-dev \
- php7.1-pgsql php7.1-sqlite3 php7.1-gd \
- php7.1-curl php7.1-memcached \
- php7.1-imap php7.1-mysql php7.1-mbstring \
- php7.1-xml php7.1-zip php7.1-bcmath php7.1-soap \
- php7.1-intl php7.1-readline php-xdebug
- # Install Composer
- curl -sS https://getcomposer.org/installer | php
- mv composer.phar /usr/local/bin/composer
- # Add Composer Global Bin To Path
- printf "\nPATH=\"$(sudo su - vagrant -c 'composer config -g home 2>/dev/null')/vendor/bin:\$PATH\"\n" | tee -a /home/vagrant/.profile
- # Install Laravel Envoy & Installer
- sudo su vagrant <<'EOF'
- /usr/local/bin/composer global require "laravel/envoy=~1.0"
- /usr/local/bin/composer global require "laravel/installer=~1.1"
- EOF
- # Set Some PHP CLI Settings
- sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.1/cli/php.ini
- sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.1/cli/php.ini
- sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.1/cli/php.ini
- sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.1/cli/php.ini
- # Install Nginx & PHP-FPM
- apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
- nginx php7.1-fpm
- rm /etc/nginx/sites-enabled/default
- rm /etc/nginx/sites-available/default
- service nginx restart
- # Setup Some PHP-FPM Options
- echo "xdebug.remote_enable = 1" >> /etc/php/7.1/mods-available/xdebug.ini
- echo "xdebug.remote_connect_back = 1" >> /etc/php/7.1/mods-available/xdebug.ini
- echo "xdebug.remote_port = 9000" >> /etc/php/7.1/mods-available/xdebug.ini
- echo "xdebug.max_nesting_level = 512" >> /etc/php/7.1/mods-available/xdebug.ini
- echo "opcache.revalidate_freq = 0" >> /etc/php/7.1/mods-available/opcache.ini
- sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.1/fpm/php.ini
- sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.1/fpm/php.ini
- sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.1/fpm/php.ini
- sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.1/fpm/php.ini
- sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.1/fpm/php.ini
- sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.1/fpm/php.ini
- sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.1/fpm/php.ini
- # Disable XDebug On The CLI
- sudo phpdismod -s cli xdebug
- # Copy fastcgi_params to Nginx because they broke it on the PPA
- cat > /etc/nginx/fastcgi_params << EOF
- fastcgi_param QUERY_STRING \$query_string;
- fastcgi_param REQUEST_METHOD \$request_method;
- fastcgi_param CONTENT_TYPE \$content_type;
- fastcgi_param CONTENT_LENGTH \$content_length;
- fastcgi_param SCRIPT_FILENAME \$request_filename;
- fastcgi_param SCRIPT_NAME \$fastcgi_script_name;
- fastcgi_param REQUEST_URI \$request_uri;
- fastcgi_param DOCUMENT_URI \$document_uri;
- fastcgi_param DOCUMENT_ROOT \$document_root;
- fastcgi_param SERVER_PROTOCOL \$server_protocol;
- fastcgi_param GATEWAY_INTERFACE CGI/1.1;
- fastcgi_param SERVER_SOFTWARE nginx/\$nginx_version;
- fastcgi_param REMOTE_ADDR \$remote_addr;
- fastcgi_param REMOTE_PORT \$remote_port;
- fastcgi_param SERVER_ADDR \$server_addr;
- fastcgi_param SERVER_PORT \$server_port;
- fastcgi_param SERVER_NAME \$server_name;
- fastcgi_param HTTPS \$https if_not_empty;
- fastcgi_param REDIRECT_STATUS 200;
- EOF
- # Set The Nginx & PHP-FPM User
- sed -i "s/user www-data;/user vagrant;/" /etc/nginx/nginx.conf
- sed -i "s/# server_names_hash_bucket_size.*/server_names_hash_bucket_size 64;/" /etc/nginx/nginx.conf
- sed -i "s/user = www-data/user = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
- sed -i "s/group = www-data/group = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
- sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
- sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
- sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.1/fpm/pool.d/www.conf
- service nginx restart
- service php7.1-fpm restart
- # Add Vagrant User To WWW-Data
- usermod -a -G www-data vagrant
- id vagrant
- groups vagrant
- # Install Node
- apt-get install -y nodejs
- /usr/bin/npm install -g gulp
- /usr/bin/npm install -g bower
- /usr/bin/npm install -g yarn
- /usr/bin/npm install -g grunt-cli
- # Install SQLite
- apt-get install -y sqlite3 libsqlite3-dev
- # Install MySQL
- debconf-set-selections <<< "mysql-server mysql-server/root_password password secret"
- debconf-set-selections <<< "mysql-server mysql-server/root_password_again password secret"
- apt-get install -y mysql-server
- # Configure MySQL Password Lifetime
- echo "default_password_lifetime = 0" >> /etc/mysql/mysql.conf.d/mysqld.cnf
- # Configure MySQL Remote Access
- sed -i '/^bind-address/s/bind-address.*=.*/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
- mysql --user="root" --password="secret" -e "GRANT ALL ON *.* TO root@'0.0.0.0' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
- service mysql restart
- mysql --user="root" --password="secret" -e "CREATE USER 'homestead'@'0.0.0.0' IDENTIFIED BY 'secret';"
- mysql --user="root" --password="secret" -e "GRANT ALL ON *.* TO 'homestead'@'0.0.0.0' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
- mysql --user="root" --password="secret" -e "GRANT ALL ON *.* TO 'homestead'@'%' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
- mysql --user="root" --password="secret" -e "FLUSH PRIVILEGES;"
- mysql --user="root" --password="secret" -e "CREATE DATABASE homestead character set UTF8mb4 collate utf8mb4_bin;"
- service mysql restart
- # Add Timezone Support To MySQL
- mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql --user=root --password=secret mysql
- # Install Postgres
- apt-get install -y postgresql
- # Configure Postgres Remote Access
- sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/9.5/main/postgresql.conf
- echo "host all all 10.0.2.2/32 md5" | tee -a /etc/postgresql/9.5/main/pg_hba.conf
- sudo -u postgres psql -c "CREATE ROLE homestead LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
- sudo -u postgres /usr/bin/createdb --echo --owner=homestead homestead
- service postgresql restart
- # Install Blackfire
- apt-get install -y blackfire-agent blackfire-php
- # Install The Chrome Web Driver & Dusk Utilities
- apt-get -y install libxpm4 libxrender1 libgtk2.0-0 \
- libnss3 libgconf-2-4 chromium-browser \
- xvfb gtk2-engines-pixbuf xfonts-cyrillic \
- xfonts-100dpi xfonts-75dpi xfonts-base \
- xfonts-scalable imagemagick x11-apps
- # Install Memcached & Beanstalk
- apt-get install -y redis-server memcached beanstalkd
- # Configure Beanstalkd
- sed -i "s/#START=yes/START=yes/" /etc/default/beanstalkd
- /etc/init.d/beanstalkd start
- # Install & Configure MailHog
- wget --quiet -O /usr/local/bin/mailhog https://github.com/mailhog/MailHog/releases/download/v0.2.1/MailHog_linux_amd64
- chmod +x /usr/local/bin/mailhog
- sudo tee /etc/systemd/system/mailhog.service <<EOL
- [Unit]
- Description=Mailhog
- After=network.target
- [Service]
- User=vagrant
- ExecStart=/usr/bin/env /usr/local/bin/mailhog > /dev/null 2>&1 &
- [Install]
- WantedBy=multi-user.target
- EOL
- systemctl daemon-reload
- systemctl enable mailhog
- # Configure Supervisor
- systemctl enable supervisor.service
- service supervisor start
- # Install ngrok
- wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
- unzip ngrok-stable-linux-amd64.zip -d /usr/local/bin
- rm -rf ngrok-stable-linux-amd64.zip
- # Clean Up
- apt-get -y autoremove
- apt-get -y clean
- # Enable Swap Memory
- /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
- /sbin/mkswap /var/swap.1
- /sbin/swapon /var/swap.1
- # Minimize The Disk Image
- echo "Minimizing disk image..."
- dd if=/dev/zero of=/EMPTY bs=1M
- rm -f /EMPTY
- sync
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement