Add script for setting up flask/lighttpd
parent
6900dcd752
commit
d39acb36af
@ -0,0 +1,135 @@
|
|||||||
|
import os, stat, argparse
|
||||||
|
|
||||||
|
template_fcgi = '''#!/usr/bin/env python
|
||||||
|
from flup.server.fcgi import WSGIServer
|
||||||
|
from app import app
|
||||||
|
from werkzeug.contrib.fixers import LighttpdCGIRootFix
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
WSGIServer(LighttpdCGIRootFix(app)).run()
|
||||||
|
'''
|
||||||
|
|
||||||
|
template_config = '''$HTTP["host"] =~ "%s" {
|
||||||
|
server.document-root = "%s"
|
||||||
|
|
||||||
|
fastcgi.server = ("/" =>
|
||||||
|
((
|
||||||
|
"socket" => "%s",
|
||||||
|
"bin-path" => "%s",
|
||||||
|
"check-local" => "disable",
|
||||||
|
"max-procs" => 1
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
|
alias.url = (
|
||||||
|
"/static" => "%s"
|
||||||
|
)
|
||||||
|
|
||||||
|
url.rewrite-once = (
|
||||||
|
"^(/static($|/.*))$" => "$1"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
template_app = '''#!/usr/bin/env python
|
||||||
|
from flask import Flask
|
||||||
|
app = Flask(__name__)
|
||||||
|
'''
|
||||||
|
|
||||||
|
template_run = '''from tornado.wsgi import WSGIContainer
|
||||||
|
from tornado.httpserver import HTTPServer
|
||||||
|
from tornado.ioloop import IOLoop
|
||||||
|
from app import app
|
||||||
|
app.debug = True
|
||||||
|
|
||||||
|
http_server = HTTPServer(WSGIContainer(app))
|
||||||
|
http_server.listen(1234)
|
||||||
|
IOLoop.instance().start()
|
||||||
|
'''
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description='Creates and configures a new Flask project for a server running lighttpd.')
|
||||||
|
|
||||||
|
parser.add_argument('--name', dest='name', action='store', required=True,
|
||||||
|
help='(required) lowercase alphanumeric name of the project')
|
||||||
|
|
||||||
|
parser.add_argument('--hostname', dest='hostname', action='store', required=True,
|
||||||
|
help='(required) the hostname on which the project should be available')
|
||||||
|
|
||||||
|
parser.add_argument('--config', dest='config', action='store', default="/etc/lighttpd/lighttpd.conf",
|
||||||
|
help='path to the lighttpd configuration file')
|
||||||
|
|
||||||
|
parser.add_argument('--path', dest='path', action='store', default="/var/apps",
|
||||||
|
help='path to the apps directory')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
options = vars(args)
|
||||||
|
|
||||||
|
# Figure out the docroot
|
||||||
|
docroot = "%s/%s" % (options['path'], options['name'])
|
||||||
|
|
||||||
|
# The lighttpd configuration file can only include relative paths, so we'll have to figure out how deep we are.
|
||||||
|
config_depth = len([x for x in options['config'].split("/") if x != ""]) - 1
|
||||||
|
basepath = "../" * config_depth
|
||||||
|
|
||||||
|
# Generate included configuration paths
|
||||||
|
relative_include = "%s/%s/lighttpd.conf" % (basepath[:-1], docroot[1:])
|
||||||
|
absolute_include = "%s/lighttpd.conf" % docroot
|
||||||
|
|
||||||
|
# Generate path to socket
|
||||||
|
socket_path = "/tmp/%s-fcgi.sock" % options['name']
|
||||||
|
|
||||||
|
# Generate path to main .fcgi file
|
||||||
|
fcgi_path = "%s/app.fcgi" % docroot
|
||||||
|
|
||||||
|
# Generate path to static directory
|
||||||
|
static_path = "%s/static" % docroot
|
||||||
|
|
||||||
|
print "Document root: %s" % docroot
|
||||||
|
print "Relative include path: %s" % relative_include
|
||||||
|
print "Absolute include path: %s" % absolute_include
|
||||||
|
print "Socket path: %s" % socket_path
|
||||||
|
print "FCGI path: %s" % fcgi_path
|
||||||
|
print "Static file path: %s" % static_path
|
||||||
|
print "Hostname: %s" % options['hostname']
|
||||||
|
raw_input("Press enter to continue...")
|
||||||
|
|
||||||
|
print "Creating document root..."
|
||||||
|
# Create document root
|
||||||
|
os.makedirs(docroot)
|
||||||
|
|
||||||
|
print "Creating static file directory..."
|
||||||
|
# Create static file directory
|
||||||
|
os.makedirs(static_path)
|
||||||
|
|
||||||
|
print "Creating main .fcgi file..."
|
||||||
|
# Create main .fcgi file
|
||||||
|
f = open(fcgi_path, "w")
|
||||||
|
f.write(template_fcgi)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
print "Creating configuration include..."
|
||||||
|
# Create configuration include
|
||||||
|
f = open(absolute_include, "w")
|
||||||
|
f.write(template_config % (options['hostname'], docroot, socket_path, fcgi_path, static_path))
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
print "Creating application template..."
|
||||||
|
f = open("%s/app.py" % docroot, "w")
|
||||||
|
f.write(template_app)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
print "Creating run script..."
|
||||||
|
f = open("%s/run.py" % docroot, "w")
|
||||||
|
f.write(template_run)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
print "Setting main .fcgi file as executable..."
|
||||||
|
os.chmod(fcgi_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH | stat.S_IXOTH)
|
||||||
|
|
||||||
|
print "Appending include path to main lighttpd configuration file..."
|
||||||
|
# Append include to the main lighttpd configuration file
|
||||||
|
f = open(options['config'], "a")
|
||||||
|
f.write("\ninclude \"%s\"\n" % relative_include)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
print "Done!"
|
Loading…
Reference in New Issue