]> git.mxchange.org Git - friendica.git/commitdiff
added vagrant configuration for running a friendica development instance
authorHauke Altmann <hauke.altmann@berlin.msf.org>
Fri, 20 Jun 2014 14:05:44 +0000 (16:05 +0200)
committerHauke Altmann <hauke.altmann@berlin.msf.org>
Fri, 20 Jun 2014 14:05:44 +0000 (16:05 +0200)
.gitignore
Vagrantfile [new file with mode: 0644]
util/vagrant_provision.sh [new file with mode: 0644]

index 71528335901c55cdb6b5ae4c75faeecae5670bb5..38d5e6fd2c77ae100eb24349d6801421b4cc3549 100644 (file)
@@ -34,3 +34,6 @@ report/
 /privacy_image_cache/\r
 /photo/\r
 nbproject\r
+\r
+#ignore vagrant dir\r
+.vagrant/\r
diff --git a/Vagrantfile b/Vagrantfile
new file mode 100644 (file)
index 0000000..015ceb8
--- /dev/null
@@ -0,0 +1,269 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Config Github Settings
+github_username = "fideloper"
+github_repo     = "Vaprobash"
+github_branch   = "1.0.0"
+github_url      = "https://raw.githubusercontent.com/#{github_username}/#{github_repo}/#{github_branch}"
+
+# Server Configuration
+
+hostname        = "vaprobash.dev"
+
+# Set a local private network IP address.
+# See http://en.wikipedia.org/wiki/Private_network for explanation
+# You can use the following IP ranges:
+#   10.0.0.1    - 10.255.255.254
+#   172.16.0.1  - 172.31.255.254
+#   192.168.0.1 - 192.168.255.254
+server_ip             = "192.168.22.10"
+server_memory         = "384" # MB
+server_swap           = "768" # Options: false | int (MB) - Guideline: Between one or two times the server_memory
+server_timezone       = "UTC"
+
+# Database Configuration
+mysql_root_password   = "root"   # We'll assume user "root"
+mysql_version         = "5.5"    # Options: 5.5 | 5.6
+mysql_enable_remote   = "false"  # remote access enabled when true
+pgsql_root_password   = "root"   # We'll assume user "root"
+
+# Languages and Packages
+ruby_version          = "latest" # Choose what ruby version should be installed (will also be the default version)
+ruby_gems             = [        # List any Ruby Gems that you want to install
+  #"jekyll",
+  #"sass",
+  #"compass",
+]
+
+# To install HHVM instead of PHP, set this to "true"
+hhvm                  = "false"
+
+# PHP Options
+composer_packages     = [        # List any global Composer packages that you want to install
+  #"phpunit/phpunit:4.0.*",
+  #"codeception/codeception=*",
+  #"phpspec/phpspec:2.0.*@dev",
+  #"squizlabs/php_codesniffer:1.5.*",
+]
+
+# Default web server document root
+# Symfony's public directory is assumed "web"
+# Laravel's public directory is assumed "public"
+public_folder         = "/vagrant"
+
+laravel_root_folder   = "/vagrant/laravel" # Where to install Laravel. Will `composer install` if a composer.json file exists
+laravel_version       = "latest-stable" # If you need a specific version of Laravel, set it here
+symfony_root_folder   = "/vagrant/symfony" # Where to install Symfony.
+
+nodejs_version        = "latest"   # By default "latest" will equal the latest stable version
+nodejs_packages       = [          # List any global NodeJS packages that you want to install
+  #"grunt-cli",
+  #"gulp",
+  #"bower",
+  #"yo",
+]
+
+Vagrant.configure("2") do |config|
+
+  # Set server to Ubuntu 14.04
+  config.vm.box = "ubuntu/trusty64"
+
+  # Create a hostname, don't forget to put it to the `hosts` file
+  # This will point to the server's default virtual host
+  # TO DO: Make this work with virtualhost along-side xip.io URL
+  config.vm.hostname = hostname
+
+  # Create a static IP
+  config.vm.network :private_network, ip: server_ip
+
+  # Use NFS for the shared folder
+  config.vm.synced_folder ".", "/vagrant",
+            id: "core",
+            :nfs => true,
+            :mount_options => ['nolock,vers=3,udp,noatime']
+
+  # If using VirtualBox
+  config.vm.provider :virtualbox do |vb|
+
+    # Set server memory
+    vb.customize ["modifyvm", :id, "--memory", server_memory]
+
+    # Set the timesync threshold to 10 seconds, instead of the default 20 minutes.
+    # If the clock gets more than 15 minutes out of sync (due to your laptop going
+    # to sleep for instance, then some 3rd party services will reject requests.
+    vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000]
+
+    # Prevent VMs running on Ubuntu to lose internet connection
+    # vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
+    # vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
+
+  end
+
+  # If using VMWare Fusion
+  config.vm.provider "vmware_fusion" do |vb, override|
+    override.vm.box_url = "http://files.vagrantup.com/precise64_vmware.box"
+
+    # Set server memory
+    vb.vmx["memsize"] = server_memory
+
+  end
+
+  # If using Vagrant-Cachier
+  # http://fgrehm.viewdocs.io/vagrant-cachier
+  if Vagrant.has_plugin?("vagrant-cachier")
+    # Configure cached packages to be shared between instances of the same base box.
+    # Usage docs: http://fgrehm.viewdocs.io/vagrant-cachier/usage
+    config.cache.scope = :box
+
+    config.cache.synced_folder_opts = {
+        type: :nfs,
+        mount_options: ['rw', 'vers=3', 'tcp', 'nolock']
+    }
+  end
+
+  ####
+  # Base Items
+  ##########
+
+  # Provision Base Packages
+  config.vm.provision "shell", path: "#{github_url}/scripts/base.sh", args: [github_url, server_swap]
+
+  # Provision PHP
+  config.vm.provision "shell", path: "#{github_url}/scripts/php.sh", args: [server_timezone, hhvm]
+
+  # Enable MSSQL for PHP
+  # config.vm.provision "shell", path: "#{github_url}/scripts/mssql.sh"
+
+  # Provision Vim
+  # config.vm.provision "shell", path: "#{github_url}/scripts/vim.sh", args: github_url
+
+
+  ####
+  # Web Servers
+  ##########
+
+  # Provision Apache Base
+  config.vm.provision "shell", path: "#{github_url}/scripts/apache.sh", args: [server_ip, public_folder, hostname, github_url]
+
+  # Provision Nginx Base
+  # config.vm.provision "shell", path: "#{github_url}/scripts/nginx.sh", args: [server_ip, public_folder, hostname, github_url]
+
+
+  ####
+  # Databases
+  ##########
+
+  # Provision MySQL
+  config.vm.provision "shell", path: "#{github_url}/scripts/mysql.sh", args: [mysql_root_password, mysql_version, mysql_enable_remote]
+
+  # Provision PostgreSQL
+  # config.vm.provision "shell", path: "#{github_url}/scripts/pgsql.sh", args: pgsql_root_password
+
+  # Provision SQLite
+  # config.vm.provision "shell", path: "#{github_url}/scripts/sqlite.sh"
+
+  # Provision RethinkDB
+  # config.vm.provision "shell", path: "#{github_url}/scripts/rethinkdb.sh", args: pgsql_root_password
+
+  # Provision Couchbase
+  # config.vm.provision "shell", path: "#{github_url}/scripts/couchbase.sh"
+
+  # Provision CouchDB
+  # config.vm.provision "shell", path: "#{github_url}/scripts/couchdb.sh"
+
+  # Provision MongoDB
+  # config.vm.provision "shell", path: "#{github_url}/scripts/mongodb.sh"
+
+  # Provision MariaDB
+  # config.vm.provision "shell", path: "#{github_url}/scripts/mariadb.sh", args: [mysql_root_password, mysql_enable_remote]
+
+  ####
+  # Search Servers
+  ##########
+
+  # Install Elasticsearch
+  # config.vm.provision "shell", path: "#{github_url}/scripts/elasticsearch.sh"
+
+  # Install SphinxSearch
+  # config.vm.provision "shell", path: "#{github_url}/scripts/sphinxsearch.sh"
+
+  ####
+  # Search Server Administration (web-based)
+  ##########
+
+  # Install ElasticHQ
+  # Admin for: Elasticsearch
+  # Works on: Apache2, Nginx
+  # config.vm.provision "shell", path: "#{github_url}/scripts/elastichq.sh"
+
+
+  ####
+  # In-Memory Stores
+  ##########
+
+  # Install Memcached
+  # config.vm.provision "shell", path: "#{github_url}/scripts/memcached.sh"
+
+  # Provision Redis (without journaling and persistence)
+  # config.vm.provision "shell", path: "#{github_url}/scripts/redis.sh"
+
+  # Provision Redis (with journaling and persistence)
+  # config.vm.provision "shell", path: "#{github_url}/scripts/redis.sh", args: "persistent"
+  # NOTE: It is safe to run this to add persistence even if originally provisioned without persistence
+
+
+  ####
+  # Utility (queue)
+  ##########
+
+  # Install Beanstalkd
+  # config.vm.provision "shell", path: "#{github_url}/scripts/beanstalkd.sh"
+
+  # Install Heroku Toolbelt
+  # config.vm.provision "shell", path: "https://toolbelt.heroku.com/install-ubuntu.sh"
+
+  # Install Supervisord
+  # config.vm.provision "shell", path: "#{github_url}/scripts/supervisord.sh"
+
+  ####
+  # Additional Languages
+  ##########
+
+  # Install Nodejs
+  # config.vm.provision "shell", path: "#{github_url}/scripts/nodejs.sh", privileged: false, args: nodejs_packages.unshift(nodejs_version, github_url)
+
+  # Install Ruby Version Manager (RVM)
+  # config.vm.provision "shell", path: "#{github_url}/scripts/rvm.sh", privileged: false, args: ruby_gems.unshift(ruby_version)
+
+  ####
+  # Frameworks and Tooling
+  ##########
+
+  # Provision Composer
+  # config.vm.provision "shell", path: "#{github_url}/scripts/composer.sh", privileged: false, args: composer_packages.join(" ")
+
+  # Provision Laravel
+  # config.vm.provision "shell", path: "#{github_url}/scripts/laravel.sh", privileged: false, args: [server_ip, laravel_root_folder, public_folder, laravel_version]
+
+  # Provision Symfony
+  # config.vm.provision "shell", path: "#{github_url}/scripts/symfony.sh", privileged: false, args: [server_ip, symfony_root_folder, public_folder]
+
+  # Install Screen
+  # config.vm.provision "shell", path: "#{github_url}/scripts/screen.sh"
+
+  # Install Mailcatcher
+  config.vm.provision "shell", path: "#{github_url}/scripts/mailcatcher.sh"
+
+  # Install git-ftp
+  # config.vm.provision "shell", path: "#{github_url}/scripts/git-ftp.sh", privileged: false
+
+  ####
+  # Local Scripts
+  # Any local scripts you may want to run post-provisioning.
+  # Add these to the same directory as the Vagrantfile.
+  ##########
+  config.vm.provision "shell", path: "./util/vagrant_provision.sh"
+  config.vm.synced_folder "./", "/vagrant/", :owner=> 'www-data', :group=>'vagrant', :mount_options => ['dmode=775', 'fmode=775']
+
+end
diff --git a/util/vagrant_provision.sh b/util/vagrant_provision.sh
new file mode 100644 (file)
index 0000000..7507b07
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+#Script to setup the vagrant instance for running friendica
+#
+#DO NOT RUN on your physical machine as this won't be of any use 
+#and f.e. deletes your /var/www/ folder!
+
+#make the vagrant directory the docroot
+rm -rf /var/www/
+ln -fs /vagrant /var/www
+
+#create the friendica database
+echo "create database friendica" | mysql -u root -proot
+
+#create cronjob
+echo "*/10 * * * * cd /vagrant; /usr/bin/php include/poller.php" >> friendicacron
+crontab friendicacron
+rm friendicacron
+
+#Optional: checkout addon repository
+#git clone https://github.com/friendica/friendica-addons.git /vagrant/addon
\ No newline at end of file