_frontend.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. #!/bin/bash
  2. #
  3. # functions for setting up app frontend
  4. #######################################
  5. # installed node packages
  6. # Arguments:
  7. # None
  8. #######################################
  9. frontend_node_dependencies() {
  10. print_banner
  11. printf "${WHITE} 💻 Instalando dependências do frontend...${GRAY_LIGHT}"
  12. printf "\n\n"
  13. sleep 2
  14. sudo su - deploy <<EOF
  15. cd /home/deploy/${instancia_add}/frontend
  16. npm install --force
  17. EOF
  18. sleep 2
  19. }
  20. #######################################
  21. # compiles frontend code
  22. # Arguments:
  23. # None
  24. #######################################
  25. frontend_node_build() {
  26. print_banner
  27. printf "${WHITE} 💻 Compilando o código do frontend...${GRAY_LIGHT}"
  28. printf "\n\n"
  29. sleep 2
  30. sudo su - deploy <<EOF
  31. cd /home/deploy/${instancia_add}/frontend
  32. npm run build
  33. EOF
  34. sleep 2
  35. }
  36. #######################################
  37. # updates frontend code
  38. # Arguments:
  39. # None
  40. #######################################
  41. frontend_update() {
  42. print_banner
  43. printf "${WHITE} 💻 Atualizando o frontend...${GRAY_LIGHT}"
  44. printf "\n\n"
  45. sleep 2
  46. sudo su - deploy <<EOF
  47. cd /home/deploy/${empresa_atualizar}
  48. pm2 stop ${empresa_atualizar}-frontend
  49. git pull
  50. cd /home/deploy/${empresa_atualizar}/frontend
  51. npm install
  52. rm -rf build
  53. npm run build
  54. pm2 start ${empresa_atualizar}-frontend
  55. pm2 save
  56. EOF
  57. sleep 2
  58. }
  59. #######################################
  60. # sets frontend environment variables
  61. # Arguments:
  62. # None
  63. #######################################
  64. frontend_set_env() {
  65. print_banner
  66. printf "${WHITE} 💻 Configurando variáveis de ambiente (frontend)...${GRAY_LIGHT}"
  67. printf "\n\n"
  68. sleep 2
  69. # ensure idempotency
  70. backend_url=$(echo "${backend_url/https:\/\/}")
  71. backend_url=${backend_url%%/*}
  72. backend_url=https://$backend_url
  73. sudo su - deploy << EOF
  74. cat <<[-]EOF > /home/deploy/${instancia_add}/frontend/.env
  75. REACT_APP_BACKEND_URL=${backend_url}
  76. REACT_APP_HOURS_CLOSE_TICKETS_AUTO = 24
  77. [-]EOF
  78. EOF
  79. sleep 2
  80. sudo su - deploy << EOF
  81. cat <<[-]EOF > /home/deploy/${instancia_add}/frontend/server.js
  82. //simple express server to run frontend production build;
  83. const express = require("express");
  84. const path = require("path");
  85. const app = express();
  86. app.use(express.static(path.join(__dirname, "build")));
  87. app.get("/*", function (req, res) {
  88. res.sendFile(path.join(__dirname, "build", "index.html"));
  89. });
  90. app.listen(${frontend_port});
  91. [-]EOF
  92. EOF
  93. sleep 2
  94. }
  95. #######################################
  96. # starts pm2 for frontend
  97. # Arguments:
  98. # None
  99. #######################################
  100. frontend_start_pm2() {
  101. print_banner
  102. printf "${WHITE} 💻 Iniciando pm2 (frontend)...${GRAY_LIGHT}"
  103. printf "\n\n"
  104. sleep 2
  105. sudo su - deploy <<EOF
  106. cd /home/deploy/${instancia_add}/frontend
  107. pm2 start server.js --name ${instancia_add}-frontend
  108. pm2 save
  109. EOF
  110. sleep 2
  111. sudo su - root <<EOF
  112. pm2 startup
  113. sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u deploy --hp /home/deploy
  114. EOF
  115. sleep 2
  116. }
  117. #######################################
  118. # sets up nginx for frontend
  119. # Arguments:
  120. # None
  121. #######################################
  122. frontend_nginx_setup() {
  123. print_banner
  124. printf "${WHITE} 💻 Configurando nginx (frontend)...${GRAY_LIGHT}"
  125. printf "\n\n"
  126. sleep 2
  127. frontend_hostname=$(echo "${frontend_url/https:\/\/}")
  128. sudo su - root << EOF
  129. cat > /etc/nginx/sites-available/${instancia_add}-frontend << 'END'
  130. server {
  131. server_name $frontend_hostname;
  132. location / {
  133. proxy_pass http://127.0.0.1:${frontend_port};
  134. proxy_http_version 1.1;
  135. proxy_set_header Upgrade \$http_upgrade;
  136. proxy_set_header Connection 'upgrade';
  137. proxy_set_header Host \$host;
  138. proxy_set_header X-Real-IP \$remote_addr;
  139. proxy_set_header X-Forwarded-Proto \$scheme;
  140. proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
  141. proxy_cache_bypass \$http_upgrade;
  142. }
  143. }
  144. END
  145. ln -s /etc/nginx/sites-available/${instancia_add}-frontend /etc/nginx/sites-enabled
  146. EOF
  147. sleep 2
  148. }