Advertisement
Tanoro

Basic PHP Vagrantfile

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