From 09f4fe6021460092969b39304dc055b5d0fd47fb Mon Sep 17 00:00:00 2001 From: George Hunt Date: Thu, 17 May 2018 21:36:50 +0000 Subject: [PATCH 01/12] start work --- roles/sugarizer/defaults/main.yml | 2 +- roles/sugarizer/tasks/main.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/roles/sugarizer/defaults/main.yml b/roles/sugarizer/defaults/main.yml index 062845723..c792e0933 100644 --- a/roles/sugarizer/defaults/main.yml +++ b/roles/sugarizer/defaults/main.yml @@ -1,5 +1,5 @@ sugarizer_install: True sugarizer_enabled: False sugarizer_location: '{{ doc_root }}' -sugarizer_version: 'sugarizer-0.9' +sugarizer_version: 'sugarizer-1.0' npm_exists: False diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index 9b9cb3f31..13c1f6c40 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -54,11 +54,12 @@ stat: path: "{{ sugarizer_location }}/sugarizer/server/node_modules" register: npm + ignore_errors: true - name: Set a flag to abort second attempt to install set_fact: npm_exists: True - when: npm.stat.exists is defined and npm.stat.exists + when: npm.stat is defined and npm.stat.exists - name: Create systemd files and copy our ini file template: From 2c4d81ff762f080dca23349c8a5d77668616f6e0 Mon Sep 17 00:00:00 2001 From: George Hunt Date: Thu, 17 May 2018 22:23:44 +0000 Subject: [PATCH 02/12] got through runrole --- roles/sugarizer/defaults/main.yml | 1 + roles/sugarizer/tasks/main.yml | 31 +++++++++++++++++++++---- roles/sugarizer/templates/sugarizer.ini | 22 +++++++++++++++--- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/roles/sugarizer/defaults/main.yml b/roles/sugarizer/defaults/main.yml index c792e0933..3ad4b80a8 100644 --- a/roles/sugarizer/defaults/main.yml +++ b/roles/sugarizer/defaults/main.yml @@ -2,4 +2,5 @@ sugarizer_install: True sugarizer_enabled: False sugarizer_location: '{{ doc_root }}' sugarizer_version: 'sugarizer-1.0' +sugarizer_server_version: 'sugarizer-server-1.0' npm_exists: False diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index 13c1f6c40..31c77535d 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -13,12 +13,35 @@ # command: tar xzf {{ downloads_dir }}/{{ sugarizer_version }}.tar.gz -C {{ sugarizer_location }} # creates="{{ sugarizer_location }}/{{ sugarizer_version }}/index.html" +- name: Download latest stable Server from location we control + get_url: + url: "{{ iiab_download_url }}/{{ sugarizer_server_version }}.tar.gz" + dest: "{{ downloads_dir }}/{{ sugarizer_server_version }}.tar.gz" + timeout: "{{ download_timeout }}" + when: internet_available + +- name: Untar to /library/www/html/{{ sugarizer_version }} + unarchive: + src: "{{ downloads_dir }}/{{ sugarizer_version }}.tar.gz" + dest: "{{ sugarizer_location }}" + creates: "{{ sugarizer_location }}/{{ sugarizer_version }}/index.html" - name: Create symbolic link /library/www/html/sugarizer file: src: "{{ sugarizer_location }}/{{ sugarizer_version }}" dest: "{{ sugarizer_location }}/sugarizer" state: link +- name: Untar to /library/www/html/{{ sugarizer_server_version }} + unarchive: + src: "{{ downloads_dir }}/{{ sugarizer_server_version }}.tar.gz" + dest: "{{ sugarizer_location }}" + creates: "{{ sugarizer_location }}/{{ sugarizer_server_version }}/index.html" +- name: Create symbolic link /library/www/html/sugarizer + file: + src: "{{ sugarizer_location }}/{{ sugarizer_server_version }}" + dest: "{{ sugarizer_location }}/sugarizer-server" + state: link + - name: Set up Node.js 6.x apt sources (debuntu) shell: curl -sL https://deb.nodesource.com/setup_6.x | bash - when: internet_available and is_debuntu and not is_ubuntu_18 @@ -52,7 +75,7 @@ # attempting to reinstall npm is broken on Raspbian 9 - name: Check for Sugarizer already installed stat: - path: "{{ sugarizer_location }}/sugarizer/server/node_modules" + path: "{{ sugarizer_location }}/{{ sugarizer_server_version }}/node_modules" register: npm ignore_errors: true @@ -70,7 +93,7 @@ mode: 0644 with_items: - { src: 'sugarizer.service.j2' , dest: '/etc/systemd/system/sugarizer.service'} - - { src: 'sugarizer.ini' , dest: '{{ sugarizer_location }}/sugarizer/server' } + - { src: 'sugarizer.ini' , dest: '{{ sugarizer_location }}/{{ sugarizer_server_version }}/env/sugarizer.ini' } # - { src: 'sugarizer.conf' , dest: '/etc/apache2/sites-available' } #- name: Create the symlink enabling the rewrite @@ -81,8 +104,8 @@ - name: Create the express framework for Node.js (OS's other than Fedora 18) shell: npm install args: - chdir: "{{ sugarizer_location }}/sugarizer/server" - creates: "{{ sugarizer_location }}/sugarizer/server/node_modules" + chdir: "{{ sugarizer_location }}/{{ sugarizer_server_version }}" + creates: "{{ sugarizer_location }}/{{ sugarizer_server_version }}/server/node_modules" when: not is_F18 and not npm_exists - name: Create the express framework for Node.js (Fedora 18) diff --git a/roles/sugarizer/templates/sugarizer.ini b/roles/sugarizer/templates/sugarizer.ini index 5ab515000..44024ee3b 100644 --- a/roles/sugarizer/templates/sugarizer.ini +++ b/roles/sugarizer/templates/sugarizer.ini @@ -1,8 +1,21 @@ -; Sugarizer configuration file +[information] +name = Sugarizer Server +description = Your Sugarizer Server [web] port = 8089 +[security] +min_password_size = 4 +max_age = 172800000 +https = false +certificate_file = ../server.crt +key_file = ../server.key +strict_ssl = false + +[client] +path = ../sugarizer/ + [database] server = localhost port = 27018 @@ -11,13 +24,16 @@ name = sugarizer [presence] port = 8039 +[statistics] +active = true + [collections] users = users journal = journal +stats = stats [activities] activities_directory_name = activities -activities_path = ../activities template_directory_name = ActivityTemplate activity_info_path = activity/activity.info -favorites = org.sugarlabs.GearsActivity,org.sugarlabs.MazeWebActivity,org.olpcfrance.PaintActivity,org.olpcfrance.TamTamMicro,org.olpcfrance.MemorizeActivity,org.olpg-france.physicsjs,org.sugarlabs.CalculateActivity,org.sugarlabs.TurtleBlocksJS,org.sugarlabs.Clock,,org.olpcfrance.RecordActivity,org.olpcfrance.Abecedarium,org.olpcfrance.KAView,org.olpcfrance.FoodChain,org.olpc-france.labyrinthjs,org.olpcfrance.TankOp,org.sugarlabs.ChatPrototype,org.olpcfrance.Gridpaint,org.olpc-france.LOLActivity,org.sugarlabs.StopwatchActivity,org.sugarlabs.GTDActivity,org.sugarlabs.Markdown,org.laptop.WelcomeWebActivity +favorites = org.sugarlabs.GearsActivity,org.sugarlabs.MazeWebActivity,org.olpcfrance.PaintActivity,org.olpcfrance.TamTamMicro,org.olpcfrance.MemorizeActivity,org.olpg-france.physicsjs,org.sugarlabs.CalculateActivity,org.sugarlabs.TurtleBlocksJS,org.sugarlabs.Clock,org.sugarlabs.SpeakActivity,org.sugarlabs.moon,org.olpcfrance.RecordActivity,org.olpcfrance.Abecedarium,org.olpcfrance.videoviewer,org.olpcfrance.FoodChain,org.olpc-france.labyrinthjs,org.olpcfrance.TankOp,org.sugarlabs.ChatPrototype,org.olpcfrance.Gridpaint,org.olpc-france.LOLActivity,org.olpcfrance.sharednotes,org.sugarlabs.ColorMyWorldActivity,com.homegrownapps.xoeditor,com.homegrownapps.reflection,com.homegrownapps.abacus,org.sugarlabs.Blockrain,org.sugarlabs.StopwatchActivity,com.homegrownapps.flip,org.somosazucar.JappyActivity,org.olpcfrance.qrcode,org.sugarlabs.Markdown,org.sugarlabs.gameOfLife,org.sugarlabs.Scratch,org.sugarlabs.FotoToonJs From 732547b9e7ea77799966356ce533c049e608d553 Mon Sep 17 00:00:00 2001 From: George Hunt Date: Fri, 18 May 2018 22:35:09 +0000 Subject: [PATCH 03/12] softcode sugarizer port, open iptables if services_externally_visible --- roles/0-init/tasks/main.yml | 10 +++++----- roles/network/templates/gateway/iiab-gen-iptables | 2 ++ roles/sugarizer/defaults/main.yml | 1 + roles/sugarizer/tasks/main.yml | 10 +++++----- roles/sugarizer/templates/sugarizer.conf | 4 ++-- roles/sugarizer/templates/sugarizer.ini | 2 +- 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/roles/0-init/tasks/main.yml b/roles/0-init/tasks/main.yml index c731a6a6a..66730837e 100644 --- a/roles/0-init/tasks/main.yml +++ b/roles/0-init/tasks/main.yml @@ -102,11 +102,11 @@ # when: elgg_enabled or rachel_enabled or owncloud_enabled or phpmyadmin_enabled or wordpress_enabled or iiab_menu_install # Commenting out MongoDB on a trial basis, for a more basic/lightweight Sugarizer, per https://github.com/iiab/iiab/pull/427 -# - name: Turn on mongodb if sugarizer enabled -# set_fact: -# mongodb_install: True -# mongodb_enabled: True -# when: sugarizer_enabled +- name: Turn on mongodb if sugarizer enabled + set_fact: + mongodb_install: True + mongodb_enabled: True + when: sugarizer_enabled # There might be other db's - name: Turn on PostgreSQL if Moodle or Pathagar enabled diff --git a/roles/network/templates/gateway/iiab-gen-iptables b/roles/network/templates/gateway/iiab-gen-iptables index 284db36ef..7ec8f3bf0 100755 --- a/roles/network/templates/gateway/iiab-gen-iptables +++ b/roles/network/templates/gateway/iiab-gen-iptables @@ -57,6 +57,7 @@ services_externally_visible={{ services_externally_visible }} calibre_port={{ calibre_port }} kiwix_port={{ kiwix_port }} kalite_server_port={{ kalite_server_port }} +sugarizer_port={{ sugarizer_port }} block_DNS={{ block_DNS }} captive_portal_enabled={{ captive_portal_enabled }} @@ -89,6 +90,7 @@ if [ "$services_externally_visible" == "True" ]; then $IPTABLES -A INPUT -p tcp --dport $kiwix_port -m state --state NEW -i $wan -j ACCEPT $IPTABLES -A INPUT -p tcp --dport $kalite_server_port -m state --state NEW -i $wan -j ACCEPT $IPTABLES -A INPUT -p tcp --dport $calibre_port -m state --state NEW -i $wan -j ACCEPT + $IPTABLES -A INPUT -p tcp --dport $sugarizer_port -m state --state NEW -i $wan -j ACCEPT fi if [ "$iiab_gateway_enabled" == "True" ]; then diff --git a/roles/sugarizer/defaults/main.yml b/roles/sugarizer/defaults/main.yml index 3ad4b80a8..18349676b 100644 --- a/roles/sugarizer/defaults/main.yml +++ b/roles/sugarizer/defaults/main.yml @@ -1,6 +1,7 @@ sugarizer_install: True sugarizer_enabled: False sugarizer_location: '{{ doc_root }}' +sugarizer_port: 8089 sugarizer_version: 'sugarizer-1.0' sugarizer_server_version: 'sugarizer-server-1.0' npm_exists: False diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index 31c77535d..44c59ff52 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -94,12 +94,12 @@ with_items: - { src: 'sugarizer.service.j2' , dest: '/etc/systemd/system/sugarizer.service'} - { src: 'sugarizer.ini' , dest: '{{ sugarizer_location }}/{{ sugarizer_server_version }}/env/sugarizer.ini' } -# - { src: 'sugarizer.conf' , dest: '/etc/apache2/sites-available' } + - { src: 'sugarizer.conf' , dest: '/etc/apache2/sites-available' } -#- name: Create the symlink enabling the rewrite -# file: src=/etc/apache2/sites-available/sugarizer.conf -# dest=/etc/apache2/sites-enabled/sugarizer.conf -# state=link +- name: Create the symlink enabling the rewrite + file: src=/etc/apache2/sites-available/sugarizer.conf + dest=/etc/apache2/sites-enabled/sugarizer.conf + state=link - name: Create the express framework for Node.js (OS's other than Fedora 18) shell: npm install diff --git a/roles/sugarizer/templates/sugarizer.conf b/roles/sugarizer/templates/sugarizer.conf index 780491144..19bb98363 100644 --- a/roles/sugarizer/templates/sugarizer.conf +++ b/roles/sugarizer/templates/sugarizer.conf @@ -1,3 +1,3 @@ -RewriteRule ^/sugarizer(.*)$ http://localhost:8089/sugarizer$1 [P,L] -ProxyPassReverse /sugarizer http://localhost:8010/sugarizer +RewriteRule ^/sugarizer(.*)$ http://localhost:{{ sugaarizer_port }}/sugarizer$1 [P,L] +ProxyPassReverse /sugarizer http://localhost:{{ sugarizer_port }}/sugarizer ProxyRequests Off diff --git a/roles/sugarizer/templates/sugarizer.ini b/roles/sugarizer/templates/sugarizer.ini index 44024ee3b..afcd97d19 100644 --- a/roles/sugarizer/templates/sugarizer.ini +++ b/roles/sugarizer/templates/sugarizer.ini @@ -3,7 +3,7 @@ name = Sugarizer Server description = Your Sugarizer Server [web] -port = 8089 +port = {{ sugarizer_port }} [security] min_password_size = 4 From e0309cd5d4cc9656b7c49cb3275ff4be2c74c17c Mon Sep 17 00:00:00 2001 From: George Hunt Date: Mon, 21 May 2018 23:28:21 +0000 Subject: [PATCH 04/12] tweaks to get mongodb autotarting --- roles/mongodb/tasks/main.yml | 18 +----------------- roles/mongodb/templates/mongod.conf | 6 +++--- roles/mongodb/templates/mongodb | 1 - roles/mongodb/templates/mongodb.service | 2 +- roles/mongodb/templates/mongodb~HEAD | 1 - roles/sugarizer/defaults/main.yml | 3 +-- roles/sugarizer/meta/main.yml | 2 +- roles/sugarizer/tasks/main.yml | 6 +++--- roles/sugarizer/templates/sugarizer.conf | 4 ++-- vars/default_vars.yml | 1 + 10 files changed, 13 insertions(+), 31 deletions(-) delete mode 100644 roles/mongodb/templates/mongodb delete mode 100644 roles/mongodb/templates/mongodb~HEAD diff --git a/roles/mongodb/tasks/main.yml b/roles/mongodb/tasks/main.yml index b007bd357..81a4864c9 100644 --- a/roles/mongodb/tasks/main.yml +++ b/roles/mongodb/tasks/main.yml @@ -17,7 +17,7 @@ - { path: '/library/dbdata/mongodb' } - { path: '/var/log/mongodb' } -- name: Create systemd files +- name: Move required files template: src={{ item.src }} dest={{ item.dest }} owner=root @@ -25,9 +25,7 @@ mode=0644 with_items: - { src: 'mongodb.service' , dest: '/etc/systemd/system/' } - - { src: 'mongodb' , dest: '/etc/sysconfig/'} - { src: 'mongod.conf' , dest: '/etc/mongod.conf'} - - { src: 'mongod.conf' , dest: '/etc/mongodb.conf'} - name: enable services service: name={{ item.name }} @@ -45,20 +43,6 @@ - { name: mongodb } when: not mongodb_enabled -# See https://github.com/iiab/iiab/issues/254 for other attempts to eliminate -# these 256MB files. Brute Force Idea: rm /var/lib/mongodb/journal/prealloc.* -- name: find /var/lib/mongodb/prealloc.* files to delete - find: - paths: /var/lib/mongodb/journal - patterns: prealloc.* - register: files_to_delete - -- name: delete prealloc files - file: - path: "{{ item.path }}" - state: absent - with_items: "{{ files_to_delete.files }}" - - name: add mongodb to service list ini_file: dest="{{ service_filelist }}" section=mongodb diff --git a/roles/mongodb/templates/mongod.conf b/roles/mongodb/templates/mongod.conf index 1b82f23b8..4d6b2a9e5 100644 --- a/roles/mongodb/templates/mongod.conf +++ b/roles/mongodb/templates/mongod.conf @@ -18,13 +18,13 @@ pidfilepath = /var/run/mongodb/mongod.pid logpath = /var/log/mongodb/mongod.log # Alternative directory for UNIX domain sockets (defaults to /tmp) -unixSocketPrefix = /var/run/mongodb +# unixSocketPrefix = /var/run/mongodb # Directory for datafiles (defaults to /data/db/) dbpath = /library/dbdata/mongodb # Enable/Disable journaling (journaling is on by default for 64 bit) -#journal = true +journal = true #nojournal = true @@ -37,7 +37,7 @@ dbpath = /library/dbdata/mongodb #verbose = v # Max number of simultaneous connections (1000000 by default) -#maxConns = 1000000 +maxConns = 1000 # Log to system's syslog facility instead of file or stdout (false by default) #syslog = true diff --git a/roles/mongodb/templates/mongodb b/roles/mongodb/templates/mongodb deleted file mode 100644 index eadac0d28..000000000 --- a/roles/mongodb/templates/mongodb +++ /dev/null @@ -1 +0,0 @@ -OPTIONS=' -f /etc/mongod.conf ' diff --git a/roles/mongodb/templates/mongodb.service b/roles/mongodb/templates/mongodb.service index 313ae15c0..49133d7e6 100644 --- a/roles/mongodb/templates/mongodb.service +++ b/roles/mongodb/templates/mongodb.service @@ -7,7 +7,7 @@ Type=forking User=mongodb Group=mongodb PIDFile=/var/run/mongodb/mongod.pid -EnvironmentFile=/etc/sysconfig/mongodb +#EnvironmentFile=/etc/sysconfig/mongodb ExecStart=/usr/bin/mongod -f /etc/mongod.conf [Install] diff --git a/roles/mongodb/templates/mongodb~HEAD b/roles/mongodb/templates/mongodb~HEAD deleted file mode 100644 index eadac0d28..000000000 --- a/roles/mongodb/templates/mongodb~HEAD +++ /dev/null @@ -1 +0,0 @@ -OPTIONS=' -f /etc/mongod.conf ' diff --git a/roles/sugarizer/defaults/main.yml b/roles/sugarizer/defaults/main.yml index 18349676b..7baf488d2 100644 --- a/roles/sugarizer/defaults/main.yml +++ b/roles/sugarizer/defaults/main.yml @@ -1,7 +1,6 @@ sugarizer_install: True sugarizer_enabled: False -sugarizer_location: '{{ doc_root }}' -sugarizer_port: 8089 +sugarizer_location: /opt/iiab sugarizer_version: 'sugarizer-1.0' sugarizer_server_version: 'sugarizer-server-1.0' npm_exists: False diff --git a/roles/sugarizer/meta/main.yml b/roles/sugarizer/meta/main.yml index e3fcddc52..1ac8adeed 100644 --- a/roles/sugarizer/meta/main.yml +++ b/roles/sugarizer/meta/main.yml @@ -1,2 +1,2 @@ dependencies: -# - { role: mongodb, tags: ['generic','mongodb'], when: sugarizer_install } + - { role: mongodb, tags: ['generic','mongodb'], when: sugarizer_install } diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index 44c59ff52..17b5c366b 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -5,7 +5,7 @@ timeout: "{{ download_timeout }}" when: internet_available -- name: Untar to /library/www/html/{{ sugarizer_version }} +- name: Untar to {{ sugarizer_version }} unarchive: src: "{{ downloads_dir }}/{{ sugarizer_version }}.tar.gz" dest: "{{ sugarizer_location }}" @@ -20,7 +20,7 @@ timeout: "{{ download_timeout }}" when: internet_available -- name: Untar to /library/www/html/{{ sugarizer_version }} +- name: Untar to /{{ sugarizer_version }} unarchive: src: "{{ downloads_dir }}/{{ sugarizer_version }}.tar.gz" dest: "{{ sugarizer_location }}" @@ -94,7 +94,7 @@ with_items: - { src: 'sugarizer.service.j2' , dest: '/etc/systemd/system/sugarizer.service'} - { src: 'sugarizer.ini' , dest: '{{ sugarizer_location }}/{{ sugarizer_server_version }}/env/sugarizer.ini' } - - { src: 'sugarizer.conf' , dest: '/etc/apache2/sites-available' } + - { src: 'sugarizer.conf' , dest: '/etc/apache2/sites-available' } - name: Create the symlink enabling the rewrite file: src=/etc/apache2/sites-available/sugarizer.conf diff --git a/roles/sugarizer/templates/sugarizer.conf b/roles/sugarizer/templates/sugarizer.conf index 19bb98363..72dcf33e4 100644 --- a/roles/sugarizer/templates/sugarizer.conf +++ b/roles/sugarizer/templates/sugarizer.conf @@ -1,3 +1,3 @@ -RewriteRule ^/sugarizer(.*)$ http://localhost:{{ sugaarizer_port }}/sugarizer$1 [P,L] -ProxyPassReverse /sugarizer http://localhost:{{ sugarizer_port }}/sugarizer +RewriteRule ^/sugarizer(.*)$ http://localhost:"{{ sugarizer_port }}/sugarizer$1" [P,L] +ProxyPassReverse /sugarizer http://localhost:"{{ sugarizer_port }}/sugarizer" ProxyRequests Off diff --git a/vars/default_vars.yml b/vars/default_vars.yml index c02f7254c..542fc2ad6 100644 --- a/vars/default_vars.yml +++ b/vars/default_vars.yml @@ -320,6 +320,7 @@ pathagar_enabled: False # Sugarizer sugarizer_install: True sugarizer_enabled: False +sugarizer_port: 8089 # 8-MGMT-TOOLS From c545df820aa63806f1d77bfa390635d99d2c8aec Mon Sep 17 00:00:00 2001 From: George Hunt Date: Tue, 22 May 2018 01:11:15 +0000 Subject: [PATCH 05/12] create shim to buffer nodejs from returning non-zero (bson does not compile), and erroring out --- roles/sugarizer/templates/start-sugarizer.sh | 5 +++++ roles/sugarizer/templates/sugarizer.service.j2 | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) create mode 100755 roles/sugarizer/templates/start-sugarizer.sh diff --git a/roles/sugarizer/templates/start-sugarizer.sh b/roles/sugarizer/templates/start-sugarizer.sh new file mode 100755 index 000000000..cae4775d3 --- /dev/null +++ b/roles/sugarizer/templates/start-sugarizer.sh @@ -0,0 +1,5 @@ +#!/bin/bash +# shim to daemonize node sugarizer.js, declare log target, return 0 +cd /opt/iiab/sugarizer-server +nohup /bin/node sugarizer.js >> /var/log/sugarizer.log & +exit 0 diff --git a/roles/sugarizer/templates/sugarizer.service.j2 b/roles/sugarizer/templates/sugarizer.service.j2 index fd5f17e40..6b900ce78 100644 --- a/roles/sugarizer/templates/sugarizer.service.j2 +++ b/roles/sugarizer/templates/sugarizer.service.j2 @@ -3,16 +3,16 @@ Description=Node.js Sugarizer Server # Requires=After=mongodb.service # Requires the mongodb service to run first [Service] -WorkingDirectory={{ sugarizer_location }}/sugarizer/server/ -ExecStart=/usr/bin/node sugarizer.js +WorkingDirectory={{ sugarizer_location }}/sugarizer-server/ +ExecStart=start-sugarizer.sh Restart=always #RestartSec=10 # Restart service after 10 seconds if node service crashes -StandardOutput=syslog # Output to syslog -StandardError=syslog # Output to syslog -SyslogIdentifier=sugarizer +#StandardOutput=syslog # Output to syslog +#StandardError=syslog # Output to syslog +#SyslogIdentifier=sugarizer #User= #Group= -Environment=NODE_ENV=production +#Environment=NODE_ENV=production [Install] WantedBy=multi-user.target From 5545979fe381ee85e0613f91b1507a96b2e2340b Mon Sep 17 00:00:00 2001 From: George Hunt Date: Tue, 22 May 2018 16:52:31 +0000 Subject: [PATCH 06/12] working on startup --- roles/sugarizer/tasks/main.yml | 9 +++++---- roles/sugarizer/templates/start-sugarizer.sh | 5 ----- roles/sugarizer/templates/sugarizer.service.j2 | 15 ++++++++------- 3 files changed, 13 insertions(+), 16 deletions(-) delete mode 100755 roles/sugarizer/templates/start-sugarizer.sh diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index 17b5c366b..853fc3f8d 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -88,13 +88,14 @@ template: src: "{{ item.src }}" dest: "{{ item.dest }}" + mode: "{{ item.mode }}" owner: root group: root - mode: 0644 with_items: - - { src: 'sugarizer.service.j2' , dest: '/etc/systemd/system/sugarizer.service'} - - { src: 'sugarizer.ini' , dest: '{{ sugarizer_location }}/{{ sugarizer_server_version }}/env/sugarizer.ini' } - - { src: 'sugarizer.conf' , dest: '/etc/apache2/sites-available' } + - { src: 'sugarizer.service.j2' , dest: '/etc/systemd/system/sugarizer.service', mode: '0644' } + - { src: 'sugarizer.ini' , dest: '{{ sugarizer_location }}/{{ sugarizer_server_version }}/env/sugarizer.ini', mode: '0644' } + - { src: 'sugarizer.conf' , dest: '/etc/apache2/sites-available',mode: '0644' } + - { src: 'start-sugarizer.sh' , dest: '{{ sugarizer_location }}/{{ sugarizer_server_version }}/', mode: '0755' } - name: Create the symlink enabling the rewrite file: src=/etc/apache2/sites-available/sugarizer.conf diff --git a/roles/sugarizer/templates/start-sugarizer.sh b/roles/sugarizer/templates/start-sugarizer.sh deleted file mode 100755 index cae4775d3..000000000 --- a/roles/sugarizer/templates/start-sugarizer.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# shim to daemonize node sugarizer.js, declare log target, return 0 -cd /opt/iiab/sugarizer-server -nohup /bin/node sugarizer.js >> /var/log/sugarizer.log & -exit 0 diff --git a/roles/sugarizer/templates/sugarizer.service.j2 b/roles/sugarizer/templates/sugarizer.service.j2 index 6b900ce78..82a5c1ace 100644 --- a/roles/sugarizer/templates/sugarizer.service.j2 +++ b/roles/sugarizer/templates/sugarizer.service.j2 @@ -1,15 +1,16 @@ [unit] Description=Node.js Sugarizer Server -# Requires=After=mongodb.service # Requires the mongodb service to run first +Requires=After=mongodb.service # Requires the mongodb service to run first [Service] -WorkingDirectory={{ sugarizer_location }}/sugarizer-server/ -ExecStart=start-sugarizer.sh +WorkingDirectory=/opt/iiab/sugarizer-server/ +ExecStart=/usr/bin/node /opt/iiab/sugarizer-server/sugarizer.js +Type=forking Restart=always -#RestartSec=10 # Restart service after 10 seconds if node service crashes -#StandardOutput=syslog # Output to syslog -#StandardError=syslog # Output to syslog -#SyslogIdentifier=sugarizer +RestartSec=10 +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=sugarizer #User= #Group= #Environment=NODE_ENV=production From eadbadf46a3c2cb5b1ad709c5b750e7f79657075 Mon Sep 17 00:00:00 2001 From: George Hunt Date: Tue, 22 May 2018 17:07:21 +0000 Subject: [PATCH 07/12] specifically fork mongodb --- roles/mongodb/templates/mongodb.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/mongodb/templates/mongodb.service b/roles/mongodb/templates/mongodb.service index 49133d7e6..e93a9ecf8 100644 --- a/roles/mongodb/templates/mongodb.service +++ b/roles/mongodb/templates/mongodb.service @@ -8,7 +8,7 @@ User=mongodb Group=mongodb PIDFile=/var/run/mongodb/mongod.pid #EnvironmentFile=/etc/sysconfig/mongodb -ExecStart=/usr/bin/mongod -f /etc/mongod.conf +ExecStart=/usr/bin/mongod --fork -f /etc/mongod.conf [Install] WantedBy=multi-user.target From 0e6a4c8ae61d5deeabc88c5535fe8bcc7f93975e Mon Sep 17 00:00:00 2001 From: George Hunt Date: Tue, 22 May 2018 19:17:48 +0000 Subject: [PATCH 08/12] proxy passthrough --- roles/sugarizer/tasks/main.yml | 1 - roles/sugarizer/templates/sugarizer.conf | 5 ++--- roles/sugarizer/templates/sugarizer.service.j2 | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index 853fc3f8d..dd930fdf5 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -95,7 +95,6 @@ - { src: 'sugarizer.service.j2' , dest: '/etc/systemd/system/sugarizer.service', mode: '0644' } - { src: 'sugarizer.ini' , dest: '{{ sugarizer_location }}/{{ sugarizer_server_version }}/env/sugarizer.ini', mode: '0644' } - { src: 'sugarizer.conf' , dest: '/etc/apache2/sites-available',mode: '0644' } - - { src: 'start-sugarizer.sh' , dest: '{{ sugarizer_location }}/{{ sugarizer_server_version }}/', mode: '0755' } - name: Create the symlink enabling the rewrite file: src=/etc/apache2/sites-available/sugarizer.conf diff --git a/roles/sugarizer/templates/sugarizer.conf b/roles/sugarizer/templates/sugarizer.conf index 72dcf33e4..ff1fe7508 100644 --- a/roles/sugarizer/templates/sugarizer.conf +++ b/roles/sugarizer/templates/sugarizer.conf @@ -1,3 +1,2 @@ -RewriteRule ^/sugarizer(.*)$ http://localhost:"{{ sugarizer_port }}/sugarizer$1" [P,L] -ProxyPassReverse /sugarizer http://localhost:"{{ sugarizer_port }}/sugarizer" -ProxyRequests Off +RewriteEngine on +RewriteRule ^/sugarizer(.*)$ http://localhost:8089$1 [PT] diff --git a/roles/sugarizer/templates/sugarizer.service.j2 b/roles/sugarizer/templates/sugarizer.service.j2 index 82a5c1ace..76d238f06 100644 --- a/roles/sugarizer/templates/sugarizer.service.j2 +++ b/roles/sugarizer/templates/sugarizer.service.j2 @@ -5,7 +5,7 @@ Requires=After=mongodb.service # Requires the mongodb service to run first [Service] WorkingDirectory=/opt/iiab/sugarizer-server/ ExecStart=/usr/bin/node /opt/iiab/sugarizer-server/sugarizer.js -Type=forking +Type=simple Restart=always RestartSec=10 StandardOutput=syslog From 72c81570d82191162220b38c4d1bbeab7e52c86d Mon Sep 17 00:00:00 2001 From: George Hunt Date: Wed, 23 May 2018 15:28:43 +0000 Subject: [PATCH 09/12] work toward upgrade -- delete old sugarizer in doc_root --- roles/sugarizer/tasks/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/roles/sugarizer/tasks/main.yml b/roles/sugarizer/tasks/main.yml index dd930fdf5..0dbd4d965 100644 --- a/roles/sugarizer/tasks/main.yml +++ b/roles/sugarizer/tasks/main.yml @@ -1,3 +1,7 @@ +- name: Wipe any previous sugarizer installation + shell: "rm -rf {{ doc_root }}/sugarizer*" + when: sugarizer_version == "sugarizer-1.0" + - name: Download latest stable Sugarizer from location we control get_url: url: "{{ iiab_download_url }}/{{ sugarizer_version }}.tar.gz" From 244d565aaabd73e30e65b71ca8e4f1e2c9a90b12 Mon Sep 17 00:00:00 2001 From: George Hunt Date: Wed, 23 May 2018 21:18:16 +0000 Subject: [PATCH 10/12] capitalize u in Unit --- roles/sugarizer/templates/sugarizer.service.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/sugarizer/templates/sugarizer.service.j2 b/roles/sugarizer/templates/sugarizer.service.j2 index 76d238f06..75feed8c9 100644 --- a/roles/sugarizer/templates/sugarizer.service.j2 +++ b/roles/sugarizer/templates/sugarizer.service.j2 @@ -1,4 +1,4 @@ -[unit] +[Unit] Description=Node.js Sugarizer Server Requires=After=mongodb.service # Requires the mongodb service to run first From 5fd71ddd39e7ad75651a7a1e4a26c48dca699c0d Mon Sep 17 00:00:00 2001 From: George Hunt Date: Wed, 23 May 2018 23:21:49 +0000 Subject: [PATCH 11/12] systemd After and Requires on separate lines --- roles/mongodb/templates/mongod.conf | 2 +- roles/sugarizer/templates/sugarizer.service.j2 | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/roles/mongodb/templates/mongod.conf b/roles/mongodb/templates/mongod.conf index 4d6b2a9e5..b55da7e29 100644 --- a/roles/mongodb/templates/mongod.conf +++ b/roles/mongodb/templates/mongod.conf @@ -37,7 +37,7 @@ journal = true #verbose = v # Max number of simultaneous connections (1000000 by default) -maxConns = 1000 +maxConns = 10000 # Log to system's syslog facility instead of file or stdout (false by default) #syslog = true diff --git a/roles/sugarizer/templates/sugarizer.service.j2 b/roles/sugarizer/templates/sugarizer.service.j2 index 75feed8c9..e21f3b6e0 100644 --- a/roles/sugarizer/templates/sugarizer.service.j2 +++ b/roles/sugarizer/templates/sugarizer.service.j2 @@ -1,6 +1,7 @@ [Unit] Description=Node.js Sugarizer Server -Requires=After=mongodb.service # Requires the mongodb service to run first +Requires=mongodb.service +After=mongodb.service # Requires the mongodb service to run first [Service] WorkingDirectory=/opt/iiab/sugarizer-server/ From abb58ba0bc86c8782bb0e82cf7e590b1fcaa1462 Mon Sep 17 00:00:00 2001 From: George Hunt Date: Sat, 26 May 2018 23:16:10 +0000 Subject: [PATCH 12/12] change mongodb service file to type=simple, and config to not fork --- roles/mongodb/templates/mongod.conf | 4 ++-- roles/mongodb/templates/mongodb.service | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/roles/mongodb/templates/mongod.conf b/roles/mongodb/templates/mongod.conf index b55da7e29..478375a5e 100644 --- a/roles/mongodb/templates/mongod.conf +++ b/roles/mongodb/templates/mongod.conf @@ -9,10 +9,10 @@ bind_ip = 127.0.0.1 port = 27018 # Fork server process (false by default) -fork = true +# fork = true # Full path to pidfile (if not set, no pidfile is created) -pidfilepath = /var/run/mongodb/mongod.pid +# pidfilepath = /var/run/mongodb/mongod.pid # Log file to send write to instead of stdout - has to be a file, not directory logpath = /var/log/mongodb/mongod.log diff --git a/roles/mongodb/templates/mongodb.service b/roles/mongodb/templates/mongodb.service index e93a9ecf8..328682a10 100644 --- a/roles/mongodb/templates/mongodb.service +++ b/roles/mongodb/templates/mongodb.service @@ -3,12 +3,10 @@ Description=High-performance, schema-free document-oriented database After=syslog.target network.target [Service] -Type=forking +Type=simple User=mongodb Group=mongodb -PIDFile=/var/run/mongodb/mongod.pid -#EnvironmentFile=/etc/sysconfig/mongodb -ExecStart=/usr/bin/mongod --fork -f /etc/mongod.conf +ExecStart=/usr/bin/mongod -f /etc/mongod.conf [Install] WantedBy=multi-user.target