mirror of
				https://github.com/yweber/lodel2.git
				synced 2025-10-31 19:49:02 +01:00 
			
		
		
		
	
				
				No description
				
			
		| debian | ||
| doc/img | ||
| examples | ||
| globconf.d | ||
| lodel | ||
| lodelsites | ||
| m4 | ||
| progs | ||
| scripts | ||
| tests | ||
| .gitignore | ||
| AUTHORS | ||
| bootstrap.sh | ||
| ChangeLog | ||
| configure.ac | ||
| COPYING | ||
| Doxyfile | ||
| em_test.py | ||
| INSTALL | ||
| Makefile.am | ||
| NEWS | ||
| README | ||
| requirements.txt | ||
| runtest.sh | ||
Dependencies :
==============
	lodel2 components :
	-------------------
		core :
			python3 python3-lxml
		build dependencies :
			autoconf automake make
		webui plugin :
			python3-jinja2 python3-werkzeug uwsgi-plugin-python3
		mongodb_datasource plugin :
			python3-pymongo
	lodel2 utils :
	--------------
		mass_deploy dependencies :
			pwgen wamerican mongodb-clients
Build & install :
=================
	./bootstrap.sh #generate the configure, refresh the Makefile.in files
	#--prefix=/usr is mandatory on debian because of a python3.4.2 bug
	./configure --sysconfdir=/etc --localstatedir=/var --prefix=/usr
	#build lodel2 (actually substitute paths script and buildconf.py files)
	make
	#Install lodel2 on system
	make install
	#Uninstall lodel2
	make uninstall
Creating debian package :
=========================
	make deb
Other make targets :
====================
	Doxygen documentation generation :
	----------------------------------
		make doxygen
	Run unit tests :
	----------------
		make check
		#or
		make unittest
	
	Cleaning to stop being annoyed when running git status :
	--------------------------------------------------------
		
		make gitclean
Lodel2 instance management utilities :
======================================
NOTE: You have to run in root to use this below
	SLIM : Simple Lodel Instance Manager
	------------------------------------
		- create a new instance named foo :
			slim -n foo -c
		- list instances : 
			slim -l
		- list instances with details :
			slim -lv[v[v]]
		- list instances with output formated for bash processing :
			slim -l -b [-v[v[v]]
		- run make all for instance foo :
			slim -n foo -m
		- run make for all existing instances :
			slim --all -m
		- start an instance in forground
			slim -n foo --start -f
		- start all instances :
			slim -a --start
		- generate a nginx conf for all instances :
			slim -a --nginx-conf
		- get some help for more options & actions :
			slim -h
	mass_deploy.sh :
	----------------
		Use for easy mass deployment of instances with webui & uwsgi
		the script at $prefix/share/lodel2/scripts/mass_deploy.sh
		Usage : 
		-------
			#with N the number of instances to deploy
			mass_deploy.sh N 		
		Notes :
		-------
		- configuration can be found in /etc/lodel2/mass_deploy.cfg 
		  to indicate mongodb admin credentials
		- mass deploy create instances directories 
		  in /tmp/lodel2_instances
Mass deployments tricks & tips:
===============================
	Mass deployment on fresh install :
	----------------------------------
	
	#Install nginx & mongodb
	apt-get install nginx mongodb-server mongodb-clients
	#choose your credential
	export mongoadmin="admin"; export mongopass="pass";
	#Disable auth to be able to connect to mongodb
	sed -ie 's/^#noauth = /noauth = /' /etc/mongodb.conf
	#Add an admin user to mongodb
	echo -e "use admin\ndb.addUser('$mongoadmin', '$mongopass')\nexit\n"|mongo
	#Reactivate auth
	sed -i -e 's/^noauth = /#noauth =/' -e 's/^#auth = /auth =/' /etc/mongodb.conf
	#Test connection
	echo "exit" | mongo --quiet -u $mongoadmin -p $mongopass admin && echo "Connection ok" || echo "connection fails"
	#Indicate mongodb credentials to mass_deploy
	echo -e "MONGODB_ADMIN_USER='$mongoadmin'\nMONGODB_ADMIN_PASSWORD='$mongopass'\n" >> /etc/lodel2/mass_deploy.cfg
	#Deploying 50 instances
	NINSTANCE=50
	#Running mass_deploy
	/usr/share/lodel2/scripts/mass_deploy $NINSTANCE
	#Updating nginx conf (delete /etc/nginx/sites-enabled/default if exists)
	slim --nginx-conf -a > /etc/nginx/sites-enabled/lodel2
	/etc/init.d/nginx reload
	#Start all instances and check if they managed to start
	slim --start -a && sleep 2 && slim -l
	Cleaning mongodb + instances :
	------------------------------
	slim --purge && /usr/share/lodel2/scripts/mass_deploy purgedb ; slim -l
	Debuging an instance in foreground (if it didn't manage to start) :
	-------------------------------------------------------------------
	slim --start -f -n INSTANCE_NAME
Instance operations :
=====================
	- Two utils are available for instances operations :
		* Make for op without parameters
		* lodel_admin.py for op with parameters
	- Makefile available target :
		# Leapi dynamic code creation ( in leapi_dyncode.py in lodel2 
		#instance root dir)
		make dyncode 
		# Call migration handlers to tell them to init all needed 
		#databases. (note : this target has dyncode as dependencie)
		make init_db 
		make list_hooks # List all the hooks registered
	- lodel_admin.py : see lodel_admin.py -h
##########################################
# Following informations can be obsolete #
##########################################
Dynamic code generation :
	python3 scripts/refreshdyn.py examples/em_test.pickle OUTPUTFILE.py
Instance creation :
	Use the script in scripts/create_instance.sh
	Usage : scripts/create_instance.sh instance_name instance_dir [lodel_libdir]
Instance loader uppdate :
	If the install/loader.py is updated you can update instance's loader.py using
		scripts/create_instance.sh -u INSTANCE_PATH
			
		