setup.sh 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. #!/bin/bash
  2. ## Import .env file
  3. source .env
  4. ##Install docker adnd docker-compose
  5. if [ -f /usr/bin/docker ]
  6. then
  7. echo 'Docker Exist'
  8. else
  9. apt update && apt upgrade -y
  10. apt-get install -y apt-transport-https ca-certificates curl software-properties-common
  11. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
  12. add-apt-repository "deb https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
  13. apt-get update && apt-get install -y docker-ce=$(apt-cache madison docker-ce | grep 18.06 | head -1 | awk '{print $3}')
  14. fi
  15. if [ -f /usr/local/bin/docker-compose ]
  16. then
  17. echo 'Docker Compose Exist'
  18. else
  19. curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  20. chmod +x /usr/local/bin/docker-compose
  21. fi
  22. if [ -f /usr/local/bin/memcache-top ]
  23. then
  24. echo 'Memcached-top Exist'
  25. else
  26. curl -o /usr/local/bin/memcache-top https://raw.githubusercontent.com/eculver/memcache-top/master/memcache-top
  27. chmod a+x /usr/local/bin/memcache-top
  28. fi
  29. ## Clone Barecode
  30. cd /opt
  31. dir=back
  32. if [ -d $dir ]; then
  33. cd $dir
  34. git pull https://$GIT_USER:$GIT_PASS@gogs.earthsquad.global/olarid7852/barcode_backend
  35. cd /opt
  36. else
  37. git clone https://$GIT_USER:$GIT_PASS@gogs.earthsquad.global/olarid7852/barcode_backend back
  38. cd /opt
  39. fi
  40. cp /opt/back/requirements.txt /opt/barcode-docker/docker-back/requirements.txt
  41. ## Clone Frontend
  42. cd /opt
  43. dir=front
  44. if [ -d $dir ]; then
  45. cd $dir
  46. git pull https://$GIT_USER:$GIT_PASS@gogs.earthsquad.global/olarid7852/barcode_frontend
  47. docker run -ti --rm -v "$PWD":/srv -w /srv node:8 npm install
  48. cd /opt
  49. else
  50. git clone https://$GIT_USER:$GIT_PASS@gogs.earthsquad.global/olarid7852/barcode_frontend front
  51. cd $dir
  52. docker run -ti --rm -v "$PWD":/srv -w /srv node:8 npm install
  53. cd /opt
  54. fi
  55. # Edit frontend configration
  56. touch /opt/front/src/.config.js
  57. cat << EOF > /opt/front/src/.config.js
  58. var apiHostname = 'http://$IP_ADDR:8000/api/'
  59. var SCAN_INTERVAL = 800
  60. export {
  61. apiHostname,
  62. SCAN_INTERVAL
  63. }
  64. EOF
  65. ## Edit backend configutaion
  66. cat << EOF > /opt/back/barcode/local.py
  67. import os
  68. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  69. # for mysql
  70. DATABASES = {
  71. 'default': {
  72. 'ENGINE': 'django.db.backends.mysql',
  73. 'NAME': 'backend_dev',
  74. 'USER': 'backend',
  75. 'PASSWORD': '$ADMIN_PASS',
  76. 'HOST': 'mysql',
  77. 'PORT': '3306',
  78. }
  79. }
  80. ALLOWED_HOSTS = [
  81. '*',
  82. ]
  83. BROKER_URL = "amqp://$ADMIN_USER:$ADMIN_PASS@rabbit:5672/barcode"
  84. CACHES = {
  85. 'default': {
  86. 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
  87. 'LOCATION': 'memcached:11211',
  88. }
  89. }
  90. EOF
  91. ## Build and start docker images
  92. cd /opt/barcode-docker
  93. docker-compose up -d --build --no-recreate
  94. sleep 20
  95. docker exec -i barcode-back bash -c 'python manage.py makemigrations'
  96. docker exec -i barcode-back bash -c 'python manage.py migrate'
  97. ADMIN=`docker exec -i barcode-mysql mysql -uroot -pgW3KSoZt5K5o9V99YJUH backend_dev -e "SELECT * FROM auth_user;" | grep "admin"`
  98. if [ -z "$ADMIN" ]
  99. then
  100. docker exec -ti barcode-back ./manage.py shell -c "from django.contrib.auth.models import User; User.objects.create_superuser('$ADMIN_USER', 'admin@earthsquad.global', '$ADMIN_PASS')"
  101. else
  102. echo "User Admin Exist"
  103. fi
  104. ENUS=`docker exec -ti barcode-mysql mysql -uroot -pgW3KSoZt5K5o9V99YJUH backend_dev -e "SELECT * FROM language_language;" | grep "EN-US"`
  105. if [ -z "$ENUS" ]
  106. then
  107. cat << "EOF" > /tmp/insert.sql
  108. INSERT INTO `language_lengthunit` (`id`, `name`, `conversion_rate`) VALUES
  109. (1, 'M', 100),
  110. (2, 'cm', 1);
  111. INSERT INTO `language_weightunit` (`id`, `name`, `conversion_rate`) VALUES
  112. (1, 'KG', 1000),
  113. (2, 'g', 1);
  114. INSERT INTO `language_language` (`id`, `name`, `length_unit_id`, `weight_unit_id`) VALUES
  115. (1, 'EN-US', 1, 1),
  116. (2, 'DE-DE', 1, 1);
  117. EOF
  118. docker exec -i barcode-mysql mysql --user=backend --password=$ADMIN_PASS backend_dev < /tmp/insert.sql
  119. cat << "EOF" > /tmp/insert.sql
  120. INSERT INTO `scanapp_producttype` (`id`, `is_packaging_material`, `icon`, `deleted`, `name`) VALUES
  121. (1, 0, 'icon_metal', 0, 'Product Types'),
  122. (2, 1, 'icon_glass', 0, 'Recycling Materials'),
  123. (3, 1, 'icon_metall', 0, 'Aluminium'),
  124. (4, 1, 'biod', 0, 'Biodegradable'),
  125. (5, 1, 'paper', 0, 'Paper and Cardboard'),
  126. (6, 1, 'icon_div', 0, 'E-Waste'),
  127. (7, 1, 'icon_battery', 0, 'Batteries'),
  128. (8, 1, 'plastic', 0, 'Plastic'),
  129. (9, 1, 'PET', 0, 'PET-Plastic'),
  130. (12, 1, 'icon_metal', 0, 'Metal'),
  131. (13, 1, 'Wood', 0, 'Wood'),
  132. (14, 1, 'Tires', 0, 'Tires'),
  133. (15, 1, 'glass', 0, 'Glass'),
  134. (17, 1, 'nores-plastic', 0, 'Waste (non-recyclable)');
  135. INSERT INTO `scanapp_producttypehier` (`id`, `child_id`, `parent_id`) VALUES
  136. (1, 3, 12),
  137. (2, 7, 6),
  138. (3, 9, 8),
  139. (4, 12, 2),
  140. (5, 4, 2),
  141. (6, 5, 2),
  142. (7, 6, 2),
  143. (8, 8, 2),
  144. (9, 14, 2),
  145. (10, 13, 4),
  146. (11, 15, 2),
  147. (12, 17, 2);
  148. INSERT INTO `scanapp_producttypetranslation` (`id`, `translation`, `language_id`, `word_id_id`) VALUES
  149. (1, 'Products', 1, 1),
  150. (2, 'Produkte', 2, 1),
  151. (3, 'Recycling Materials', 1, 2),
  152. (4, 'Recycling Material', 2, 2),
  153. (5, 'Aluminium', 1, 3),
  154. (6, 'Aluminium', 2, 3),
  155. (7, 'Biodegradable', 1, 4),
  156. (8, 'Bio-Abfall', 2, 4),
  157. (9, 'Paper and Cardboard', 1, 5),
  158. (10, 'Papier und Karton', 2, 5),
  159. (11, 'E-Waste', 1, 6),
  160. (12, 'Elektroschrott', 2, 6),
  161. (13, 'Batteries', 1, 7),
  162. (14, 'Batterien', 2, 7),
  163. (15, 'Plastic', 1, 8),
  164. (16, 'Plastik', 2, 8),
  165. (17, 'PET-Plastic', 1, 9),
  166. (18, 'PET-Plastik', 2, 9),
  167. (21, 'Metall', 2, 12),
  168. (22, 'Metal', 1, 12),
  169. (23, 'Wood', 1, 13),
  170. (24, 'Holz', 2, 13),
  171. (25, 'Reifen', 2, 14),
  172. (26, 'Tires', 1, 14),
  173. (27, 'Glass', 1, 15),
  174. (28, 'Glas', 2, 15),
  175. (29, 'Waste (non-recyclable)', 1, 17),
  176. (30, 'Restmüll (nicht recyclebar)', 2, 17);
  177. EOF
  178. docker exec -i barcode-mysql mysql --user=backend --password=$ADMIN_PASS backend_dev < /tmp/insert.sql
  179. docker exec -i barcode-back bash -c 'python manage.py fillenglish'
  180. else
  181. echo "Language table are exist "
  182. fi
  183. docker exec -i barcode-back bash -c 'python manage.py populate_statistics_index'
  184. docker exec -i barcode-back bash -c 'python manage.py populate_statistics_index_all_user'
  185. docker exec -i barcode-back bash -c 'python manage.py collectstatic --no-input'
  186. cd /opt/barcode-docker
  187. docker-compose restart
  188. echo -e "==================================== You can direct navigate your browser. =========================================="
  189. echo -e "====================================================================================================================="
  190. echo -e "Backend ---> http://$IP_ADDR:8000/api/admin/ ---> Username=$ADMIN_USER Password=$ADMIN_PASS
  191. Frontend ---> http://$IP_ADDR:8080/ ---> Username=$ADMIN_USER Password=$ADMIN_PASS
  192. Mysql-admin ---> http://$IP_ADDR:5000/ ---> Username=backend Password=$ADMIN_PASS
  193. Celery-Flower ---> http://$IP_ADDR:5555/"
  194. echo -e "====================================================================================================================="