hue.sh 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/bin/bash
  2. # Copyright (c) 2019 Cloudera, Inc. All rights reserved.
  3. set -x
  4. # Time marker for both stderr and stdout
  5. date; date 1>&2
  6. export DESKTOP_LOG_DIR="/var/log/hive"
  7. export PYTHON_EGG_CACHE=$HUE_CONF_DIR/.python-eggs
  8. export SERVER_SOFTWARE="apache"
  9. function prepare_huedb() {
  10. (
  11. flock -x 124
  12. $HUE_BIN/hue syncdb --noinput
  13. $HUE_BIN/hue makemigrations --noinput --merge
  14. $HUE_BIN/hue migrate
  15. ) 124>$HUE_CONF_DIR/hue.lock
  16. }
  17. function db_connectivity_check() {
  18. i=1
  19. ret="fail"
  20. # perform db connectivity check for at least 60 times,
  21. # before give up
  22. while [[ $i -lt 61 ]]; do
  23. # Run hue dbshell, if successful then one should not see
  24. # psql in the output.
  25. dbshell_output=$(echo "\q"|$HUE_BIN/hue dbshell 2>&1)
  26. error_line=$(echo $dbshell_output|grep psql)
  27. if [[ $error_line -eq 0 ]]; then
  28. echo "Successful db connectivity check"
  29. ret="success"
  30. break
  31. fi
  32. i=$((i+1))
  33. # gradually increase sleep time
  34. sleep $i
  35. echo "Failing db connectivity error: " $i " " $dbshell_output
  36. done
  37. echo "$ret"
  38. }
  39. function set_samlcert() {
  40. mkdir -pm 755 $HUE_CONF_DIR/samlcert
  41. cd $HUE_CONF_DIR/samlcert
  42. export RANDFILE=$HUE_CONF_DIR/samlcert/.rnd
  43. if [ -z ${PASSPHRASE+x} ]; then
  44. openssl genrsa -des3 -passout pass:cloudera -out server.pass.key 2048
  45. openssl rsa -inform PEM -outform PEM -passin pass:cloudera -in server.pass.key -out server.key
  46. openssl req -new -key server.key -out server.csr -subj "/C=US/ST=California/L=Palo Alto/O=Cloudera/OU=Hue/CN=$EXTERNAL_HOST"
  47. openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  48. else
  49. echo "#!/bin/bash" > $HUE_CONF_DIR/samlcert/pass.key
  50. echo "echo \$PASSPHRASE" >> $HUE_CONF_DIR/samlcert/pass.key
  51. chmod a+x $HUE_CONF_DIR/samlcert/pass.key
  52. openssl genrsa -des3 -passout pass:$PASSPHRASE -out server.key 2048
  53. openssl req -new -key server.key -out server.csr -passin pass:$PASSPHRASE -subj "/C=US/ST=California/L=Palo Alto/O=Cloudera/OU=Hue/CN=$EXTERNAL_HOST"
  54. openssl x509 -req -days 365 -in server.csr -passin pass:$PASSPHRASE -signkey server.key -out server.crt
  55. fi
  56. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64
  57. }
  58. # If database connectivity is not set then fail
  59. ret=$(db_connectivity_check)
  60. if [[ $ret == "fail" ]]; then
  61. exit 1
  62. fi
  63. # prepare db schema, run it in single instance flock mode
  64. prepare_huedb
  65. if [[ $1 == kt_renewer ]]; then
  66. if [ -e "/etc/hue/conf/kerberos.ini" ]; then
  67. # The Kerberos ticket renewer role needs to know where kinit is.
  68. KINIT_PATH=`which kinit`
  69. KINIT_PATH=${KINIT_PATH-/usr/bin/kinit}
  70. $HUE_BIN/hue kt_renewer
  71. fi
  72. elif [[ $1 == runcpserver ]]; then
  73. if [ -e "/etc/hue/conf/saml.ini" ]; then
  74. set_samlcert
  75. fi
  76. $HUE_BIN/hue runcherrypyserver
  77. fi
  78. exit 0