.. _djangoCli: ====================== Command line interface ====================== .. index:: cli, commands, scripts, command line interface You can perform several operations from the command line using the ``fleio`` command, Django commands, BASH scripting and the MariaDB/MySQL console. .. contents:: :local: fleio command ============= Use the ``fleio`` command to manage your installation. For instance, connect with SSH to the machine where Fleio is installed and check for available updates by running: .. code-block:: bash fleio updates Current version: 2022.11.1 No updates found You can ``upgrade`` your Fleio installation, ``start``, ``stop``, ``restart`` or ``backup now``. For a complete list of Fleio commands run: .. code-block:: bash fleio --help As of version 2022.12, you will get the following output: .. code-block:: text Usage: fleio [OPTIONS] COMMAND [ARG...] Installs, manages and upgrades Fleio. If not ran as fleio user, the command will try to 'sudo -u fleio' itself. Make sure your user has 'sudo -u fleio' rights. Commands: backup Backups or restores Fleio database. Options: - now - creates a new database backup, takes a file name as parameter - list - list existing database backups - restore - restores a database backup, takes a file name as parameter bash [command] Launches the Bash inside the utils container with access to all volumes if no command is specified. If command is specified, runs the command instead of bash inside the utils container. By default Bash is ran as fleio user. Use "--root" flag to run Bash as root. django [command] Launches django command with specified arguments inside utils container. build Build Docker Compose services. Run "build" if you have local customizations of docker images and you have made changes. It does nothing if you're using vanilla Fleio images. (runs "docker compose build" command) edit Edit one of Fleio configuration files: settings.py enduser.config.json staff.config.json help Show help. import-domains Receives a csv file from where domains pricing is imported into Fleio. Use "skip-relative-prices" to not override relative prices. Usage example: "cat template.csv | fleio import-domains". info Shows debugging information about settings and environment. Send the output when contacting Fleio support. issue letsencrypt Issues a Let's Encrypt certificate on an existing Fleio installation. Requires that Let's Encrypt was chosen on installation. Useful when DNS entry was not pointing to local IP during installation (and for this reason the certificate could not be issued) and DNS entry was later pointed to local IP. license Reads and updates Fleio license. Use "--refresh" to only refresh your license. list periodic List periodic tasks that are currently running. manage Executes Fleio management commands like "disable-periodic-tasks" or "enable-periodic-tasks" mysql Starts the mysql client on the Fleio database. mysqldump Output a dump of the Fleio database. Any arguments will be passed to the mysqldump command. nuke Stop containers and PERMANENTLY DELETE Fleio database, data volumes and settings. WARNING: you will lose data when using this command. reconfigure Use to change URL of Fleio, including HTTP to/from HTTPS. recreate Recreate the Fleio containers performing a full reset: changes in Docker Compose YAML files, environment variables are reloaded and applies changes from "settings.py". (runs "docker compose down && docker compose up -d" command) resetdb Drop the database tables and recreate them with the SQL query used on install. WARNING: you will lose everything in the Fleio database when using this command. restart Perform a simple Fleio restart without loading any possible changes to Docker Compose YAML files or environment variables. Applies changes from "settings.py". (runs "docker compose stop && docker compose start" commands) shell Opens an interactive Python prompt with Django and models loaded. start Starts Fleio services. status Show Fleio containers status. stop Stops Fleio services. sync Synchronizes OpenStack objects into the Fleio database. updates Checks and lists available Fleio updates. upgrade [version] Upgrade to the latest version or to the specified version . Use "--include-beta" option if you want to consider beta releases when determining "latest". version Shows installed Fleio version. Options: -b, --include-beta Include beta versions when installing latest version or checking for updates. If you specify a version when installing, this flag doesn't make sense and will result in error. -f, --force Skips confirmation on upgrade, nuke or resetdb. Performs upgrade even if version already installed. -r, --refresh Just refresh Fleio license when running license command. --root Option for "fleio bash" command. Runs Bash inside the container as root. --no-backup Skips database backup on upgrade, resetdb or nuke. --no-restart On refresh license will not restart Fleio - note that you have to restart Fleio in order to use the new license. --no-wait On upgrade, restart or recreate, do not wait for current running tasks, terminate them abruptly. .. _django-command: fleio django command ==================== The ``fleio django`` (sub)command gives you access to a whole new set of commands implemented in Python. For a full list of Django commands, run ``fleio django --help``. Below is the output for Fleio 2022.12. Note that ``manage.py`` is used internally, so, to get help on a Django command you run ``fleio django help changepassword``. .. code-block:: text Type 'manage.py help ' for help on a specific subcommand. Available subcommands: [auth] changepassword createsuperuser [authtoken] drf_create_token [billing] refresh_eu_tax_exempt [contenttypes] remove_stale_contenttypes [core] dbbackup feature_enabled fleio_edition fleio_info testdbconn [django] check compilemessages createcachetable dbshell diffsettings dumpdata flush inspectdb loaddata makemessages makemigrations migrate optimizemigration runserver sendtestemail shell showmigrations sqlflush sqlmigrate sqlsequencereset squashmigrations startapp startproject test testserver [django_extensions] admin_generator clean_pyc clear_cache compile_pyc create_command create_jobs create_template_tags delete_squashed_migrations describe_form drop_test_database dumpscript export_emails find_template generate_password generate_secret_key graph_models list_model_info list_signals mail_debug managestate merge_model_instances notes pipchecker print_settings print_user_for_session raise_test_exception reset_db reset_schema runjob runjobs runprofileserver runscript runserver_plus set_default_site set_fake_emails set_fake_passwords shell_plus show_template_tags show_urls sqlcreate sqldiff sqldsn sync_s3 syncdata unreferenced_files update_permissions validate_templates [rest_framework] generateschema [sessions] clearsessions .. _django-shell: Django shell ============ The Django shell is a command line environment where you can run Python commands in the context of the Fleio project, that is the settings are loaded, including things like database connection settings and the Django model classes (used to interact with the database tables). To enter the Django shell run: .. code-block:: bash fleio shell Once you're into the shell, you can can for instance list the Fleio users: .. code-block:: bash >>> AppUser.objects.all() , , , ]> >>> Just press **CTRL + D** to exit the Django shell or type in ``exit()``. Reset user password ------------------- You can change any Fleio user password from the command line, including the admin/staff user password. Connect via SSH to the machine where Fleio and run: .. code-block:: bash fleio django changepassword user_email@address If you can't remember the username either, you can run a query on the Fleio database and see the list of users: .. code-block:: bash fleio mysql MariaDB [fleio]> SELECT email FROM core_appuser; +---------------+ | username | +---------------+ | demo@demo.com | | joen@doe.com | +---------------+ 2 rows in set (0.00 sec) Create staff user ----------------- Create a staff user by running the following command. The new user will have ``is_admin = True``, so she has full staff user privileges. You can later change this from the staff panel.staff .. code-block:: bash fleio django createsuperuser bash command ============ You can interactively browse through Fleio files or create a staff user with commands like .. code-block:: bash fleio bash fleio@utils:~/project$ ls binaries common common_admin enduser fleio fleiodockerutils fleiostaff locale manage.py plugins requirements.txt fleio@utils:~/project$ cat fleio/core/views.py ``fleio bash`` enters the Docker ``utils`` container and you can browse Python source code and minified JavaScript code. Use ``vim`` or ``nano`` editor to easily navigate through source code. Note that editing files here will not affect your Fleio application and any changes are lost on ``fleio restart`` or ``fleio upgrade``. To apply and permanently keep code changes you actually need to change code in other containers (``backend``, ``celery`` etc.) and by using a custom ``Dockerfile``. See :ref:`change-docker-files`. You can run BASH commands non-interactively, directly from the host where Fleio is installed. For instance to list the contents of you ``settings.py`` file: .. code-block:: bash fleio bash cat fleio/fleiosettings/settings.py and even run django commands one-liners that also require the Python virtual environment to be activated: .. code-block:: bash # show Django version echo ". ../env/bin/activate; django version" | fleio bash Creating fleio_utils_run ... done 4.0.7 Database (MariaDB) console ========================== You can authenticate and open the MySQL/MariaDB console with: .. code-block:: bash fleio mysql and you can get a dump of your database with: .. code-block:: bash fleio mysqldump