Advertisement
Guest User

Untitled

a guest
Oct 5th, 2018
1,033
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.92 KB | None | 0 0
  1. # -*- mode: ruby -*-
  2. # vi: set ft=ruby :
  3.  
  4. VAGRANTFILE_API_VERSION = '2'
  5.  
  6. #########################################################################
  7. # VM Setup for LAMP stack application
  8. #
  9. # - Install PHP and packages
  10. # - Install Apache
  11. # - Configure /vagrant as document root
  12. # - Config PHP for development and logging
  13. # - Install MySQL
  14. # - Setup database and permissions (username and password are "vagrant")
  15. # - Install Composer
  16. #########################################################################
  17.  
  18. @script = <<SCRIPT
  19.  
  20. #################### PHP ####################
  21. apt-get install -y apt-utils php7.2 php7.2-bcmath php7.2-bz2 php7.2-cli php7.2-curl php7.2-intl php7.2-json php7.2-mbstring php7.2-opcache php7.2-soap php7.2-sqlite3 php7.2-xml php7.2-xsl php7.2-zip unzip
  22.  
  23. #################### APACHE2 ####################
  24. apt-get install -y apache2 libapache2-mod-php7.2
  25.  
  26. # Remove /var/www default
  27. rm -rf /var/www
  28.  
  29. # Symlink /vagrant to /var/www
  30. ln -fs /vagrant /var/www
  31.  
  32. # Add ServerName to httpd.conf
  33. echo "ServerName localhost" > /etc/apache2/httpd.conf
  34.  
  35. # Setup hosts file
  36. VHOST=$(cat <<EOF
  37. <VirtualHost *:80>
  38.     DocumentRoot "/vagrant"
  39.     ServerName localhost
  40.     <Directory "/vagrant">
  41.         Options Indexes FollowSymLinks MultiViews Includes
  42.         AllowOverride All
  43.         Require all granted
  44.         Order allow,deny
  45.         Allow from all
  46.         AddType text/html .shtm .shtml
  47.         AddOutputFilter INCLUDES .htm .html .shtm .shtml
  48.     </Directory>
  49. </VirtualHost>
  50. EOF
  51. )
  52. echo "${VHOST}" > /etc/apache2/sites-enabled/000-default.conf
  53.  
  54. # Enable mod_rewrite
  55. a2enmod rewrite
  56.  
  57. # Put PHP into development configuration
  58. mv /etc/php/7.2/apache2/php.ini /etc/php/7.2/apache2/php.ini.back
  59. cp /usr/lib/php/7.2/php.ini-development /etc/php/7.2/apache2/php.ini
  60.  
  61. # Enable PHP extensions in php.ini
  62. #sed -i 's/;extension=mysqli/extension=mysqli/' /etc/php/7.2/apache2/php.ini
  63.  
  64. # PHP will log its errors in a /log/error_log file
  65. sed -i 's:;error_log = php_errors.log:error_log = /vagrant/log/error_log:' /etc/php/7.2/apache2/php.ini
  66.  
  67. # Restart apache
  68. systemctl restart apache2.service
  69.  
  70. #################### MYSQL ####################
  71. apt-get install -y mysql-server mysql-client-core-5.7 php7.2-mysql
  72.  
  73. systemctl start mysql.service
  74.  
  75. # Reset root password
  76. #/usr/bin/mysqladmin -u root password 'root'
  77. mysqladmin -u root password 'root'
  78.  
  79. # Setup database from root user and setup the application user
  80. mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS app"
  81. mysql -uroot -proot app < /vagrant/db/schema.sql
  82. mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* to 'vagrant'@'localhost' IDENTIFIED BY 'vagrant'"
  83. mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* to 'vagrant'@'%' IDENTIFIED BY 'vagrant'"
  84. mysql -uroot -proot -e "FLUSH PRIVILEGES"
  85.  
  86. # Allow remote connections for MySQL Workbench
  87. MYSQLCONF=$(cat <<EOF
  88.  
  89. [mysqld]
  90. bind-address        = 0.0.0.0
  91. EOF
  92. )
  93. echo "${MYSQLCONF}" >> /etc/mysql/my.cnf
  94.  
  95. # Restart mysql
  96. /etc/init.d/mysql restart
  97.  
  98. #################### COMPOSER ####################
  99. curl -sS http://getcomposer.org/installer | php
  100. mv composer.phar /usr/local/bin/composer
  101.  
  102. # Run composer install
  103. cd /vagrant && composer install
  104.  
  105. #################### FINISHED! ####################
  106. echo "** [PHP] Visit http://localhost:8080 in your browser for to view the application **"
  107. SCRIPT
  108.  
  109.  
  110. Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  111.     config.vm.box = 'ubuntu/bionic64'
  112.    
  113.     config.ssh.insert_key = false
  114.    
  115.     config.vm.network "forwarded_port", guest: 80, host: 8080
  116.     config.vm.network "forwarded_port", guest: 443, host: 8081
  117.     config.vm.network "forwarded_port", guest: 3306, host: 3307
  118.    
  119.     #config.vm.synced_folder '.', '/var/www/html'
  120.    
  121.     # Provision runs only on the first "Vangrant up" command
  122.     config.vm.provision 'shell', privileged: true, inline: @script
  123.  
  124.     config.vm.provider "virtualbox" do |vb|
  125.         vb.customize ["modifyvm", :id, "--memory", "2048"]
  126.         vb.customize ['modifyvm', :id, "--natdnshostresolver1", "on"]
  127.     end
  128. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement