|
#!/usr/bin/env bash |
|
|
|
# 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/stable -y |
|
apt-add-repository ppa:rwky/redis -y |
|
apt-add-repository ppa:ondrej/php5-5.6 -y |
|
add-apt-repository ppa:git-core/ppa |
|
|
|
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/ trusty-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_4.x | bash - |
|
|
|
# Update Package Lists |
|
|
|
apt-get update |
|
|
|
# Install Some Basic Packages |
|
|
|
apt-get install -y build-essential dos2unix gcc git libmcrypt4 libpcre3-dev \ |
|
make python2.7-dev python-pip re2c supervisor unattended-upgrades whois vim libnotify-bin |
|
|
|
# Set My Timezone |
|
|
|
#ln -sf /usr/share/zoneinfo/UTC /etc/localtime |
|
|
|
# Install PHP Stuffs |
|
|
|
apt-get install -y php5-cli php5-dev php-pear \ |
|
php5-mysqlnd php5-pgsql php5-sqlite \ |
|
php5-apcu php5-json php5-curl php5-gd \ |
|
php5-gmp php5-imap php5-mcrypt php5-xdebug \ |
|
php5-memcached |
|
|
|
# Make MCrypt Available |
|
|
|
ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available |
|
php5enmod mcrypt |
|
|
|
# Install Mailparse PECL Extension |
|
|
|
pecl install mailparse |
|
echo "extension=mailparse.so" > /etc/php5/mods-available/mailparse.ini |
|
ln -s /etc/php5/mods-available/mailparse.ini /etc/php5/cli/conf.d/20-mailparse.ini |
|
|
|
# Install Composer |
|
|
|
curl -sS https://getcomposer.org/installer | php |
|
mv composer.phar /usr/local/bin/composer |
|
|
|
# Add Composer Global Bin To Path |
|
|
|
printf "\nPATH=\"/home/gravitano/.composer/vendor/bin:\$PATH\"\n" | tee -a /home/gravitano/.profile |
|
|
|
# Install Laravel Envoy & Installer |
|
|
|
sudo su gravitano <<'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 |
|
|
|
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php5/cli/php.ini |
|
sed -i "s/display_errors = .*/display_errors = On/" /etc/php5/cli/php.ini |
|
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php5/cli/php.ini |
|
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php5/cli/php.ini |
|
|
|
# Install Nginx & PHP-FPM |
|
|
|
apt-get install -y nginx php5-fpm |
|
|
|
rm /etc/nginx/sites-enabled/default |
|
rm /etc/nginx/sites-available/default |
|
service nginx restart |
|
|
|
# Add The HHVM Key & Repository |
|
|
|
#wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add - |
|
#echo deb http://dl.hhvm.com/ubuntu trusty main | tee /etc/apt/sources.list.d/hhvm.list |
|
#apt-get update |
|
#apt-get install -y hhvm |
|
|
|
# Configure HHVM To Run As Homestead |
|
|
|
#service hhvm stop |
|
#sed -i 's/#RUN_AS_USER="www-data"/RUN_AS_USER="gravitanof"/' /etc/default/hhvm |
|
#service hhvm start |
|
|
|
# Start HHVM On System Start |
|
|
|
#update-rc.d hhvm defaults |
|
|
|
# Setup Some PHP-FPM Options |
|
|
|
ln -s /etc/php5/mods-available/mailparse.ini /etc/php5/fpm/conf.d/20-mailparse.ini |
|
|
|
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php5/fpm/php.ini |
|
sed -i "s/display_errors = .*/display_errors = On/" /etc/php5/fpm/php.ini |
|
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php5/fpm/php.ini |
|
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php5/fpm/php.ini |
|
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php5/fpm/php.ini |
|
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php5/fpm/php.ini |
|
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php5/fpm/php.ini |
|
|
|
echo "xdebug.remote_enable = 1" >> /etc/php5/fpm/conf.d/20-xdebug.ini |
|
echo "xdebug.remote_connect_back = 1" >> /etc/php5/fpm/conf.d/20-xdebug.ini |
|
echo "xdebug.remote_port = 9000" >> /etc/php5/fpm/conf.d/20-xdebug.ini |
|
echo "xdebug.max_nesting_level = 512" >> /etc/php5/fpm/conf.d/20-xdebug.ini |
|
|
|
# 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 gravitano;/" /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 = gravitano/" /etc/php5/fpm/pool.d/www.conf |
|
sed -i "s/group = www-data/group = gravitano/" /etc/php5/fpm/pool.d/www.conf |
|
|
|
sed -i "s/listen\.owner.*/listen.owner = gravitano/" /etc/php5/fpm/pool.d/www.conf |
|
sed -i "s/listen\.group.*/listen.group = gravitano/" /etc/php5/fpm/pool.d/www.conf |
|
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php5/fpm/pool.d/www.conf |
|
|
|
service nginx restart |
|
service php5-fpm restart |
|
|
|
# Add gravitano User To WWW-Data |
|
|
|
usermod -a -G www-data gravitano |
|
id gravitano |
|
groups gravitano |
|
|
|
# Install Node |
|
|
|
apt-get install -y nodejs |
|
/usr/bin/npm install -g gulp |
|
/usr/bin/npm install -g bower |
|
|
|
# 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-5.6 |
|
|
|
# Configure MySQL Remote Access |
|
|
|
sed -i '/^bind-address/s/bind-address.*=.*/bind-address = 0.0.0.0/' /etc/mysql/my.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;" |
|
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-9.4 postgresql-contrib-9.4 |
|
|
|
# Configure Postgres Remote Access |
|
|
|
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/9.4/main/postgresql.conf |
|
echo "host all all 10.0.2.2/32 md5" | tee -a /etc/postgresql/9.4/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 A Few Other Things |
|
|
|
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 |
|
|
|
# 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 |