Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/03/2016, à 13: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