Pages : 1
#1 Le 20/03/2016, à 12:31
- vincentsan1
BigBlueButton + wordpress
Bonjour,
Un petit script pour installer BBB sous ubuntu 14.04 avec wordpress pour gérer les salles de conférences. Seul problème après reboot, les services BBB se lancent trop tôt, il faudrait modifier Shebang des scripts init.d en modifiant les valeurs de Required-Start... On peut aussi ajouter un sleep 200 dans la case des start...
Contournement :
sudo service bbb-red5 stop
pareil pour tous les autres services /etc/init.d/bbb-* et ensuite
sudo bbb-conf --start
le script :
if [ $USER != root ]
then
clear screen
whiptail --title "Avertissement" --msgbox "Merci d'exécuter ce programme avec sudo ou en root... L'installeur de BigBlueButton va se fermer." 20 80
exit 0
fi
grep 14.04 /etc/lsb-release
if [ "$?" != 0 ]
then
clear screen
whiptail --title "Avertissement" --msgbox "Merci d'exécuter ce programme sur Ubuntu 14.04 uniquement... L'installeur de BigBlueButton va se fermer." 20 80
exit 0
fi
function NetConfig () {
function EthQuest () {
function Quest1 () {
function testip () {
IP=$(whiptail --inputbox "Tapez l'adresse IPV4 que vous souhaitez assigner au serveur \
(au format xxx.xxx.xxx.xxx ou x représente un chiffre) :" 20 80 $(ifconfig| grep "inet adr"| grep -v 127.0.0.1|awk '{print $2}'|cut -d: -f2) 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
NetConfig
fi
}
testip
until [[ "$IP" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]]
do
testip
done
function Quest2 () {
function testmask () {
netmask=$(whiptail --inputbox "Tapez l'adresse du masque de sous reseau :" 20 80 $(ifconfig |grep Masque|grep Bcast|awk '{ print $4 }'|cut \-d: \-f2) 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
Quest1
fi
}
testmask
until [[ "$netmask" =~ ^((255|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]|0)\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]]
do
testmask
done
function Quest3 () {
function testdns () {
dns=$(whiptail --inputbox "Tapez l'adresse du serveur DNS primaire :" 20 80 $(grep nameserver /etc/resolv.conf|head \-n 1|awk '{ print $2 }' ) 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
Quest2
fi
}
testdns
until [[ "$dns" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]]
do
testdns
done
function Quest4 () {
function testdns2 () {
dns2=$(whiptail --inputbox "Tapez l'adresse du serveur DNS secondaire :" 20 80 $(grep nameserver /etc/resolv.conf|head -2|tail \-1|awk '{ print $2 }' ) 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
Quest3
fi
}
testdns2
until [[ "$dns2" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]]
do
testdns2
done
function Quest5 () {
function testgate () {
gateway=$(whiptail --inputbox "Tapez l'adresse de la passerelle :" 20 80 $(route -n|grep 0.0.0.0|awk '{print $2}'|head -n 1) 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
Quest4
fi
test -f /tmp/passerelle
if [ "$?" = "0" ]
then
rm /tmp/passerelle
fi
}
testgate
until [[ "$gateway" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]]
do
testgate
done
function Quest6 () {
function domaine_addr () {
domain=$(whiptail --inputbox "Tapez votre nom de domaine :" 20 80 $(grep domain /etc/resolv.conf|awk '{print $2}') 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
Quest5
fi
}
domaine_addr
until [[ "$domain" =~ [A-Za-z0-9.-]+\.[A-Za-z]{2,4}$ ]]
do
domaine_addr
done
function Quest7 () {
function hostname_addr () {
hostname=$(whiptail --inputbox "Tapez le nom de machine affecté à Wordpress" 20 80 conf 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
Quest6
fi
}
hostname_addr
until [[ "$hostname" =~ ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ ]]
do
hostname_addr
done
function Quest8 () {
function hostname_addr2 () {
hostname2=$(whiptail --inputbox "Tapez le nom de machine Affecté à BigBlueButton" 20 80 bbb 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
Quest7
fi
}
hostname_addr2
until [[ "$hostname2" =~ ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ ]]
do
hostname_addr2
done
function Quest9 () {
function pass_confirm () {
Root_pass=$(whiptail --passwordbox "Tapez ici le mot de passe de l'administrateur de mysql/mariadb :" --nocancel 20 80 3>&1 1>&2 2>&3)
Root_pass2=$(whiptail --passwordbox "Confirmez le mot de passe de l'administrateur de mysql/mariadb :" --nocancel 20 80 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
Quest8
fi
}
pass_confirm
while [ "${Root_pass}" != "${Root_pass2}" ]
do
whiptail --msgbox "Les mots de passe ne correspondent pas" 20 80
pass_confirm
done
function Quest10 () {
function pass_confirm2 () {
PassWP=$(whiptail --passwordbox "Créez ici le mot de passe de l'administrateur (wordpressuser) de la base de données wordpress :
Cet utilisateur sera utilisé plus tard dans la configuration de wordpress dans un navigateur WEB." --nocancel 20 80 3>&1 1>&2 2>&3)
PassWP2=$(whiptail --passwordbox "Confirmez le mot de passe de l'admin de la base de données wordpress :" 20 80 3>&1 1>&2 2>&3)
if [ "$?" = 1 ]
then
Quest9
fi
}
pass_confirm2
while [ "${PassWP}" != "${PassWP2}" ]
do
pass_confirm2
done
}
}
}
}
}
}
}
}
}
}
Quest1
Quest2
Quest3
Quest4
Quest5
Quest6
Quest7
Quest8
Quest9
Quest10
MyPubIP=$(wget -qO- whatismyip.org |grep -oE "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" |cut -d\> -f 2|cut -d\< -f 1)
whiptail --msgbox "Récapitulatif des modifications :
- Adresse IP de l'interface : $IP
- Masque de sous réseau : $netmask
- Passerelle : $gateway
- Serveur DNS 1 : $dns
- Serveur DNS 2 :$dns2
- Nom de machine Wordpress : $hostname
- Nom de domaine BigBlueButton : $domain
- FQDN : $hostname.$domain
- Adresse IP publique : $MyPubIP" 20 80
FinalQuest=$(whiptail --title "Confirmation" --yes-button "Suivant" --no-button "Recommencer" --yesno "Souhaitez-vous conserver les modifications" --nocancel 20 80 3>&1 1>&2 2>&3)
if [ "$?" = "1" ]
then
whiptail --title " AVERTISSEMENT" --msgbox "Nous avons détecté que vous n'avez pas procédé à la configuration de l'interface réseau, un assistant va vous aider à procéder à cette configuration. Une fois terminé, il vous faudra relancer ce script et éventuellement vous reconnecter si vous avez pris la main en SSH et que vous avez changé l'adresse IP du serveur." 20 80
EthQuest
fi
}
EthQuest
cat > /etc/network/interfaces << EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address $IP
netmask $netmask
gateway $gateway
dns-nameservers $dns $dns2
dns-search $domain
dns-domain $domain
EOF
cat > /etc/resolv.conf << EOF
search $domain
domain $domain
nameserver $dns
nameserver $dns2
EOF
cat > /etc/hosts << EOF
127.0.0.1 localhost
#127.0.1.1 $hostname.$domain $hostname # à utiliser si retour vers dhcp
$IP $hostname.$domain $hostname
$IP $hostname2.$domain $hostname2
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF
cat > /etc/mailname << EOF
$hostname.$domain
EOF
cat > /etc/hostname << EOF
$hostname
EOF
hostname $hostname
mkdir /usr/NetwConf
echo ${IP} > /usr/NetwConf/IP
echo ${hostname} > /usr/NetwConf/hostname
echo ${hostname2} > /usr/NetwConf/hostname2
echo ${domain} > /usr/NetwConf/domain
echo ${Root_pass} > /usr/NetwConf/Root_pass
echo ${PassWP} > /usr/NetwConf/PassWP
touch /usr/NetConfigOk
apt-get autoremove --purge -y isc-dhcp-client
whiptail --title " AVERTISSEMENT" --msgbox "Vous avez pas procédé à la configuration de l'interface réseau. Le script d'installation va certainement s'interrompre. Pour finir l'installation, il vous faudra relancer ce script et éventuellement vous reconnecter si vous avez pris la main en SSH et que vous avez changé l'adresse IP du serveur." 20 80
ifdown eth0 && ifup eth0 && source /root/.bashrc && exec bash && exit 0
}
test -f /usr/NetConfigOk
if [ "$?" = 1 ]
then
NetConfig
fi
IP=$(cat /usr/NetwConf/IP)
hostname=$(cat /usr/NetwConf/hostname)
hostname2=$(cat /usr/NetwConf/hostname2)
domain=$(cat /usr/NetwConf/domain)
Root_pass=$(cat /usr/NetwConf/Root_pass)
PassWP=$(cat /usr/NetwConf/PassWP)
echo "export DEBIAN_FRONTEND=noninteractive
sudo debconf-set-selections <<< 'mariadb-server mysql-server/root_password password ${Root_pass}'
sudo debconf-set-selections <<< 'mariadb-server mysql-server/root_password_again password ${Root_pass}'" > /tmp/mariadb
sudo bash /tmp/mariadb
rm /tmp/mariadb
sudo add-apt-repository ppa:libreoffice/libreoffice-4-4
wget http://ubuntu.bigbluebutton.org/bigbluebutton.asc -O- | sudo apt-key add -
echo "deb http://ubuntu.bigbluebutton.org/trusty-090/ bigbluebutton-trusty main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
sudo apt-get update && apt-get upgrade -y
cd /tmp
touch install-ffmpeg.sh
cat >> install-ffmpeg.sh << EOF
sudo apt-get install build-essential git-core checkinstall yasm texi2html libvorbis-dev libx11-dev libvpx-dev libxfixes-dev zlib1g-dev pkg-config netcat libncurses5-dev php5-curl sudo -y --force-yes
cd /usr/local/src
if [ ! -d "/usr/local/src/ffmpeg-2.3.3" ]; then
sudo wget "http://ffmpeg.org/releases/ffmpeg-2.3.3.tar.bz2"
sudo tar -xjf "ffmpeg-2.3.3.tar.bz2"
fi
cd "ffmpeg-2.3.3"
sudo ./configure --enable-version3 --enable-postproc --enable-libvorbis --enable-libvpx
sudo make
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:2.3.3" --backup=no --deldoc=yes --default
EOF
chmod +x install-ffmpeg.sh
./install-ffmpeg.sh
sudo apt-get install bigbluebutton php5-fpm php5-gd libssh2-php mariadb-server php5-mysql mariadb-client php5-curl software-properties-common build-essential git-core checkinstall yasm texi2html libvorbis-dev libx11-dev libvpx-dev libxfixes-dev zlib1g-dev pkg-config netcat libncurses5-dev -y --force-yes
cd /tmp
wget https://fr.wordpress.org/wordpress-4.4.2-fr_FR.tar.gz
tar xvzf wordpress-4.4.2-fr_FR.tar.gz
sudo mv wordpress /var/www/wordpress
## création de la base wordpress et de son user wordpress...
echo "
CREATE DATABASE wordpress;
CREATE USER wordpressuser@localhost IDENTIFIED BY '${PassWP}';
GRANT ALL PRIVILEGES ON wordpress.* TO wordpressuser@localhost;
FLUSH PRIVILEGES;
exit" > /tmp/sql.tmp
sudo mysql -u root -p${Root_pass} < /tmp/sql.tmp
rm /tmp/sql.tmp
cd /var/www/wordpress
sudo cp wp-config-sample.php wp-config.php
sudo mkdir wp-content/uploads
sudo chown -R www-data:www-data /var/www/wordpress
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/wordpress
sudo sed -i "s|/usr/share/nginx/html|/var/www/wordpress|" /etc/nginx/sites-available/wordpress
sudo sed -i "s|127.0.1.1|${hostame}.${domain}|" /etc/nginx/sites-available/wordpress
sudo sed -i "s|127.0.1.1|${hostame2}.${domain}|" /etc/nginx/sites-available/bigbluebutton
sudo sed -i "s|server_name localhost|server_name ${hostame}.${domain}|" /etc/nginx/sites-available/wordpress
sudo sed -i "s|server_name localhost|server_name ${hostame2}.${domain}|" /etc/nginx/sites-available/bigbluebutton
sudo sed -i "s|index index.html index.htm|index index.php index.html index.htm|" /etc/nginx/sites-available/wordpress
#sudo sed -i "s|server_name localhost|server_name $(hostname -i)|" /etc/nginx/sites-available/wordpress
sudo sed -i "s|try_files \$uri \$uri/ =404|try_files \$uri \$uri/ /index.php?q=\$uri\&\$args|" /etc/nginx/sites-available/wordpress
sudo sed -i "54ilocation ~ \.php\$ {" /etc/nginx/sites-available/wordpress
sudo sed -i "55ifastcgi_split_path_info ^(.+\\\.php)(/.+)\$;" /etc/nginx/sites-available/wordpress
sudo sed -i "56ifastcgi_pass unix:/var/run/php5-fpm.sock;" /etc/nginx/sites-available/wordpress
sudo sed -i "57ifastcgi_index index.php;" /etc/nginx/sites-available/wordpress
sudo sed -i "58iinclude fastcgi_params;" /etc/nginx/sites-available/wordpress
sudo sed -i "59i}" /etc/nginx/sites-available/wordpress
sudo sed -i "s|bigbluebutton.web.serverURL=http://${IP}|bigbluebutton.web.serverURL=http://${hostname2}.${domain}|" /var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
#sudo rm /etc/nginx/sites-enabled/bigbluebutton
sudo sed -i "s|votre_nom_de_bdd|wordpress|" /var/www/wordpress/wp-config.php
sudo sed -i "s|votre_utilisateur_de_bdd|wordpressuser|" /var/www/wordpress/wp-config.php
sudo sed -i "s|votre_mdp_de_bdd|${PassWP}|" /var/www/wordpress/wp-config.php
sudo service nginx restart
sudo service php5-fpm restart
sudo bbb-conf --setip ${hostname2}.${domain} && sudo bbb-conf --enablewebrtc && sudo bbb-conf --clean && sudo bbb-conf --check && rm -rf /usr/NetwConf && exit 0
L'install se fait en 2 fois, d'abord le paramétrage de la carte réseau et ensuite l'install du soft.
Le code n'est pas parfait mais l'install fonctionne pour moi, si ça intéresse quelqu'un tant mieux.
Il faut prévoir une machine costaude pour BBB, la vidéo ça pompe, au minimum 4 Go de Ram mais 8 ou 16 sont conseillés, et un processeur qui dépote avec au moins 4 coeurs à + de 3Ghtz. Les accès disques ne sont pas énormes mais si vous enregistrez les conf il faut prévoir de la place !
Une fois l'install terminée on se logue sous wordpress, on install le plugin bigbluebutton on ajoute le Salt et on indique le FQDN attribué à BBB (un pour wordpress, un pour BBB) ==> par défaut conf.mondomaine.lan et bbb.mondomaine.lan).
A+
Hors ligne
Pages : 1