Last active
December 12, 2019 23:54
-
-
Save mikepsinn/f4d11ef930e62586bf24f15955bd44ea to your computer and use it in GitHub Desktop.
Run with curl https://gist.githubusercontent.com/mikepsinn/f4d11ef930e62586bf24f15955bd44ea/raw/settler-provision.sh
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
#!/usr/bin/env bash | |
# Run with `curl https://gist.githubusercontent.com/mikepsinn/f4d11ef930e62586bf24f15955bd44ea/raw/settler-provision.sh` | |
export DEBIAN_FRONTEND=noninteractive | |
# Update Package List | |
apt-get update | |
# Update System Packages | |
apt-get upgrade -y | |
# 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:ondrej/php -y | |
apt-add-repository ppa:chris-lea/redis-server -y | |
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - | |
sudo tee /etc/apt/sources.list.d/pgdg.list <<END | |
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main | |
END | |
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - | |
# Update Package Lists | |
apt-get update | |
# Install Some Basic Packages | |
apt-get install -y build-essential dos2unix gcc git libmcrypt4 libpcre3-dev libpng-dev chrony unzip make python2.7-dev \ | |
python-pip re2c supervisor unattended-upgrades whois vim libnotify-bin pv cifs-utils mcrypt bash-completion zsh \ | |
graphviz avahi-daemon tshark imagemagick | |
# Set My Timezone | |
ln -sf /usr/share/zoneinfo/UTC /etc/localtime | |
# Install PHP Stuffs | |
# Current PHP | |
apt-get install -y --allow-change-held-packages \ | |
php7.3 php7.3-bcmath php7.3-bz2 php7.3-cgi php7.3-cli php7.3-common php7.3-curl php7.3-dba php7.3-dev \ | |
php7.3-enchant php7.3-fpm php7.3-gd php7.3-gmp php7.3-imap php7.3-interbase php7.3-intl php7.3-json php7.3-ldap \ | |
php7.3-mbstring php7.3-mysql php7.3-odbc php7.3-opcache php7.3-pgsql php7.3-phpdbg php7.3-pspell php7.3-readline \ | |
php7.3-recode php7.3-snmp php7.3-soap php7.3-sqlite3 php7.3-sybase php7.3-tidy php7.3-xml php7.3-xmlrpc php7.3-xsl \ | |
php7.3-zip | |
# PHP 7.4 | |
apt-get install -y --allow-change-held-packages \ | |
php7.4 php7.4-bcmath php7.4-bz2 php7.4-cgi php7.4-cli php7.4-common php7.4-curl php7.4-dba php7.4-dev \ | |
php7.4-enchant php7.4-fpm php7.4-gd php7.4-gmp php7.4-imap php7.4-interbase php7.4-intl php7.4-json php7.4-ldap \ | |
php7.4-mbstring php7.4-mysql php7.4-odbc php7.4-opcache php7.4-pgsql php7.4-phpdbg php7.4-pspell php7.4-readline \ | |
php7.4-snmp php7.4-soap php7.4-sqlite3 php7.4-sybase php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-xsl php7.4-zip | |
# PHP 7.2 | |
apt-get install -y --allow-change-held-packages \ | |
php7.2-bcmath php7.2-bz2 php7.2-dba php7.2-enchant php7.2-fpm php7.2-imap php7.2-interbase php7.2-intl \ | |
php7.2-mbstring php7.2-phpdbg php7.2-soap php7.2-sybase php7.2-xsl php7.2-zip php7.2-cgi php7.2-cli php7.2-common \ | |
php7.2-curl php7.2-dev php7.2-gd php7.2-gmp php7.2-json php7.2-ldap php7.2-mysql php7.2-odbc php7.2-opcache \ | |
php7.2-pgsql php7.2-pspell php7.2-readline php7.2-recode php7.2-snmp php7.2-sqlite3 php7.2-tidy php7.2-xml \ | |
php7.2-xmlrpc | |
# PHP 7.1 | |
apt-get install -y --allow-change-held-packages \ | |
php7.1-bcmath php7.1-bz2 php7.1-cgi php7.1-cli php7.1-common php7.1-curl php7.1-dba php7.1-dev php7.1-enchant \ | |
php7.1-fpm php7.1-gd php7.1-gmp php7.1-imap php7.1-interbase php7.1-intl php7.1-json php7.1-ldap php7.1-mbstring \ | |
php7.1-mcrypt php7.1-mysql php7.1-odbc php7.1-opcache php7.1-pgsql php7.1-phpdbg php7.1-pspell php7.1-readline \ | |
php7.1-recode php7.1-snmp php7.1-soap php7.1-sqlite3 php7.1-sybase php7.1-tidy php7.1-xml php7.1-xmlrpc php7.1-xsl \ | |
php7.1-zip | |
# PHP 7.0 | |
apt-get install -y --allow-change-held-packages \ | |
php7.0-bcmath php7.0-bz2 php7.0-cgi php7.0-cli php7.0-common php7.0-curl php7.0-dba php7.0-dev php7.0-enchant \ | |
php7.0-fpm php7.0-gd php7.0-gmp php7.0-imap php7.0-interbase php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring \ | |
php7.0-mcrypt php7.0-mysql php7.0-odbc php7.0-opcache php7.0-pgsql php7.0-phpdbg php7.0-pspell php7.0-readline \ | |
php7.0-recode php7.0-snmp php7.0-soap php7.0-sqlite3 php7.0-sybase php7.0-tidy php7.0-xml php7.0-xmlrpc php7.0-xsl \ | |
php7.0-zip | |
# PHP 5.6 | |
apt-get install -y --allow-change-held-packages \ | |
php5.6-bcmath php5.6-bz2 php5.6-cgi php5.6-cli php5.6-common php5.6-curl php5.6-dba php5.6-dev php5.6-enchant \ | |
php5.6-fpm php5.6-gd php5.6-gmp php5.6-imap php5.6-interbase php5.6-intl php5.6-json php5.6-ldap php5.6-mbstring \ | |
php5.6-mcrypt php5.6-mysql php5.6-odbc php5.6-opcache php5.6-pgsql php5.6-phpdbg php5.6-pspell php5.6-readline \ | |
php5.6-recode php5.6-snmp php5.6-soap php5.6-sqlite3 php5.6-sybase php5.6-tidy php5.6-xml php5.6-xmlrpc php5.6-xsl \ | |
php5.6-zip | |
update-alternatives --set php /usr/bin/php7.4 | |
update-alternatives --set php-config /usr/bin/php-config7.4 | |
update-alternatives --set phpize /usr/bin/phpize7.4 | |
# Install Composer | |
curl -sS https://getcomposer.org/installer | php | |
mv composer.phar /usr/local/bin/composer | |
# Install Laravel Envoy, Installer, and prestissimo for parallel downloads | |
sudo su vagrant <<'EOF' | |
/usr/local/bin/composer global require hirak/prestissimo | |
/usr/local/bin/composer global require "laravel/envoy=^1.6" | |
/usr/local/bin/composer global require "laravel/installer=^3.1" | |
/usr/local/bin/composer global require "laravel/lumen-installer=^1.1" | |
/usr/local/bin/composer global require "laravel/spark-installer=^3.1" | |
/usr/local/bin/composer global require "slince/composer-registry-manager=^2.0" | |
EOF | |
# Set Some PHP CLI Settings | |
sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.4/cli/php.ini | |
sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.4/cli/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.4/cli/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.4/cli/php.ini | |
sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.3/cli/php.ini | |
sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.3/cli/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.3/cli/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.3/cli/php.ini | |
sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.2/cli/php.ini | |
sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.2/cli/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.2/cli/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/cli/php.ini | |
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 | |
sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.0/cli/php.ini | |
sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.0/cli/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.0/cli/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.0/cli/php.ini | |
sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/5.6/cli/php.ini | |
sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/5.6/cli/php.ini | |
sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/5.6/cli/php.ini | |
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/5.6/cli/php.ini | |
# Install Nginx | |
apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \ | |
nginx | |
rm /etc/nginx/sites-enabled/default | |
rm /etc/nginx/sites-available/default | |
# Create a configuration file for Nginx overrides. | |
sudo mkdir -p /home/vagrant/.config/nginx | |
sudo chown -R vagrant:vagrant /home/vagrant | |
touch /home/vagrant/.config/nginx/nginx.conf | |
sudo ln -sf /home/vagrant/.config/nginx/nginx.conf /etc/nginx/conf.d/nginx.conf | |
# Setup Some PHP-FPM Options | |
echo "xdebug.remote_enable = 1" >> /etc/php/7.4/mods-available/xdebug.ini | |
echo "xdebug.remote_connect_back = 1" >> /etc/php/7.4/mods-available/xdebug.ini | |
echo "xdebug.remote_port = 9000" >> /etc/php/7.4/mods-available/xdebug.ini | |
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.4/mods-available/xdebug.ini | |
echo "opcache.revalidate_freq = 0" >> /etc/php/7.4/mods-available/opcache.ini | |
echo "xdebug.remote_enable = 1" >> /etc/php/7.3/mods-available/xdebug.ini | |
echo "xdebug.remote_connect_back = 1" >> /etc/php/7.3/mods-available/xdebug.ini | |
echo "xdebug.remote_port = 9000" >> /etc/php/7.3/mods-available/xdebug.ini | |
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.3/mods-available/xdebug.ini | |
echo "opcache.revalidate_freq = 0" >> /etc/php/7.3/mods-available/opcache.ini | |
echo "xdebug.remote_enable = 1" >> /etc/php/7.2/mods-available/xdebug.ini | |
echo "xdebug.remote_connect_back = 1" >> /etc/php/7.2/mods-available/xdebug.ini | |
echo "xdebug.remote_port = 9000" >> /etc/php/7.2/mods-available/xdebug.ini | |
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.2/mods-available/xdebug.ini | |
echo "opcache.revalidate_freq = 0" >> /etc/php/7.2/mods-available/opcache.ini | |
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 | |
echo "xdebug.remote_enable = 1" >> /etc/php/7.0/mods-available/xdebug.ini | |
echo "xdebug.remote_connect_back = 1" >> /etc/php/7.0/mods-available/xdebug.ini | |
echo "xdebug.remote_port = 9000" >> /etc/php/7.0/mods-available/xdebug.ini | |
echo "xdebug.max_nesting_level = 512" >> /etc/php/7.0/mods-available/xdebug.ini | |
echo "opcache.revalidate_freq = 0" >> /etc/php/7.0/mods-available/opcache.ini | |
echo "xdebug.remote_enable = 1" >> /etc/php/5.6/mods-available/xdebug.ini | |
echo "xdebug.remote_connect_back = 1" >> /etc/php/5.6/mods-available/xdebug.ini | |
echo "xdebug.remote_port = 9000" >> /etc/php/5.6/mods-available/xdebug.ini | |
echo "xdebug.max_nesting_level = 512" >> /etc/php/5.6/mods-available/xdebug.ini | |
echo "opcache.revalidate_freq = 0" >> /etc/php/5.6/mods-available/opcache.ini | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.4/fpm/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.4/fpm/php.ini | |
printf "[openssl]\n" | tee -a /etc/php/7.4/fpm/php.ini | |
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.4/fpm/php.ini | |
printf "[curl]\n" | tee -a /etc/php/7.4/fpm/php.ini | |
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.4/fpm/php.ini | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.3/fpm/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.3/fpm/php.ini | |
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.3/fpm/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.3/fpm/php.ini | |
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.3/fpm/php.ini | |
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.3/fpm/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.3/fpm/php.ini | |
printf "[openssl]\n" | tee -a /etc/php/7.3/fpm/php.ini | |
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.3/fpm/php.ini | |
printf "[curl]\n" | tee -a /etc/php/7.3/fpm/php.ini | |
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.3/fpm/php.ini | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.2/fpm/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.2/fpm/php.ini | |
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.2/fpm/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.2/fpm/php.ini | |
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.2/fpm/php.ini | |
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.2/fpm/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.ini | |
printf "[openssl]\n" | tee -a /etc/php/7.2/fpm/php.ini | |
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.2/fpm/php.ini | |
printf "[curl]\n" | tee -a /etc/php/7.2/fpm/php.ini | |
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.2/fpm/php.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 | |
printf "[openssl]\n" | tee -a /etc/php/7.1/fpm/php.ini | |
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.1/fpm/php.ini | |
printf "[curl]\n" | tee -a /etc/php/7.1/fpm/php.ini | |
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.1/fpm/php.ini | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.0/fpm/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.0/fpm/php.ini | |
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.0/fpm/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.0/fpm/php.ini | |
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.0/fpm/php.ini | |
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.0/fpm/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.0/fpm/php.ini | |
printf "[openssl]\n" | tee -a /etc/php/7.0/fpm/php.ini | |
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.0/fpm/php.ini | |
printf "[curl]\n" | tee -a /etc/php/7.0/fpm/php.ini | |
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.0/fpm/php.ini | |
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/5.6/fpm/php.ini | |
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/5.6/fpm/php.ini | |
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/5.6/fpm/php.ini | |
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/5.6/fpm/php.ini | |
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/5.6/fpm/php.ini | |
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/5.6/fpm/php.ini | |
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/5.6/fpm/php.ini | |
printf "[openssl]\n" | tee -a /etc/php/5.6/fpm/php.ini | |
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/5.6/fpm/php.ini | |
printf "[curl]\n" | tee -a /etc/php/5.6/fpm/php.ini | |
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/5.6/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.4/fpm/pool.d/www.conf | |
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.3/fpm/pool.d/www.conf | |
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.3/fpm/pool.d/www.conf | |
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.3/fpm/pool.d/www.conf | |
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.3/fpm/pool.d/www.conf | |
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.3/fpm/pool.d/www.conf | |
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf | |
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf | |
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf | |
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf | |
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.2/fpm/pool.d/www.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 | |
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf | |
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf | |
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf | |
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf | |
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.0/fpm/pool.d/www.conf | |
sed -i "s/user = www-data/user = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf | |
sed -i "s/group = www-data/group = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf | |
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf | |
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf | |
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/5.6/fpm/pool.d/www.conf | |
service nginx restart | |
service php7.4-fpm restart | |
service php7.3-fpm restart | |
service php7.2-fpm restart | |
service php7.1-fpm restart | |
service php7.0-fpm restart | |
service php5.6-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 npm | |
/usr/bin/npm install -g gulp-cli | |
/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 | |
echo "mysql-server mysql-server/root_password password secret" | debconf-set-selections | |
echo "mysql-server mysql-server/root_password_again password secret" | debconf-set-selections | |
apt-get install -y mysql-server | |
# Install LMM for database snapshots | |
apt-get install -y thin-provisioning-tools bc | |
git clone -b ubuntu-18.04 https://github.com/Lullabot/lmm.git /opt/lmm | |
sed -e 's/vagrant-vg/homestead-vg/' -i /opt/lmm/config.sh | |
ln -s /opt/lmm/lmm /usr/local/sbin/lmm | |
# Create a thinly provisioned volume to move the database to. We use 40G as the | |
# size leaving ~5GB free for other volumes. | |
mkdir -p /homestead-vg/master | |
sudo lvs | |
lvcreate -L 40G -T homestead-vg/thinpool | |
# Create a 10GB volume for the database. If needed, it can be expanded with | |
# lvextend. | |
lvcreate -V10G -T homestead-vg/thinpool -n mysql-master | |
mkfs.ext4 /dev/homestead-vg/mysql-master | |
echo "/dev/homestead-vg/mysql-master\t/homestead-vg/master\text4\terrors=remount-ro\t0\t1" >> /etc/fstab | |
mount -a | |
chown mysql:mysql /homestead-vg/master | |
# Move the data directory and symlink it in. | |
systemctl stop mysql | |
mv /var/lib/mysql/* /homestead-vg/master | |
rm -rf /var/lib/mysql | |
ln -s /homestead-vg/master /var/lib/mysql | |
# Allow mysqld to access the new data directories. | |
echo '/homestead-vg/ r,' >> /etc/apparmor.d/local/usr.sbin.mysqld | |
echo '/homestead-vg/** rwk,' >> /etc/apparmor.d/local/usr.sbin.mysqld | |
systemctl restart apparmor | |
systemctl start mysql | |
# 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;" | |
sudo tee /home/vagrant/.my.cnf <<EOL | |
[mysqld] | |
character-set-server=utf8mb4 | |
collation-server=utf8mb4_bin | |
EOL | |
# Add Timezone Support To MySQL | |
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql --user=root --password=secret mysql | |
service mysql restart | |
# Install Postgres | |
apt-get install -y postgresql-11 postgresql-server-dev-11 | |
# Configure Postgres Remote Access | |
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/11/main/postgresql.conf | |
echo "host all all 10.0.2.2/32 md5" | tee -a /etc/postgresql/11/main/pg_hba.conf | |
sudo -u postgres psql -c "CREATE ROLE homestead LOGIN PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;" | |
sudo -u postgres /usr/bin/createdb --echo --owner=homestead homestead | |
service postgresql restart | |
# 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 Heroku CLI | |
curl https://cli-assets.heroku.com/install-ubuntu.sh | sh | |
# 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 | |
# Install Flyway | |
wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/4.2.0/flyway-commandline-4.2.0-linux-x64.tar.gz | |
tar -zxvf flyway-commandline-4.2.0-linux-x64.tar.gz -C /usr/local | |
chmod +x /usr/local/flyway-4.2.0/flyway | |
ln -s /usr/local/flyway-4.2.0/flyway /usr/local/bin/flyway | |
rm -rf flyway-commandline-4.2.0-linux-x64.tar.gz | |
# Install wp-cli | |
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar | |
chmod +x wp-cli.phar | |
mv wp-cli.phar /usr/local/bin/wp | |
# Install Drush Launcher. | |
curl --silent --location https://github.com/drush-ops/drush-launcher/releases/download/0.6.0/drush.phar --output drush.phar | |
chmod +x drush.phar | |
mv drush.phar /usr/local/bin/drush | |
drush self-update | |
# Install Drupal Console Launcher. | |
curl --silent --location https://drupalconsole.com/installer --output drupal.phar | |
chmod +x drupal.phar | |
mv drupal.phar /usr/local/bin/drupal | |
# Install & Configure Postfix | |
echo "postfix postfix/mailname string homestead.test" | debconf-set-selections | |
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections | |
apt-get install -y postfix | |
sed -i "s/relayhost =/relayhost = [localhost]:1025/g" /etc/postfix/main.cf | |
/etc/init.d/postfix reload | |
# Update / Override motd | |
sed -i "s/motd.ubuntu.com/homestead.joeferguson.me/g" /etc/default/motd-news | |
rm -rf /etc/update-motd.d/10-help-text | |
rm -rf /etc/update-motd.d/50-landscape-sysinfo | |
service motd-news restart | |
# One last upgrade check | |
apt-get upgrade -y | |
# Clean Up | |
apt -y autoremove | |
apt -y clean | |
chown -R vagrant:vagrant /home/vagrant | |
chown -R vagrant:vagrant /usr/local/bin | |
# 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 | |
# Perform some cleanup from chef/bento packer_templates/ubuntu/scripts/cleanup.sh | |
# Delete Linux source | |
dpkg --list \ | |
| awk '{ print $2 }' \ | |
| grep linux-source \ | |
| xargs apt-get -y purge; | |
# delete docs packages | |
dpkg --list \ | |
| awk '{ print $2 }' \ | |
| grep -- '-doc$' \ | |
| xargs apt-get -y purge; | |
# Delete obsolete networking | |
apt-get -y purge ppp pppconfig pppoeconf | |
# Configure chronyd to fix clock-drift when VM-host sleeps/hibernates. | |
sed -i "s/^makestep.*/makestep 1 -1/" /etc/chrony/chrony.conf | |
# Delete oddities | |
apt-get -y purge popularity-contest installation-report command-not-found command-not-found-data friendly-recovery \ | |
fonts-ubuntu-font-family-console laptop-detect | |
# Exlude the files we don't need w/o uninstalling linux-firmware | |
echo "==> Setup dpkg excludes for linux-firmware" | |
cat <<_EOF_ | cat >> /etc/dpkg/dpkg.cfg.d/excludes | |
#BENTO-BEGIN | |
path-exclude=/lib/firmware/* | |
path-exclude=/usr/share/doc/linux-firmware/* | |
#BENTO-END | |
_EOF_ | |
# Delete the massive firmware packages | |
rm -rf /lib/firmware/* | |
rm -rf /usr/share/doc/linux-firmware/* | |
apt-get -y autoremove; | |
apt-get -y clean; | |
# Remove docs | |
rm -rf /usr/share/doc/* | |
# Remove caches | |
find /var/cache -type f -exec rm -rf {} \; | |
# delete any logs that have built up during the install | |
find /var/log/ -name *.log -exec rm -f {} \; | |
# Blank netplan machine-id (DUID) so machines get unique ID generated on boot. | |
truncate -s 0 /etc/machine-id | |
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment