Advertisement
Guest User

Untitled

a guest
Jul 11th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.31 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. export DEBIAN_FRONTEND=noninteractive
  4.  
  5. # Update Package List
  6.  
  7. apt-get update
  8.  
  9. # Update System Packages
  10. apt-get -y upgrade
  11.  
  12. # Force Locale
  13.  
  14. echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
  15. locale-gen en_US.UTF-8
  16.  
  17. # Install Some PPAs
  18.  
  19. apt-get install -y software-properties-common curl
  20.  
  21. apt-add-repository ppa:nginx/development -y
  22. apt-add-repository ppa:chris-lea/redis-server -y
  23. apt-add-repository ppa:ondrej/php -y
  24.  
  25. # gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
  26. # apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 5072E1F5
  27. # sh -c 'echo "deb http://repo.mysql.com/apt/ubuntu/ xenial mysql-5.7" >> /etc/apt/sources.list.d/mysql.list'
  28.  
  29. # wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
  30. # sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
  31.  
  32. curl -s https://packagecloud.io/gpg.key | apt-key add -
  33. echo "deb http://packages.blackfire.io/debian any main" | tee /etc/apt/sources.list.d/blackfire.list
  34.  
  35. curl --silent --location https://deb.nodesource.com/setup_6.x | bash -
  36.  
  37. # Update Package Lists
  38.  
  39. apt-get update
  40.  
  41. # Install Some Basic Packages
  42.  
  43. apt-get install -y build-essential dos2unix gcc git libmcrypt4 libpcre3-dev ntp unzip \
  44. make python2.7-dev python-pip re2c supervisor unattended-upgrades whois vim libnotify-bin \
  45. pv cifs-utils
  46.  
  47. # Set My Timezone
  48.  
  49. ln -sf /usr/share/zoneinfo/UTC /etc/localtime
  50.  
  51. # Install PHP Stuffs
  52.  
  53. apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
  54. php7.1-cli php7.1-dev \
  55. php7.1-pgsql php7.1-sqlite3 php7.1-gd \
  56. php7.1-curl php7.1-memcached \
  57. php7.1-imap php7.1-mysql php7.1-mbstring \
  58. php7.1-xml php7.1-zip php7.1-bcmath php7.1-soap \
  59. php7.1-intl php7.1-readline php-xdebug
  60.  
  61. # Install Composer
  62.  
  63. curl -sS https://getcomposer.org/installer | php
  64. mv composer.phar /usr/local/bin/composer
  65.  
  66. # Add Composer Global Bin To Path
  67.  
  68. printf "\nPATH=\"$(sudo su - vagrant -c 'composer config -g home 2>/dev/null')/vendor/bin:\$PATH\"\n" | tee -a /home/vagrant/.profile
  69.  
  70. # Install Laravel Envoy & Installer
  71.  
  72. sudo su vagrant <<'EOF'
  73. /usr/local/bin/composer global require "laravel/envoy=~1.0"
  74. /usr/local/bin/composer global require "laravel/installer=~1.1"
  75. EOF
  76.  
  77. # Set Some PHP CLI Settings
  78.  
  79. sudo sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.1/cli/php.ini
  80. sudo sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.1/cli/php.ini
  81. sudo sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.1/cli/php.ini
  82. sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.1/cli/php.ini
  83.  
  84. # Install Nginx & PHP-FPM
  85.  
  86. apt-get install -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
  87. nginx php7.1-fpm
  88.  
  89. rm /etc/nginx/sites-enabled/default
  90. rm /etc/nginx/sites-available/default
  91. service nginx restart
  92.  
  93. # Setup Some PHP-FPM Options
  94.  
  95. echo "xdebug.remote_enable = 1" >> /etc/php/7.1/mods-available/xdebug.ini
  96. echo "xdebug.remote_connect_back = 1" >> /etc/php/7.1/mods-available/xdebug.ini
  97. echo "xdebug.remote_port = 9000" >> /etc/php/7.1/mods-available/xdebug.ini
  98. echo "xdebug.max_nesting_level = 512" >> /etc/php/7.1/mods-available/xdebug.ini
  99. echo "opcache.revalidate_freq = 0" >> /etc/php/7.1/mods-available/opcache.ini
  100.  
  101. sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/7.1/fpm/php.ini
  102. sed -i "s/display_errors = .*/display_errors = On/" /etc/php/7.1/fpm/php.ini
  103. sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/7.1/fpm/php.ini
  104. sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/7.1/fpm/php.ini
  105. sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/7.1/fpm/php.ini
  106. sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/7.1/fpm/php.ini
  107. sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.1/fpm/php.ini
  108.  
  109. # Disable XDebug On The CLI
  110.  
  111. sudo phpdismod -s cli xdebug
  112.  
  113. # Copy fastcgi_params to Nginx because they broke it on the PPA
  114.  
  115. cat > /etc/nginx/fastcgi_params << EOF
  116. fastcgi_param QUERY_STRING \$query_string;
  117. fastcgi_param REQUEST_METHOD \$request_method;
  118. fastcgi_param CONTENT_TYPE \$content_type;
  119. fastcgi_param CONTENT_LENGTH \$content_length;
  120. fastcgi_param SCRIPT_FILENAME \$request_filename;
  121. fastcgi_param SCRIPT_NAME \$fastcgi_script_name;
  122. fastcgi_param REQUEST_URI \$request_uri;
  123. fastcgi_param DOCUMENT_URI \$document_uri;
  124. fastcgi_param DOCUMENT_ROOT \$document_root;
  125. fastcgi_param SERVER_PROTOCOL \$server_protocol;
  126. fastcgi_param GATEWAY_INTERFACE CGI/1.1;
  127. fastcgi_param SERVER_SOFTWARE nginx/\$nginx_version;
  128. fastcgi_param REMOTE_ADDR \$remote_addr;
  129. fastcgi_param REMOTE_PORT \$remote_port;
  130. fastcgi_param SERVER_ADDR \$server_addr;
  131. fastcgi_param SERVER_PORT \$server_port;
  132. fastcgi_param SERVER_NAME \$server_name;
  133. fastcgi_param HTTPS \$https if_not_empty;
  134. fastcgi_param REDIRECT_STATUS 200;
  135. EOF
  136.  
  137. # Set The Nginx & PHP-FPM User
  138.  
  139. sed -i "s/user www-data;/user vagrant;/" /etc/nginx/nginx.conf
  140. sed -i "s/# server_names_hash_bucket_size.*/server_names_hash_bucket_size 64;/" /etc/nginx/nginx.conf
  141.  
  142. sed -i "s/user = www-data/user = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
  143. sed -i "s/group = www-data/group = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
  144.  
  145. sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
  146. sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
  147. sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.1/fpm/pool.d/www.conf
  148.  
  149. service nginx restart
  150. service php7.1-fpm restart
  151.  
  152. # Add Vagrant User To WWW-Data
  153.  
  154. usermod -a -G www-data vagrant
  155. id vagrant
  156. groups vagrant
  157.  
  158. # Install Node
  159.  
  160. apt-get install -y nodejs
  161. /usr/bin/npm install -g gulp
  162. /usr/bin/npm install -g bower
  163. /usr/bin/npm install -g yarn
  164. /usr/bin/npm install -g grunt-cli
  165.  
  166. # Install SQLite
  167.  
  168. apt-get install -y sqlite3 libsqlite3-dev
  169.  
  170. # Install MySQL
  171.  
  172. debconf-set-selections <<< "mysql-server mysql-server/root_password password secret"
  173. debconf-set-selections <<< "mysql-server mysql-server/root_password_again password secret"
  174. apt-get install -y mysql-server
  175.  
  176. # Configure MySQL Password Lifetime
  177.  
  178. echo "default_password_lifetime = 0" >> /etc/mysql/mysql.conf.d/mysqld.cnf
  179.  
  180. # Configure MySQL Remote Access
  181.  
  182. sed -i '/^bind-address/s/bind-address.*=.*/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf
  183.  
  184. mysql --user="root" --password="secret" -e "GRANT ALL ON *.* TO root@'0.0.0.0' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
  185. service mysql restart
  186.  
  187. mysql --user="root" --password="secret" -e "CREATE USER 'homestead'@'0.0.0.0' IDENTIFIED BY 'secret';"
  188. mysql --user="root" --password="secret" -e "GRANT ALL ON *.* TO 'homestead'@'0.0.0.0' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
  189. mysql --user="root" --password="secret" -e "GRANT ALL ON *.* TO 'homestead'@'%' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
  190. mysql --user="root" --password="secret" -e "FLUSH PRIVILEGES;"
  191. mysql --user="root" --password="secret" -e "CREATE DATABASE homestead character set UTF8mb4 collate utf8mb4_bin;"
  192. service mysql restart
  193.  
  194. # Add Timezone Support To MySQL
  195.  
  196. mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql --user=root --password=secret mysql
  197.  
  198. # Install Postgres
  199.  
  200. apt-get install -y postgresql
  201.  
  202. # Configure Postgres Remote Access
  203.  
  204. sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /etc/postgresql/9.5/main/postgresql.conf
  205. echo "host all all 10.0.2.2/32 md5" | tee -a /etc/postgresql/9.5/main/pg_hba.conf
  206. sudo -u postgres psql -c "CREATE ROLE homestead LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
  207. sudo -u postgres /usr/bin/createdb --echo --owner=homestead homestead
  208. service postgresql restart
  209.  
  210. # Install Blackfire
  211.  
  212. apt-get install -y blackfire-agent blackfire-php
  213.  
  214. # Install The Chrome Web Driver & Dusk Utilities
  215.  
  216. apt-get -y install libxpm4 libxrender1 libgtk2.0-0 \
  217. libnss3 libgconf-2-4 chromium-browser \
  218. xvfb gtk2-engines-pixbuf xfonts-cyrillic \
  219. xfonts-100dpi xfonts-75dpi xfonts-base \
  220. xfonts-scalable imagemagick x11-apps
  221.  
  222. # Install Memcached & Beanstalk
  223.  
  224. apt-get install -y redis-server memcached beanstalkd
  225.  
  226. # Configure Beanstalkd
  227.  
  228. sed -i "s/#START=yes/START=yes/" /etc/default/beanstalkd
  229. /etc/init.d/beanstalkd start
  230.  
  231. # Install & Configure MailHog
  232.  
  233. wget --quiet -O /usr/local/bin/mailhog https://github.com/mailhog/MailHog/releases/download/v0.2.1/MailHog_linux_amd64
  234. chmod +x /usr/local/bin/mailhog
  235.  
  236. sudo tee /etc/systemd/system/mailhog.service <<EOL
  237. [Unit]
  238. Description=Mailhog
  239. After=network.target
  240. [Service]
  241. User=vagrant
  242. ExecStart=/usr/bin/env /usr/local/bin/mailhog > /dev/null 2>&1 &
  243. [Install]
  244. WantedBy=multi-user.target
  245. EOL
  246.  
  247. systemctl daemon-reload
  248. systemctl enable mailhog
  249.  
  250. # Configure Supervisor
  251.  
  252. systemctl enable supervisor.service
  253. service supervisor start
  254.  
  255. # Install ngrok
  256.  
  257. wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
  258. unzip ngrok-stable-linux-amd64.zip -d /usr/local/bin
  259. rm -rf ngrok-stable-linux-amd64.zip
  260.  
  261. # Clean Up
  262.  
  263. apt-get -y autoremove
  264. apt-get -y clean
  265.  
  266. # Enable Swap Memory
  267.  
  268. /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
  269. /sbin/mkswap /var/swap.1
  270. /sbin/swapon /var/swap.1
  271.  
  272. # Minimize The Disk Image
  273.  
  274. echo "Minimizing disk image..."
  275. dd if=/dev/zero of=/EMPTY bs=1M
  276. rm -f /EMPTY
  277. sync
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement