Browse Source

Add files to create a working Spip instance on an Ubuntu Vagrant virtual machine.

documentation
Fabien Basmaison 2 years ago
parent
commit
fcec69dba3
  1. 14
      .editorconfig
  2. 2
      .gitignore
  3. 43
      README.md
  4. 69
      Vagrantfile
  5. 1
      vagrant/apache-modules.cfg
  6. 7
      vagrant/apt-packages.cfg
  7. 56
      vagrant/root-os.sh
  8. 19
      vagrant/user-spip.sh

14
.editorconfig

@ -0,0 +1,14 @@
# editorconfig.org
root = true
[ * ]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = true
max_line_length = 100
[ *.md ]
trim_trailing_whitespace = false

2
.gitignore

@ -0,0 +1,2 @@
spip
.vagrant

43
README.md

@ -0,0 +1,43 @@
Ce dépôt permet de définir un environnement de développement pour [Spip](https://www.spip.net/).
Vous pouvez copier et coller les commandes suivantes dans votre terminal.
## Procédure
1. [Installer Virtualbox](https://www.virtualbox.org/wiki/Downloads) sur votre machine.
1. [Installer Vagrant](https://www.vagrantup.com/downloads.html) sur votre machine.
1. Cloner ce dépôt :
```sh
git clone git@github.com:arkhi/spip-testing --origin arkhi
```
1. Lancer la machine virtuelle :
```sh
vagrant up
```
S’il s’agit de la première fois que la machine est lancée, le « [provisioning](https://www.vagrantup.com/docs/provisioning/index.html) » paramètrera l’environnement automatiquement. C’est à dire que tous les logiciels nécessaires seront installés. Cette opération n’est nécessaire que la première fois, ou lorsque des changements interviennent au niveau des logiciels utilisés.
1. Vous pouvez [naviguer sur le site](http://192.168.50.4).
## Nota bene
### Mémoire de la machine virtuelle.
Selon la puissance de votre machine, vous pouvez attribuer plus ou moins de mémoire à la machine. Il suffit de modifier cette ligne dans /Vagrantfile : `vb.customize ["modifyvm", :id, "--memory", "512"]`
### Provisioning partiel
La première fois, tous les provisioners seront exécutés, mais afin de ne pas perdre son temps lors d’une mise à jour du système, il est possible de ne provisioner qu’une partie de la machine :
- `os`: Installe les packages natifs du système (Ubuntu).
- `spip`: Installe différentes configurations nécessaires aux applications.
- `clean`: Nettoie la machine virtuelle.
- `done`: Lance un script en fin de processus à chaque fois que la machine est lancée.
Par exemple, pour installer une nouvelle version de Spip, il suffit de lancer `vagrant provision --provision-with spip`.

69
Vagrantfile

@ -0,0 +1,69 @@
# Install the working environment based on fine grained provisioners.
Vagrant.configure("2") do |config|
config.vm.define "spip-testing"
config.vm.box = "bento/ubuntu-18.04"
config.vm.host_name = "localhost"
config.vm.hostname = "spip-testing"
config.ssh.forward_agent = true
config.vm.network "private_network", ip: "192.168.50.4"
config.vm.synced_folder "./", "/vagrant",
id: "vagrant-root",
owner: "vagrant",
group: "www-data",
mount_options: ["dmode=755", "fmode=644"],
nfs: false
config.vm.provider :virtualbox do |vb|
vb.name = "spip-testing"
vb.customize ["modifyvm", :id, "--memory", "512"]
end
# Provision with root user.
# ===========================================================================
config.vm.provision 'os',
type: :shell,
path: "vagrant/root-os.sh"
# Provision with vagrant user.
# ===========================================================================
config.vm.provision 'spip',
type: :shell,
privileged: false,
path: "vagrant/user-spip.sh"
# Finishing up
# ===========================================================================
# Clean the machine of unnecessary clutter.
config.vm.provision 'clean',
type: :shell,
inline: <<-SHELL
echo "
`date '+%H:%M'`: Cleaning up the machine…
========================================================================"
apt-get autoremove -y
apt-get autoclean -y
apt-get clean -y
SHELL
# Ding!
# And whatever one likes to happen at the end of every `vagrant up`.
config.vm.provision 'done',
type: :shell,
run: "always",
inline: <<-SHELL
echo -e "
`date '+%H:%M'`: Done! \a
You can access the box with http://192.168.50.4/.
NB: From time to time, it wouldn’t hurt to do a \\\`vagrant ssh\\\`,
then \\\`sudo apt upgrade\\\` to upgrade all
packages.
=========================================================================="
SHELL
end

1
vagrant/apache-modules.cfg

@ -0,0 +1 @@
rewrite

7
vagrant/apt-packages.cfg

@ -0,0 +1,7 @@
apache2
libapache2-mod-php
php
php-gd
php-sqlite3
php-xml
sqlite

56
vagrant/root-os.sh

@ -0,0 +1,56 @@
#! /bin/bash
#
# This file is about provisioning the OS, with the root user.
CONFIGS='/vagrant/vagrant'
APACHE_CONFIGS='/etc/apache2'
APACHE_SITES_PATH="$APACHE_CONFIGS/sites-available"
APACHE_MODULES=''
APT_PACKAGES=''
if [[ -s $CONFIGS/apache-modules.cfg ]]; then
APACHE_MODULES=$(cat $CONFIGS/apache-modules.cfg)
fi
if [[ -s $CONFIGS/apache-modules.cfg ]]; then
APT_PACKAGES=$(cat $CONFIGS/apt-packages.cfg)
fi
echo "
`date '+%H:%M'`: Bootstrapping…
=============================================================================="
echo "
`date '+%H:%M'`: Updating Ubuntu repositories…
=============================================================================="
apt-get update
## @todo Upgrade system environments in an non-interactive way.
# echo "
# `date '+%H:%M'`: Upgrading Ubuntu packages…
# =============================================================================="
# sudo apt upgrade -y
echo "
`date '+%H:%M'`: Installing needed packages…
=============================================================================="
apt-get install -y $(cat /vagrant/vagrant/apt-packages.cfg)
echo "
`date '+%H:%M'`: Updating Apache configuration…
=============================================================================="
sed -i s#/var/www/html#/vagrant/spip#g $APACHE_SITES_PATH/000-default.conf
sed -i s#/var/www#/vagrant/spip#g $APACHE_CONFIGS/apache2.conf
echo "
`date '+%H:%M'`: Enabling Apache modules…
=============================================================================="
sudo a2enmod $APACHE_MODULES
echo "
`date '+%H:%M'`: restarting Apache server…
=============================================================================="
sudo service apache2 restart

19
vagrant/user-spip.sh

@ -0,0 +1,19 @@
#! /bin/bash
cd /vagrant
echo "
`date '+%H:%M'`: Downloading spip from https://git.spip.net/SPIP/spip…
=============================================================================="
SPIP_ZIP_URL=https://git.spip.net/SPIP/spip/archive/spip-3.2.tar.gz;
curl --silent --show-error "$SPIP_ZIP_URL" \
| tar --extract --gzip --no-same-owner --overwrite;
echo "
`date '+%H:%M'`: Creating and giving rights to mandatory folders…
=============================================================================="
cd spip
mkdir -p IMG lib local plugins/auto tmp;
chmod -R 777 IMG lib local plugins/auto tmp;
cd -
Loading…
Cancel
Save