Skip to content

Instantly share code, notes, and snippets.

@ZebTheWizard
Created July 31, 2017 03:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ZebTheWizard/f1d5bca9798fe8fdcb3ff07a4e6dc200 to your computer and use it in GitHub Desktop.
Save ZebTheWizard/f1d5bca9798fe8fdcb3ff07a4e6dc200 to your computer and use it in GitHub Desktop.
#!/bin/sh
FOLDER=$1
MAIN=$2
NAME=$3
IP=$4
sudo apt-get update
sudo apt-get install -y python3-pip python3-dev nginx
sudo pip3 install virtualenv
mkdir "$FOLDER/$NAME"
cd "$FOLDER/$NAME"
virtualenv venv
. venv/bin/activate
pip install uwsgi flask
#PROJECT/MAIN.PY
cat > "$MAIN.py" <<EOT
from flask import Flask
app = Flask(__name__)
@app.route("/")
def welcome():
return "<h1 style='color:blue'>Hello There!</h1>"
if __name__ == "__main__":
app.run(host='0.0.0.0')
EOT
#PROJECT/WSGI.PY
cat > "wsgi.py" <<EOT
from $MAIN import app
if __name__ == "__main__":
app.run()
EOT
#PROJECT/WSGI.INI
cat > "wsgi.ini" <<EOT
[uwsgi]
module = wsgi:app
master = true
processes = 5
socket = $NAME.sock
chmod-socket = 660
vacuum = true
die-on-term = true
EOT
#/ETC/SYSTEMD/SYSTEM/NAME.SERVICE
cat > "/etc/init/$NAME.conf" <<EOT
description "uwsgi server instance for $NAME"
start on runlevel [2345]
stop on runlevel [!2345]
setuid morty
setgid www-data
env PATH=$FOLDER/$NAME/venv/bin
chdir $FOLDER/$NAME
exec uwsgi --ini wsgi.ini
EOT
#START SERVERS
sudo start $NAME
#/ETC/NGINX/SITES-AVAILABLE/NAME
cat > "/etc/nginx/sites-available/$NAME" <<EOT
server {
listen 80;
server_name $IP;
location / {
include uwsgi_params;
uwsgi_pass unix:$FOLDER/$NAME/$NAME.sock;
}
}
EOT
#CREATE LINK FOR NGINX
sudo ln -sf "/etc/nginx/sites-available/$NAME" /etc/nginx/sites-enabled/digitalocean
#RESTART NGINX
sudo service stop nginx
sudo service start nginx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment