def create_app(name=None, urls=None, py_version='26', app_dir='/opt/apps', ve_dir='/opt/ve', app_port=8000): """ Creates a new application container :param name: Name of application :param urls: Application public URLs (semi-colon separated - i.e. "example.com;anotherexample.com") :param py_version: Version of Python to use (default: 26) :param app_dir: Root directory for applications (default: /opt/apps) :param ve_dir: Root directory for virtualenvs (default: /opt/ve) :param app_port: Application port """ if not name or not urls: raise RuntimeError('You must specify an name and urls') with default_settings(): # create app directory sudo('mkdir -p {0}'.format(os.path.join(app_dir, name))) # create supervisor config uwsgi_tmp_conf = tempfile.mktemp() with open(uwsgi_tmp_conf, 'w') as f: f.write(generate_uwsgi_config(app_name=name, app_dir=app_dir, ve_dir=ve_dir, user='******', group='www-data')) nginx_tmp_conf = tempfile.mktemp() # create nginx config with open(nginx_tmp_conf, 'w') as f: f.write(generate_nginx_config(app_name=name, urls=urls.split(';'), app_port=app_port)) put(uwsgi_tmp_conf, '/etc/supervisor/conf.d/uwsgi-{0}.conf'.format(name), mode=0755, use_sudo=True) put(nginx_tmp_conf, '/etc/nginx/conf.d/{0}.conf'.format(name), mode=0755, use_sudo=True) # update supervisor sudo('supervisorctl update') # cleanup os.remove(uwsgi_tmp_conf) os.remove(nginx_tmp_conf)
def uptime(): """ Shows system uptime """ with default_settings(): run('uptime')
def update_check(): """ Shows update status """ with default_settings(): run('cat /var/lib/update-notifier/updates-available')
def memory(): """ Shows system uptime """ with default_settings(): run('free -m')
def update_check(): """ Shows update status """ with default_settings(): sudo('apt-get update > /dev/null 2>&1') run('if [ -e /var/lib/update-notifier/updates-available ]; then cat '\ '/var/lib/update-notifier/updates-available; else '\ 'echo "Unavailable"; fi')
def upload_file(src, dest, mode=None): """ Uploads a local file :param src: Path to the local file :param dest: Destination path on the host :param mode: Mode to set the remote file """ if mode: mode = int(mode) with default_settings(): put(src, dest, use_sudo=True, mode=mode)
def run_command(command): """ Shows the output from the specified command :param command: Command to execute """ with default_settings(): try: run(command) except: # ignore python traceback output from command that returns non-zero pass
def delete_app(name=None, app_dir='/opt/apps', ve_dir='/opt/ve'): """ Deletes an application :param name: Name of application :param app_dir: Root directory for applications (default: /opt/apps) :param ve_dir: Root directory for virtualenvs (default: /opt/ve) """ if not name: raise RuntimeError('You must specify a name') with default_settings(): # remove configs sudo('rm /etc/nginx/conf.d/{0}.conf'.format(name)) sudo('rm /etc/supervisor/conf.d/uwsgi-{0}.conf'.format(name)) # remove app sudo('rm -rf {0}'.format(os.path.join(app_dir, name))) sudo('rm -rf {0}'.format(os.path.join(ve_dir, name))) # bounce nginx and supervisor sudo('service nginx reload') sudo('supervisorctl reload')