From ae1a3b8245e945dc1c2d884c7b756dfb24d234e8 Mon Sep 17 00:00:00 2001 From: Jason Etheridge Date: Sat, 26 Jan 2019 19:52:05 -0500 Subject: [PATCH] the EG half --- installer/stretch/eg_stretch_installer.sh | 585 ++++++++++++++++++++++++------ 1 file changed, 481 insertions(+), 104 deletions(-) diff --git a/installer/stretch/eg_stretch_installer.sh b/installer/stretch/eg_stretch_installer.sh index dee0ce11f..7af7c542f 100755 --- a/installer/stretch/eg_stretch_installer.sh +++ b/installer/stretch/eg_stretch_installer.sh @@ -115,33 +115,118 @@ function my_init { echo __--==2 20. Getting help - echo __--== Miscellaneous + echo __--== Installing Evergreen + echo __--==2 1. Preamble: referenced user accounts - get_opensrf_tip + stop_opensrf + cloning_evergreen_git_repos - #setting_ldconfig_and_rsyslog_and_hosts_and_ejabberd + echo __--==2 2. Preamble: developer instructions - exit 0; + eg_developer_steps - # Evergreen install + echo __--==2 3. Installing prerequisites + + eg_prereqs + + echo __--==3 OPTIONAL: Developer additions + + eg_dev_additions + + echo __--==2 4. Extra steps for web staff client + + + echo __--==3 4.1. Install dependencies for web staff client + + echo __--==3 4.2. Install AngularJS files for web staff client + + eg_angularjs_web_build + + echo __--==3 4.3. Install Angular files for web staff client + + eg_angular_web_build + + echo __--==2 5. Configuration and compilation instructions + + build_eg + test_eg_build + + echo __--==2 6. Installation instructions + + install_eg + + echo __--==2 7. Change ownership of the Evergreen files + + eg_post_install1 + + echo __--==2 8. Run ldconfig + + eg_post_install2 + + echo __--==2 9. Additional Instructions for Developers + + eg_dojo_install + + echo __--==2 10. Configure the Apache Web server - cloning_evergreen_git_repos - evergreen_prereqs - evergreen_db_prereqs - build_evergreen - test_evergreen_build - test_and_build_eg_browser_client - install_evergreen - configure_database configure_apache + + echo __--==2 11. Configure OpenSRF for the Evergreen application + + eg_configure_opensrf + + echo __--==2 12. Configure action triggers for the Evergreen application + + eg_configure_action_trigger + + echo __--==2 13. Creating the Evergreen database + + echo __--==3 13.1. Setting up the PostgreSQL server + + evergreen_db_prereqs + evergreen_db_superuser + + echo __--==3 13.2. Creating the Evergreen database and schema + + evergreen_db_create + evergreen_db_pgtap + + echo __--==2 14. Starting Evergreen + + if [ $AUTOSTART ]; then + start_opensrf + sleep 10 + eg_autogen + sleep 10 + eg_restart_apache + sleep 10 + else + echo AUTOSTART not enabled + fi + + echo __--==2 15. Testing connections to Evergreen + if [ $AUTOSTART ]; then - start_evergreen if [ $LIVETEST ]; then + eg_test_srfsh test_evergreen_live fi + else + echo AUTOSTART not enabled fi + + echo __--==2 16. Getting help + + echo __--==2 17. License + + echo __--== Miscellaneous + docs_builder_prereqs build_the_docs + get_opensrf_tip + get_eg_tip + + exit 0; } function init_variables { @@ -534,11 +619,385 @@ function configure_websockets { echo End of configuring websockets =~-._ } +function cloning_evergreen_git_repos { + echo _.-~= cloning Evergreen git repository + date + TEST_COMMAND=" + cd /home/test; + git clone --depth 1 --branch $EVERGREEN_BRANCH $EVERGREEN_REPO Evergreen; + " + su - test sh -c "$TEST_COMMAND"; + echo Return Value = $? + + echo End of cloning Evergreen git repository =~-._ +} + +function eg_developer_steps { + echo _.-~= Evergreen developer steps + cd /home/test/Evergreen/ + autoreconf -i + echo Return Value = $? + echo End of Evergreen developer steps =~-._ +} + +function eg_prereqs { + echo _.-~= Installing Evergreen pre-requisites + date + cd /home/test/Evergreen/ + if [ $YES ]; then + yes | make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET} + else + make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET} + fi; + echo Return Value = $? + echo End of Installing Evergreen pre-requisites =~-._ +} + +function eg_dev_additions { + echo _.-~= Installing Evergreen pre-requisites + date + cd /home/test/Evergreen/ + echo ${EVERGREEN_PREREQ_TARGET}-developer + if [ $YES ]; then + yes | make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET}-developer + else + make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET}-developer + fi; + echo ${EVERGREEN_PREREQ_TARGET}-translator + if [ $YES ]; then + yes | make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET}-translator + else + make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET}-translator + fi; + echo ${EVERGREEN_PREREQ_TARGET}-packager + if [ $YES ]; then + yes | make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET}-packager + else + make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET}-packager + fi; + echo Return Value = $? + echo End of Installing Evergreen pre-requisites =~-._ +} + +function eg_angularjs_web_build { + echo _.-~= Installing AngularJS web client + date + TEST_COMMAND=' + cd /home/test/Evergreen/Open-ILS/web/js/ui/default/staff/ ; + echo Running npm install: ; + npm install ; + echo Return Value = $? ; + echo Running npm run build-prod: ; + npm run build-prod ; + echo Return Value = $? ; + echo Running npm run test: ; + npm run test ; + echo Return Value = $? ; + ' + su - test sh -c "$TEST_COMMAND" + echo Return Value = $? + echo End of Installing AngularJS web client =~-._ +} + +function eg_angular_web_build { + echo _.-~= Installing Angular web client + date + TEST_COMMAND=' + cd /home/test/Evergreen/Open-ILS/src/eg2/ ; + echo Running npm install: ; + npm install ; + echo Return Value = $? ; + echo "Running ng build --prod:" ; + ng build --prod ; + echo Return Value = $? ; + echo Running npm run test: ; + npm run test ; + echo Return Value = $? ; + ' + su - test sh -c "$TEST_COMMAND" + echo Return Value = $? + echo End of Installing AngularJS web client =~-._ +} + +function build_eg { + echo _.-~= Building Evergreen + date + TEST_COMMAND=' + cd /home/test/Evergreen; + PATH=/openils/bin:$PATH ./configure --prefix=/openils --sysconfdir=/openils/conf; + make;' + su - test sh -c "$TEST_COMMAND" + echo Return Value = $? + echo End of Building Evergreen =~-._ +} + +function test_eg_build { + echo _.-~= Running Evergreen tests + date + cd /home/test/Evergreen; + make check + echo Return Value = $? + echo End of Running Evergreen tests =~-._ +} + +function install_eg { + echo _.-~= Installing Evergreen + date + cd /home/test/Evergreen + make install + echo Return Value = $? + echo End of Installing Evergreen =~-._ +} + +function eg_post_install1 { + echo _.-~= Change File Ownership + date + chown -R opensrf:opensrf /openils + echo End of Change File Ownership =~-._ +} + +function eg_post_install2 { + echo _.-~= Run ldconfig + date + ldconfig + echo End of Run ldconfig =~-._ +} + +function eg_dojo_install { + echo _.-~= Installing Dojo + date + OSRF_COMMAND=' + cd /home/opensrf/; + wget -N "http://download.dojotoolkit.org/release-'$DOJO_VERSION'/dojo-release-'$DOJO_VERSION'.tar.gz" \ + || wget -N "http://evergreen-ils.org/~phasefx/download.dojotoolkit.org/dojo-release-'$DOJO_VERSION'.tar.gz" + tar -C /openils/var/web/js -xzf dojo-release-'$DOJO_VERSION'.tar.gz + cp -r /openils/var/web/js/dojo-release-'$DOJO_VERSION'/* /openils/var/web/js/dojo/.' + su - opensrf sh -c "$OSRF_COMMAND" + cd + echo End of Installing Dojo =~-._ +} + +function configure_apache { + echo _.-~= configure apache + date + echo Copy apache configs into place + cd /home/test/Evergreen/ + cp Open-ILS/examples/apache_24/eg_24.conf /etc/apache2/sites-available/eg.conf + cp Open-ILS/examples/apache_24/eg_vhost_24.conf /etc/apache2/eg_vhost.conf + cp Open-ILS/examples/apache_24/eg_startup /etc/apache2/ + + echo SSL cert + /etc/init.d/apache2 stop + mkdir -p /etc/apache2/ssl/; + cd /etc/apache2/ssl/ + if [ ! -f server.key ] ; then + echo -e "\n\nConfiguring a new temporary SSL certificate....\n"; + if [ $YES ]; then + yes "" | openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key + else + openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key + fi; + else + echo -e "\nkeeping existing ssl/server.key file\n"; + fi + + echo Modifying APACHE_RUN_USER/APACHE_RUN_GROUP in /etc/apache2/envvars + sed -i 's/www-data/opensrf/g' /etc/apache2/envvars + + echo Modifying KeepAliveTimeout in /etc/apache2/apache2.conf + echo Before: + grep KeepAliveTimeout /etc/apache2/apache2.conf + sed -i 's/KeepAliveTimeout .*/KeepAliveTimeout 1/' /etc/apache2/apache2.conf + echo After: + grep KeepAliveTimeout /etc/apache2/apache2.conf + + echo Modifying KeepAliveMaxRequests in /etc/apache2/apache2.conf + echo Before: + grep KeepAliveMaxRequests /etc/apache2/apache2.conf + sed -i 's/KeepAliveMaxRequests .*/KeepAliveMaxRequests 100/' /etc/apache2/apache2.conf + echo After: + grep KeepAliveMaxRequests /etc/apache2/apache2.conf + + echo Setting /etc/apache2/mods-available/mpm_prefork.conf + echo '' > /etc/apache2/mods-available/mpm_prefork.conf + echo ' StartServers 15' >> /etc/apache2/mods-available/mpm_prefork.conf + echo ' MinSpareServers 5' >> /etc/apache2/mods-available/mpm_prefork.conf + echo ' MaxSpareServers 15' >> /etc/apache2/mods-available/mpm_prefork.conf + echo ' MaxRequestWorkers 75' >> /etc/apache2/mods-available/mpm_prefork.conf + echo ' MaxConnectionsPerChild 500' >> /etc/apache2/mods-available/mpm_prefork.conf + echo '' >> /etc/apache2/mods-available/mpm_prefork.conf + + echo Ensuring mpm_prefork over mpm_event + a2dismod mpm_event + a2enmod mpm_prefork + + echo Enable the EG site + a2dissite 000-default # OPTIONAL: disable the default site (the "It Works" page) + a2ensite eg.conf + + echo Making sure /var/lock/apache2 is owned by opensrf + chown opensrf /var/lock/apache2 + + #a2enmod ssl + #echo Return Value = $? + #a2enmod rewrite + #echo Return Value = $? + #a2enmod expires + #echo Return Value = $? + #a2dissite 000-default + #echo Return Value = $? + #a2ensite eg.conf + #echo Return Value = $? + + echo End of configure apache =~-._ +} + +function eg_configure_opensrf { + echo _.-~= configure EG OpenSRF + date + OSRF_COMMAND='cp -b /openils/conf/opensrf_core.xml.example /openils/conf/opensrf_core.xml; + cp -b /openils/conf/opensrf.xml.example /openils/conf/opensrf.xml;' + su - opensrf sh -c "$OSRF_COMMAND" + echo Return Value = $? + echo End of configure EG OpenSRF =~-._ +} + +function eg_configure_action_trigger { + echo _.-~= configure EG Action/Trigger + date + OSRF_COMMAND='cp -b /openils/conf/action_trigger_filters.json.example /openils/conf/action_trigger_filters.json' + su - opensrf sh -c "$OSRF_COMMAND" + echo Return Value = $? + echo End of configure EG Action/Trigger =~-._ +} + +function evergreen_db_prereqs { + echo _.-~= Installing Evergreen database pre-requisites + date + cd /home/test/Evergreen/ + if [ $YES ]; then + yes | make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_DB_PREREQ_TARGET} + else + make -f Open-ILS/src/extras/Makefile.install ${EVERGREEN_DB_PREREQ_TARGET} + fi; + echo Return Value = $? + echo End of Installing Evergreen database pre-requisites =~-._ +} + +function evergreen_db_superuser { + echo _.-~= Create PostgreSQL superuser + date + if [ $YES ]; then + echo "Using password $PGPASSWORD for the $PGUSER database user." + echo -e "$PGPASSWORD\n$PGPASSWORD\n" | su - postgres sh -c "createuser -P -s $PGUSER;" + else + echo -e "\n\nPlease enter a password for the $PGUSER database user.\n If you do not want to edit configs, use \"$PGPASSWORD\"\n" + su - postgres sh -c "createuser -s -P $PGUSER;" + fi; + echo Return Value = $? + echo End of Create PostgreSQL superuser =~-._ +} + +function evergreen_db_create { + echo _.-~= Create Evergreen Database + date + + echo Running eg_db_config: + cd /home/test/Evergreen + perl Open-ILS/src/support-scripts/eg_db_config \ + --create-database \ + --create-schema \ + --create-offline \ + --update-config $SAMPLEDATA \ + --service all \ + --user $PGUSER \ + --password $PGPASSWORD \ + --hostname $PGHOST \ + --database $PGDATABASE \ + --admin-user $ADMIN_USER \ + --admin-pass $ADMIN_PASS; + echo Return Value = $? + + echo Installing pgtap + PG_TAP_VER="0.97.0" + wget -N http://api.pgxn.org/dist/pgtap/$PG_TAP_VER/pgtap-$PG_TAP_VER.zip \ + && unzip pgtap-$PG_TAP_VER.zip \ + && cd pgtap-$PG_TAP_VER \ + && make \ + && make installcheck \ + && make install + echo 'CREATE EXTENSION pgtap;' | su - postgres -c "psql evergreen" + + echo End of Create Evergreen Database =~-._ +} + +function evergreen_db_pgtap { + echo _.-~= Running pgTAP tests + date + su - postgres -c 'cd /home/test/Evergreen ; pg_prove -vr -d evergreen Open-ILS/src/sql/Pg/t/ ; echo Return Value = $?' + echo End of pgTAP tests =~-._ +} + +function eg_restart_apache { + echo _.-~= Restarting Apache + date + #if [ -e /etc/init.d/apache2-websockets ]; then + # /etc/init.d/apache2-websockets stop + # echo Return Value = $? + #else + # systemctl stop apache2@websockets.service + # echo Return Value = $? + #fi + if [ -e /etc/init.d/apache2 ]; then + /etc/init.d/apache2 stop + echo Return Value = $? + else + systemctl stop apache2 + echo Return Value = $? + fi + if [ -e /etc/init.d/apache2 ]; then + /etc/init.d/apache2 start + echo Return Value = $? + else + systemctl start apache2 + echo Return Value = $? + fi + #if [ -e /etc/init.d/apache2-websockets ]; then + # /etc/init.d/apache2-websockets start + # echo Return Value = $? + #else + # systemctl start apache2@websockets.service + # echo Return Value = $? + #fi + echo End of Restarting Apache =~-._ +} + +function eg_autogen { + echo _.-~= Running autogen.sh + date + su - opensrf sh -c "PATH=$PATH:/openils/bin autogen.sh"; + echo Return Value = $? + echo End of Running autogen.sh =~-._ +} + +function eg_test_srfsh { + echo _.-~= test EG opensrf + OSRF_COMMAND="echo login $ADMIN_USER $ADMIN_PASS | PATH=/openils/bin:\$PATH srfsh" + su - opensrf sh -c "$OSRF_COMMAND" + echo Return Value = $? + echo End of test EG opensrf =~-._ +} + function get_opensrf_tip { cd /home/test/OpenSRF/ echo 'Tip of OpenSRF:' `git log --format=oneline | head -1` } +function get_eg_tip { + cd /home/test/Evergreen/ + echo 'Tip of Evergreen:' `git log --format=oneline | head -1` +} + function docs_builder_prereqs { echo _.-~= Installing prereqs for building the documentation formats date @@ -562,19 +1021,6 @@ function build_the_docs { echo End of Building the AsciiDoc output formats =~-._ } -function cloning_evergreen_git_repos { - echo _.-~= cloning Evergreen git repository - date - TEST_COMMAND=" - cd /home/test; - git clone --depth 1 --branch $EVERGREEN_BRANCH $EVERGREEN_REPO Evergreen; - " - su - test sh -c "$TEST_COMMAND"; - echo Return Value = $? - - echo End of cloning Evergreen git repository =~-._ -} - function show_git_tips { # Show tips cd /home/test/OpenSRF/ @@ -584,30 +1030,6 @@ function show_git_tips { } -function evergreen_prereqs { - echo _.-~= Installing Evergreen pre-requisites - date - if [ $YES ]; then - yes | make -f /home/opensrf/Evergreen/Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET} - else - make -f /home/opensrf/Evergreen/Open-ILS/src/extras/Makefile.install ${EVERGREEN_PREREQ_TARGET} - fi; - echo Return Value = $? - echo End of Installing Evergreen pre-requisites =~-._ -} - -function evergreen_db_prereqs { - echo _.-~= Installing Evergreen database pre-requisites - date - if [ $YES ]; then - yes | make -f /home/opensrf/Evergreen/Open-ILS/src/extras/Makefile.install ${EVERGREEN_DB_PREREQ_TARGET} - else - make -f /home/opensrf/Evergreen/Open-ILS/src/extras/Makefile.install ${EVERGREEN_DB_PREREQ_TARGET} - fi; - echo Return Value = $? - echo End of Installing Evergreen database pre-requisites =~-._ -} - function setting_ldconfig_and_rsyslog_and_hosts_and_ejabberd { echo _.-~= setting ld.so.conf and rsyslog and /etc/hosts and ejabberd date @@ -777,51 +1199,6 @@ function configure_database { echo configure database =~-._ } -function configure_apache { - echo _.-~= configure apache - date - /etc/init.d/apache2 stop - # Copy apache configs into place and create SSL cert - cd /home/opensrf/Evergreen/ - cp Open-ILS/examples/apache_24/eg_24.conf /etc/apache2/sites-available/eg.conf - cp Open-ILS/examples/apache_24/eg_vhost_24.conf /etc/apache2/eg_vhost.conf - cp Open-ILS/examples/apache_24/eg_startup /etc/apache2/ - - mkdir -p /etc/apache2/ssl; - if [ ! -f /etc/apache2/ssl/server.key ] ; then - echo -e "\n\nConfiguring a new temporary SSL certificate....\n"; - if [ $YES ]; then - yes "" | openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key - else - openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key - fi; - else - echo -e "\nkeeping existing ssl/server.key file\n"; - fi - - a2enmod ssl - echo Return Value = $? - a2enmod rewrite - echo Return Value = $? - a2enmod expires - echo Return Value = $? - a2dissite 000-default - echo Return Value = $? - a2ensite eg.conf - echo Return Value = $? - - echo Modifying APACHE_RUN_USER/APACHE_RUN_GROUP in /etc/apache2/envvars - sed -i 's/www-data/opensrf/g' /etc/apache2/envvars - - echo Making sure /var/lock/apache2 is owned by opensrf - chown opensrf:opensrf /var/lock/apache2 - - echo Modifying KeepAliveTimeout in /etc/apache2/apache2.conf - sed -i 's/KeepAliveTimeout .*/KeepAliveTimeout 1/' /etc/apache2/apache2.conf - - echo End of configure apache =~-._ -} - function start_evergreen { echo _.-~= Starting Evergreen date @@ -849,22 +1226,22 @@ function start_evergreen { function test_evergreen_live { # TODO: Eventually move these tests into a Make target within Evergreen - cd /home/opensrf/Evergreen - echo _.-~= Running pgTAP tests - date - su - postgres -c 'cd /home/opensrf/Evergreen ; pg_prove -vr -d evergreen Open-ILS/src/sql/Pg/t/ ; echo Return Value = $?' - echo End of pgTAP tests =~-._ + cd /home/test/Evergreen + #echo _.-~= Running pgTAP tests + #date + #su - postgres -c 'cd /home/opensrf/Evergreen ; pg_prove -vr -d evergreen Open-ILS/src/sql/Pg/t/ ; echo Return Value = $?' + #echo End of pgTAP tests =~-._ echo _.-~= Running pgTAP live tests date - su - postgres -c 'cd /home/opensrf/Evergreen ; pg_prove -vr -d evergreen Open-ILS/src/sql/Pg/live_t/ ; echo Return Value = $?' + su - postgres -c 'cd /home/test/Evergreen ; pg_prove -vr -d evergreen Open-ILS/src/sql/Pg/live_t/ ; echo Return Value = $?' echo End of pgTAP live tests =~-._ echo _.-~= Running settings-tester.pl date - su - opensrf sh -c 'export PATH=/openils/bin:$PATH ; cd /home/opensrf/Evergreen/Open-ILS/src/support-scripts/ ; ./settings-tester.pl ; echo Return Value = $?' + su - opensrf sh -c 'export PATH=/openils/bin:$PATH ; cd /home/test/Evergreen/Open-ILS/src/support-scripts/ ; ./settings-tester.pl ; echo Return Value = $?' echo End of settings-tester.pl output =~-._ echo _.-~= Running perl live tests date - su - opensrf sh -c 'export PATH=/openils/bin:$PATH ; cd /home/opensrf/Evergreen/Open-ILS/src/perlmods/ ; make livecheck; echo Return Value = $?' + su - root sh -c 'export PATH=/openils/bin:$PATH ; cd /home/test/Evergreen/Open-ILS/src/perlmods/ ; make livecheck; echo Return Value = $?' echo End of perl live tests =~-._ echo _.-~= Gathering log summary date -- 2.11.0