Advertisement
valdur55

Flask conf

Mar 27th, 2013
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.17 KB | None | 0 0
  1. #!/bin/bash
  2. export LC_ALL=C
  3. #Settings
  4. APP="flask-app"
  5. SOURCE_FOLDER_NAME="app"
  6. CODE_PATH=~/$APP
  7. REPO_URL="[email protected]:PROJEKT"
  8. cat ~/.ssh/id_rsa.pub || (ssh-keygen && cat ~/.ssh/id_rsa.pub)
  9. sleep 5
  10. #Local scripts
  11. UWSGI_LOGFILE=$CODE_PATH/uwsgi.log
  12. DEPLOY=$CODE_PATH/deploy
  13. RUN_SERVER=$DEPLOY/run_server.sh
  14. FLASK_ENV=~/venv
  15. #Conf file location
  16. NGINX_CONF=/etc/nginx/sites-enabled/flask-nginx
  17. UWSGI_HANDLER=/etc/init.d/uwsgi
  18.  
  19. sudo apt-get install -y python-pip git python-dev gcc nginx cron libxslt1-dev libxml2-dev libfreetype6-dev libjpeg8-dev
  20. #Remove default nginx conf
  21. sudo rm /etc/nginx/sites-enabled/default
  22.  
  23. sudo pip install virtualenv
  24. virtualenv $FLASK_ENV
  25. git clone $REPO_URL $CODE_PATH
  26. cd $CODE_PATH
  27. git submodule init && git submodule update
  28. #Prepare virtualenv
  29. . $FLASK_ENV/bin/activate
  30. pip install uwsgi
  31.  
  32. #Generate repo update file
  33. cat > $DEPLOY/repo_update.sh << EOF
  34. #!/bin/sh
  35. cd $CODE_PATH && git stash && git pull origin master
  36. . $FLASK_ENV/bin/activate
  37. pip install -r requirements.txt
  38. service uwsgi reload && date > last_update
  39.  
  40. EOF
  41. #Generate uwsgi running script
  42. cat > $RUN_SERVER << EOF
  43. #!/bin/sh
  44. . $FLASK_ENV/bin/activate
  45. echo "" > $UWSGI_LOGFILE && cd $CODE_PATH && uwsgi -s 127.0.0.1:9005 -M 4 -t 30 -A 4 -p 4 -w $SOURCE_FOLDER_NAME:app -d $UWSGI_LOGFILE
  46. EOF
  47.  
  48. #Generate server config
  49. cat << EOF | sudo tee $NGINX_CONF
  50. server {
  51. server_name localhost;
  52. location / {rewrite ^ https://\$http_host\$request_uri? permanent;}
  53. }
  54.  
  55. server {
  56. listen 443 ssl;
  57. ssl_certificate ssl.crt;
  58. ssl_certificate_key ssl.key;
  59. add_header Strict-Transport-Security max-age=31536000;
  60. ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  61. ssl_ciphers HIGH:!aNULL:!MD5;
  62. server_name localhost;
  63. location / {try_files \$uri @app; }
  64. location @app{
  65. include uwsgi_params;
  66. uwsgi_pass 127.0.0.1:9005;
  67. }
  68. }
  69.  
  70. EOF
  71. SSL_PATH=/etc/nginx
  72. sudo cp $DEPLOY/server.pem $SSL_PATH/ssl.crt
  73. sudo cp $DEPLOY/server.pem $SSL_PATH/ssl.key
  74. #Generate uwsgi handler
  75. cat << EOF | sudo tee $UWSGI_HANDLER
  76. #!/bin/sh
  77.  
  78. ### BEGIN INIT INFO
  79. # Provides: uwsgi
  80. # Required-Start: \$all
  81. # Required-Stop: \$all
  82. # Default-Start: 2 3 4 5
  83. # Default-Stop: 0 1 6
  84. # Short-Description: starts the uwsgi app server
  85. # Description: starts uwsgi app server using start-stop-daemon
  86. ### END INIT INFO
  87.  
  88. PATH=/opt/uwsgi:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
  89. DAEMON=$FLASK_ENV/bin/uwsgi
  90. OWNER=$(whoami)
  91.  
  92. NAME=uwsgi
  93. DESC=uwsgi
  94.  
  95. test -x \$DAEMON || exit 0
  96.  
  97. # Include uwsgi defaults if available
  98. if [ -f /etc/default/uwsgi ] ; then
  99. . /etc/default/uwsgi
  100. fi
  101.  
  102. set -e
  103.  
  104. DAEMON_COMMAND=$RUN_SERVER
  105. case "\$1" in
  106. start)
  107. echo -n "Starting \$DESC: "
  108. start-stop-daemon --start --chuid \$OWNER:\$OWNER --user \$OWNER \\
  109. --exec \$DAEMON_COMMAND
  110. echo "\$NAME."
  111. ;;
  112. stop)
  113. echo -n "Stopping \$DESC: "
  114. start-stop-daemon --signal 3 --user \$OWNER --quiet --retry 2 --stop \\
  115. --exec \$DAEMON
  116. echo "\$NAME."
  117. ;;
  118. reload)
  119. killall -1 \$DAEMON
  120. ;;
  121. force-reload)
  122. killall -15 \$DAEMON
  123. ;;
  124. restart)
  125. echo -n "Restarting \$DESC: "
  126. start-stop-daemon --signal 3 --user \$OWNER --quiet --retry 2 --stop \\
  127. --exec \$DAEMON
  128. sleep 1
  129. start-stop-daemon --user \$OWNER --start --quiet --chuid \$OWNER:\$OWNER \\
  130. --exec \$DAEMON_COMMAND
  131. echo "\$NAME."
  132. ;;
  133. status)
  134. killall -10 \$DAEMON
  135. ;;
  136. *)
  137. N=/etc/init.d/\$NAME
  138. echo "Usage: \$N {start|stop|restart|reload|force-reload|status}" >&2
  139. exit 1
  140. ;;
  141. esac
  142. exit 0
  143. EOF
  144. #Prepare crontab
  145. cat > tempcron << EOF
  146. */15 * * * * $DEPLOY/repo_update.sh > ~/update_state
  147. EOF
  148. crontab tempcron
  149. #App update
  150. chmod +x $DEPLOY/repo_update.sh
  151. $DEPLOY/repo_update.sh
  152.  
  153. #Give premissions
  154. sudo chmod +x $UWSGI_HANDLER
  155. chmod +x $RUN_SERVER
  156. sudo update-rc.d uwsgi defaults
  157.  
  158. #Update submodule
  159. cd $CODE_PATH && git submodule update
  160. #Restart webservices
  161. sudo service nginx restart
  162. service uwsgi start
  163. service uwsgi restart
  164. echo "OK"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement