From 5024b7426cb81135920b0e30fecb973fa893413d Mon Sep 17 00:00:00 2001 From: Silke Meyer Date: Sat, 19 Nov 2016 16:08:08 +0100 Subject: [PATCH 1/5] Vagrant: Allow to choose between Ubuntu 14.04 und 16.04 --- Vagrantfile | 54 ++++++++++++++++++++++++++++----------- util/vagrant_provision.sh | 27 +++++++++++++++----- 2 files changed, 59 insertions(+), 22 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 0c16fa6b8c..129c90fb49 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,30 +1,54 @@ -server_ip = "192.168.22.10" +server_ip_trusty = "192.168.22.10" +server_ip_xenial = "192.168.22.11" server_memory = "1024" # MB server_timezone = "UTC" public_folder = "/vagrant" Vagrant.configure(2) do |config| - # Set server to Ubuntu 14.04 - config.vm.box = "ubuntu/trusty64" + config.vm.define "trusty" do |trusty| + trusty.vm.box = "ubuntu/trusty64" - # Disable automatic box update checking. If you disable this, then - # boxes will only be checked for updates when the user runs - # `vagrant box outdated`. This is not recommended. - # config.vm.box_check_update = false + # Disable automatic box update checking. If you disable this, then + # boxes will only be checked for updates when the user runs + # `vagrant box outdated`. This is not recommended. + # config.vm.box_check_update = false - # 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 = "friendica.dev" + # 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 + trusty.vm.hostname = "friendica-trusty.dev" - # Create a static IP - config.vm.network :private_network, ip: server_ip + # Create a static IP + trusty.vm.network :private_network, ip: server_ip_trusty + + # Share a folder between host and guest + trusty.vm.synced_folder "./", "/vagrant/", owner: "www-data", group: "vagrant" + end + + # Set server to Ubuntu 16.04 + config.vm.define "xenial" do |xenial| + xenial.vm.box = "ubuntu/xenial64" + + # Disable automatic box update checking. If you disable this, then + # boxes will only be checked for updates when the user runs + # `vagrant box outdated`. This is not recommended. + # config.vm.box_check_update = false + + # 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 + xenial.vm.hostname = "friendica-xenial.dev" + + # Create a static IP + xenial.vm.network :private_network, ip: server_ip_xenial + + # Share a folder between host and guest + xenial.vm.synced_folder "./", "/vagrant/", owner: "www-data", group: "vagrant" + end - # Share a folder between host and guest - config.vm.synced_folder "./", "/vagrant/", owner: "www-data", group: "vagrant" # Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options. diff --git a/util/vagrant_provision.sh b/util/vagrant_provision.sh index 12e792c040..f01f0f66a1 100644 --- a/util/vagrant_provision.sh +++ b/util/vagrant_provision.sh @@ -37,11 +37,19 @@ sudo a2dissite 000-default sudo service apache2 restart #Install php -echo ">>> Installing PHP5" -sudo apt-get install -y php5 libapache2-mod-php5 php5-cli php5-mysql php5-curl php5-gd -sudo apt-get install -y imagemagick -sudo apt-get install -y php5-imagick -sudo service apache2 restart +if [ $( lsb_release -c | cut -f 2 ) == "trusty" ]; then + echo ">>> Installing PHP5" + sudo apt-get install -y php5 libapache2-mod-php5 php5-cli php5-mysql php5-curl php5-gd + sudo apt-get install -y imagemagick + sudo apt-get install -y php5-imagick + sudo service apache2 restart +elif [ $( lsb_release -c | cut -f 2 ) == "xenial" ]; then + echo ">>> Installing PHP7" + sudo apt-get install -y php libapache2-mod-php php-cli php-mysql php-curl php-gd + sudo apt-get install -y imagemagick + sudo apt-get install -y php-imagick + sudo systemctl restart apache2 +fi #Install mysql @@ -59,7 +67,12 @@ Q1="GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;" Q2="FLUSH PRIVILEGES;" SQL="${Q1}${Q2}" $MYSQL -uroot -proot -e "$SQL" -service mysql restart +if [ $( lsb_release -c | cut -f 2 ) == "trusty" ]; then + service mysql restart +elif [ $( lsb_release -c | cut -f 2 ) == "xenial" ]; then + systemctl restart mysql +fi + #configure rudimentary mail server (local delivery only) @@ -87,4 +100,4 @@ sudo crontab friendicacron sudo rm friendicacron #Optional: checkout addon repositroy -#sudo git clone https://github.com/friendica/friendica-addons.git /vagrant/addon +sudo git clone https://github.com/friendica/friendica-addons.git /vagrant/addon From bb3385a7e38d8b61225fd403b892faf517423a4f Mon Sep 17 00:00:00 2001 From: Silke Meyer Date: Sat, 19 Nov 2016 16:09:20 +0100 Subject: [PATCH 2/5] Adapted documentation for Vagrant multiple machines --- doc/Vagrant.md | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/doc/Vagrant.md b/doc/Vagrant.md index 4bc9e6c54d..ec706e5c38 100644 --- a/doc/Vagrant.md +++ b/doc/Vagrant.md @@ -8,7 +8,11 @@ Getting started [Vagrant](https://www.vagrantup.com/) is a virtualization solution for developers. No need to setup up a webserver, database etc. before actually starting. -Vagrant creates a virtual machine (an Ubuntu 14.04) for you that you can just run inside VirtualBox and start to work directly on Friendica. +Vagrant creates a virtual machine for you that you can just run inside VirtualBox and start to work directly on Friendica. +You can choose between two different Ubuntu Linux versions: + +1. Ubuntu Trusty (14.04) with PHP 5.5.9 and MySQL 5.5.53 +2. Ubuntu Xenial (16.04) with PHP 7.0 and MySQL 5.7.16 What you need to do: @@ -16,21 +20,27 @@ What you need to do: Please use an up-to-date vagrant version from https://www.vagrantup.com/downloads.html. 2. Git clone your Friendica repository. Inside, you'll find a "Vagrantfile" and some scripts in the utils folder. -3. Run "vagrant up" from inside the friendica clone. +3. Choose the Ubuntu version you'll need und run "vagrant up " from inside the friendica clone: + $> vagrant up trusty + $> vagrant up xenial Be patient: When it runs for the first time, it downloads an Ubuntu Server image. -4. Run "vagrant ssh" to log into the virtual machine to log in to the VM. -5. Open 192.168.22.10 in a browser. +4. Run "vagrant ssh " to log into the virtual machine to log in to the VM: + $> vagrant ssh trusty + $> vagrant ssh xenial +5. Open you test installation in a browser. +If you selected an Ubuntu Trusty go to 192.168.22.10. +If you started a Xenial machine go to 192.168.22.11. The mysql database is called "friendica", the mysql user and password both are "root". 6. Work on Friendica's code in your git clone on your machine (not in the VM). Your local working directory is set up as a shared directory with the VM (/vagrant). 7. Check the changes in your browser in the VM. -Debug via the "vagrant ssh" login. +Debug via the "vagrant ssh " login. Find the Friendica log file /vagrant/logfile.out. 8. Commit and push your changes directly back to Github. If you want to stop vagrant after finishing your work, run the following command - $> vagrant halt + $> vagrant halt in the development directory. @@ -44,10 +54,3 @@ You will then have the following accounts to login: * friendica2 and friendica3 are conntected. friendica4 and friendica5 are connected. For further documentation of vagrant, please see [the vagrant*docs*](https://docs.vagrantup.com/v2/). - -**Important notice:** -If you already had an Ubuntu 12.04 Vagrant VM, please run - - $> vagrant destroy - -before starting the new 14.04 machine. From 18f59b6bfe73a4d41c0a13a639f20cbcf8f8eddf Mon Sep 17 00:00:00 2001 From: Silke Meyer Date: Sat, 19 Nov 2016 18:05:38 +0100 Subject: [PATCH 3/5] Vagrant: corrected hostnames --- util/vagrant_provision.sh | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/util/vagrant_provision.sh b/util/vagrant_provision.sh index f01f0f66a1..972082d0dc 100644 --- a/util/vagrant_provision.sh +++ b/util/vagrant_provision.sh @@ -32,9 +32,15 @@ sudo apt-get install -y apache2 sudo a2enmod rewrite actions ssl sudo cp /vagrant/util/vagrant_vhost.sh /usr/local/bin/vhost sudo chmod guo+x /usr/local/bin/vhost -sudo vhost -s 192.168.22.10.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica.dev -sudo a2dissite 000-default -sudo service apache2 restart +if [ $( lsb_release -c | cut -f 2 ) == "trusty" ]; then + sudo vhost -s 192.168.22.10.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica-trusty.dev + sudo a2dissite 000-default + sudo service apache2 restart +elif [ $( lsb_release -c | cut -f 2 ) == "xenial" ]; then + sudo vhost -s 192.168.22.11.xip.io -d /var/www -p /etc/ssl/xip.io -c xip.io -a friendica-xenial.dev + sudo a2dissite 000-default + sudo systemctl restart apache2 +fi #Install php if [ $( lsb_release -c | cut -f 2 ) == "trusty" ]; then @@ -77,7 +83,11 @@ fi #configure rudimentary mail server (local delivery only) #add Friendica accounts for local user accounts, use email address like vagrant@friendica.dev, read the email with 'mail'. -debconf-set-selections <<< "postfix postfix/mailname string friendica.dev" +if [ $( lsb_release -c | cut -f 2 ) == "trusty" ]; then + debconf-set-selections <<< "postfix postfix/mailname string friendica-trusty.dev" +elif [ $( lsb_release -c | cut -f 2 ) == "xenial" ]; then + debconf-set-selections <<< "postfix postfix/mailname string friendica-xenial.dev" +fi debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Local Only'" sudo apt-get install -y postfix mailutils libmailutils-dev sudo echo -e "friendica1: vagrant\nfriendica2: vagrant\nfriendica3: vagrant\nfriendica4: vagrant\nfriendica5: vagrant" >> /etc/aliases && sudo newaliases From 2308a7d33ed28714756bc500800b97d83111a9a2 Mon Sep 17 00:00:00 2001 From: Silke Meyer Date: Sun, 20 Nov 2016 15:32:17 +0100 Subject: [PATCH 4/5] Vagrant does not download addons by default --- util/vagrant_provision.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/vagrant_provision.sh b/util/vagrant_provision.sh index 972082d0dc..100764caba 100644 --- a/util/vagrant_provision.sh +++ b/util/vagrant_provision.sh @@ -110,4 +110,4 @@ sudo crontab friendicacron sudo rm friendicacron #Optional: checkout addon repositroy -sudo git clone https://github.com/friendica/friendica-addons.git /vagrant/addon +#sudo git clone https://github.com/friendica/friendica-addons.git /vagrant/addon From d0d746a3be7525d052d573fd50363e1881767e2f Mon Sep 17 00:00:00 2001 From: Silke Meyer Date: Sun, 20 Nov 2016 15:32:57 +0100 Subject: [PATCH 5/5] Switched to a vagrant box that works for Ubuntu Xenial --- Vagrantfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 129c90fb49..ff38151520 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -7,6 +7,7 @@ server_timezone = "UTC" public_folder = "/vagrant" Vagrant.configure(2) do |config| +###################################################################### # Set server to Ubuntu 14.04 config.vm.define "trusty" do |trusty| trusty.vm.box = "ubuntu/trusty64" @@ -23,14 +24,12 @@ Vagrant.configure(2) do |config| # Create a static IP trusty.vm.network :private_network, ip: server_ip_trusty - - # Share a folder between host and guest - trusty.vm.synced_folder "./", "/vagrant/", owner: "www-data", group: "vagrant" end +###################################################################### # Set server to Ubuntu 16.04 config.vm.define "xenial" do |xenial| - xenial.vm.box = "ubuntu/xenial64" + xenial.vm.box = "boxcutter/ubuntu1604" # Disable automatic box update checking. If you disable this, then # boxes will only be checked for updates when the user runs @@ -44,11 +43,12 @@ Vagrant.configure(2) do |config| # Create a static IP xenial.vm.network :private_network, ip: server_ip_xenial - - # Share a folder between host and guest - xenial.vm.synced_folder "./", "/vagrant/", owner: "www-data", group: "vagrant" end +###################################################################### + # Share a folder between host and guest + config.vm.synced_folder "./", "/vagrant/", owner: "www-data", group: "vagrant" + # Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options.