PageRenderTime 51ms CodeModel.GetById 39ms RepoModel.GetById 1ms app.codeStats 0ms

/silverlining/server-sync-scripts/update-server-script.sh

https://bitbucket.org/ianb/silverlining/
Shell | 87 lines | 59 code | 12 blank | 16 comment | 4 complexity | 1047abbeae2014e6f525a03a17cda15e MD5 | raw file
Possible License(s): GPL-2.0
  1. ## Fix locale
  2. locale-gen en_US en_US.UTF-8
  3. dpkg-reconfigure locales
  4. update-locale LANG=en_US.UTF-8
  5. ## Set up a standard user for managing apps (www-mgr)
  6. if [ ! -e /home/www-mgr ] ; then
  7. ## --gecos=none suppresses the querying for name, room #, etc.:
  8. adduser --disabled-password --gecos=none www-mgr
  9. mkdir -p -m 700 /home/www-mgr/.ssh
  10. cp /root/.ssh/authorized_keys /home/www-mgr/.ssh/authorized_keys
  11. chown -R www-mgr:www-mgr /home/www-mgr/.ssh/
  12. chmod 600 /home/www-mgr/.ssh/*
  13. fi
  14. ## Make www-data part of the adm group, which means it can read
  15. ## /var/log/apache2 and other log files
  16. adduser www-data adm > /dev/null # output is boring
  17. # For some reason this is only readable by root:
  18. chmod a+r /etc/hosts
  19. if [ ! -e /var/www/appdata.map ] ; then
  20. echo "not-found / default-notfound|general_debug|/dev/null/|python|
  21. disabled / default-disabled|general_debug|/dev/null|python|
  22. " > /var/www/appdata.map
  23. fi
  24. touch /var/www/disabledapps.txt
  25. chown www-mgr:www-mgr /var/www/appdata.map /var/www/disabledapps.txt
  26. ## Now setup Apache. Ubuntu installs 000-default, which we don't
  27. ## want, so we delete it, and make sure the necessary modules are
  28. ## enabled:
  29. a2enmod rewrite > /dev/null
  30. a2enmod headers > /dev/null
  31. a2enmod deflate > /dev/null
  32. if [ -e /etc/apache2/sites-enabled/000-default ] ; then
  33. rm /etc/apache2/sites-enabled/000-default
  34. fi
  35. ## These are restarted in the background, to make it faster:
  36. echo "Restarting apache2 and varnish"
  37. /etc/init.d/apache2 restart &>/dev/null &
  38. /etc/init.d/varnish restart &>/dev/null &
  39. ## Make sure some standard directories are in place, ownership is
  40. ## correct, etc.:
  41. mkdir -p /var/silverlining/build-files
  42. mkdir -p /var/log/silverlining-setup
  43. mkdir -p /var/log/silverlining
  44. mkdir -p /var/log/silverlining/apps
  45. chown www-data:www-data /var/log/silverlining/apps
  46. mkdir -p /var/www
  47. mkdir -p /var/lib/silverlining
  48. mkdir -p /var/lib/silverlining/backups
  49. mkdir -p /var/lib/silverlining/tmp
  50. mkdir -p /var/lib/silverlining/configs
  51. chown www-data:www-data /var/lib/silverlining/tmp
  52. rm -f /var/www/index.html
  53. chown www-mgr:www-mgr /var/www /var/lib/silverlining/backups /var/lib/silverlining/configs
  54. chown -R root:root /usr/local/share/silverlining/
  55. # Sometimes it has been reported that the executable bit isn't rsync'd over properly:
  56. chmod 755 /usr/local/share/silverlining/mgr-scripts/*.py
  57. chmod 0440 /etc/sudoers
  58. chown www-mgr:www-mgr /var/lib/silverlining
  59. # Make sure the support files are compiled:
  60. python -m compileall -q /usr/local/share/silverlining/lib/
  61. python -m compileall -q /usr/local/share/silverlining/mgr-scripts/
  62. ## This is just a piece of configuration I (Ian) like:
  63. sed -i "s/ -backup/-backup/" /etc/joe/jmacsrc
  64. ## Make sure there's a secret:
  65. if [ ! -e /var/lib/silverlining/secret.txt ] ; then
  66. python -c '
  67. import os, base64, sys
  68. secret = base64.b64encode(os.urandom(24), "_-").strip("=")
  69. sys.stdout.write(secret)' > /var/lib/silverlining/secret.txt
  70. chown root /var/lib/silverlining/secret.txt
  71. fi
  72. echo "Rerun setup-node on $(date)
  73. Run by: __REMOTE_USER__
  74. ----------------------------------------
  75. " >> /var/log/silverlining/setup-node.log