Parcourir la source

Deploy: Better compatibility with Apache2

Stephen Dade il y a 5 ans
Parent
commit
2ba46764d2
3 fichiers modifiés avec 20 ajouts et 17 suppressions
  1. 1 12
      README.md
  2. 11 5
      app.py
  3. 8 0
      terraingen.wsgi

+ 1 - 12
README.md

@@ -26,12 +26,9 @@ To install dependencies:
 To run:
 
 ```
-export FLASK_APP=app.py
-flask run
+python3 app.py
 ```
 
-The cached terrain files are stored in ./srtmcache
-
 The unzipped processed files are temporarily stored in ./outputTer-tmp. These are deleted upon the zipping into a single
 downloadable file
 
@@ -41,12 +38,4 @@ Each user request is given a UUID, which is incorporated into the folder/filenam
 
 To run the unit tests, type ``pytest``
 
-## Deployment
-
-Use gunicorn for deployment:
-
-``pip install gunicorn``
-
-``gunicorn app:app``
-
 

+ 11 - 5
app.py

@@ -15,6 +15,9 @@ from terrain_gen import add_offset
 # The output folder for all gzipped terrain requests
 app = Flask(__name__, static_url_path='/terrain', static_folder='outputTer',)
 
+# Directory of this file
+this_path = os.path.dirname(os.path.realpath(__file__))
+
 def clamp(n, smallest, largest):
     return max(smallest, min(n, largest))
 
@@ -32,13 +35,13 @@ def getDatFile(lat, lon):
 
 def compressFiles(fileList, uuidkey, outfolder):
     # create a zip file comprised of dat.gz tiles
-    zipthis = os.path.join(os.getcwd(), outfolder, uuidkey + '.zip')
-    foldertmp = os.path.join(os.getcwd(), outfolder + "-tmp", uuidkey)
+    zipthis = os.path.join(this_path, outfolder, uuidkey + '.zip')
+    foldertmp = os.path.join(this_path, outfolder + "-tmp", uuidkey)
 
     # create tmp and output dirs if needed
     os.makedirs(foldertmp)
     try:
-        os.makedirs(os.path.join(os.getcwd(), outfolder))
+        os.makedirs(os.path.join(this_path, outfolder))
     except OSError:
         pass
 
@@ -113,13 +116,13 @@ def generate():
                 done.add(tag)
                 # make sure tile is inside the 60deg latitude limit
                 if (abs(lat_int) < 60):
-                    filelist.append(os.path.join(os.getcwd(), "processedTerrain", getDatFile(lat_int, lon_int)))
+                    filelist.append(os.path.join(this_path, "processedTerrain", getDatFile(lat_int, lon_int)))
                 else:
                     outsideLat = True
 
         # make sure tile is inside the 60deg latitude limit
         if (abs(lat_int) < 60):
-            filelist.append(os.path.join(os.getcwd(), "processedTerrain", getDatFile(lat_int, lon_int)))
+            filelist.append(os.path.join(this_path, "processedTerrain", getDatFile(lat_int, lon_int)))
         else:
             outsideLat = True
 
@@ -141,3 +144,6 @@ def generate():
         print("Bad get")
         return render_template('generate.html', error="Need to use POST, not GET")
 
+if __name__ == "__main__":
+    app.run()
+

+ 8 - 0
terraingen.wsgi

@@ -0,0 +1,8 @@
+#!/usr/bin/python3
+import sys
+import logging
+logging.basicConfig(stream=sys.stderr)
+sys.path.insert(0,"/var/www/terraingen/")
+
+from app import app as application
+application.secret_key = 'Add your secret key'