Python | Working with Azure
Inhaltsverzeichnis
First Step: Hello World Sample
The following steps at borrowed from the quick start tutorial.
Download sample repository
$ git clone https://github.com/Azure-Samples/python-docs-hello-world $ cd python-docs-hello-world
Create virtual environment
$ python3 -m venv venv $ source venv/bin/activate $ pip install -r requirements.txt $ export FLASK_APP=application.py $ flask run
Login zu Azure
$ az login
Deploy to App Service
$ az webapp up --sku F1 -n azure-toolbox-flask-demo -l westeurope webapp azure-toolbox-flask-demo doesn't exist Creating Resource group 'xx_xx_Linux_westeurope' ... Resource group creation complete Creating AppServicePlan 'xx_asp_Linux_westeurope_0' ... Creating webapp 'flask-demo' ... Configuring default logging for the app, if not already enabled Creating zip with contents of dir .../Working-with_Python ... Getting scm site credentials for zip deployment Starting zip deployment. This operation can take a while to complete ... Deployment endpoint responded with status code 202 You can launch the app at http://via-internet-flask-demo.azurewebsites.net { "URL": "http:/azure-toolbox-flask-demo.azurewebsites.net", "appserviceplan": "xx_asp_Linux_westeurope_0", "location": "westeurope", "name": "azure-toolbox--flask-demo", "os": "Linux", "resourcegroup": "xx_xx_Linux_westeurope", "runtime_version": "python|3.7", "runtime_version_detected": "-", "sku": "FREE", "src_path": ".../Working-with_Python" }
Create Django App with PostgreSQL
Installation PostgreSQL on Mac OS
$ brew install postgres ==> Installing dependencies for postgresql: krb5 ==> Installing postgresql dependency: krb5 ... ==> Installing postgresql ... ==> Caveats ==> krb5 krb5 is keg-only, which means it was not symlinked into /usr/local, because macOS already provides this software and installing another version in parallel can cause all kinds of trouble. If you need to have krb5 first in your PATH run: echo 'export PATH="/usr/local/opt/krb5/bin:$PATH"' >> ~/.bash_profile echo 'export PATH="/usr/local/opt/krb5/sbin:$PATH"' >> ~/.bash_profile For compilers to find krb5 you may need to set: export LDFLAGS="-L/usr/local/opt/krb5/lib" export CPPFLAGS="-I/usr/local/opt/krb5/include" For pkg-config to find krb5 you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/krb5/lib/pkgconfig" ==> postgresql To migrate existing data from a previous major version of PostgreSQL run: brew postgresql-upgrade-database To have launchd start postgresql now and restart at login: brew services start postgresql Or, if you don't want/need a background service you can just run: pg_ctl -D /usr/local/var/postgres start
Set user and passwords for postgres database
Create database and user for django app
$ psql postgres psql (12.1) Type "help" for help. postgres=# CREATE DATABASE pollsdb; CREATE DATABASE postgres=# CREATE USER manager WITH PASSWORD '########'; CREATE ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE pollsdb TO manager; GRANT
Download sample repository
$ git clone https://github.com/Azure-Samples/djangoapp.git $ cd djangoapp
Create virtual environment
$ python3 -m venv venv $ source venv/bin/activate $ pip install -r requirements.txt
$ cat env.sh export DBHOST="localhost" export DBUSER="manager" export DBNAME="pollsdb" export DBPASS="supersecretpass" $ . env.sh
$ python manage.py makemigrations No changes detected $ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, polls, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying polls.0001_initial... OK Applying sessions.0001_initial... OK
$ python manage.py createsuperuser Username (leave blank to use 'user'): admin Email address: admin@localhost Password: Password (again): Superuser created successfully.
Run server and acccess web page at http://127.0.0.1:8000/
$ python manage.py runserver Performing system checks... System check identified no issues (0 silenced). January 25, 2020 - 16:42:14 Django version 2.1.2, using settings 'azuresite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. [25/Jan/2020 16:42:26] "GET / HTTP/1.1" 200 111 [25/Jan/2020 16:42:26] "GET /static/polls/style.css HTTP/1.1" 200 27 Not Found: /favicon.ico [25/Jan/2020 16:42:26] "GET /favicon.ico HTTP/1.1" 404 2688
Login zu Azure
$ az login
Deploy to App Service
$ az webapp up --sku F1 -n azure-toolbox-django-demo -l westeurope webapp azure-toolbox-django-demo doesn't exist Creating Resource group 'xx_xx_Linux_westeurope' ... Resource group creation complete Creating AppServicePlan 'xx_asp_Linux_westeurope_0' ... Creating webapp 'flask-demo' ... Configuring default logging for the app, if not already enabled Creating zip with contents of dir .../Working-with_Django ... Getting scm site credentials for zip deployment Starting zip deployment. This operation can take a while to complete ... Deployment endpoint responded with status code 202 You can launch the app at http://via-internet-django-demo.azurewebsites.net { "URL": "http:/azure-toolbox-django-demo.azurewebsites.net", "appserviceplan": "xx_asp_Linux_westeurope_0", "location": "westeurope", "name": "azure-toolbox--django-demo", "os": "Linux", "resourcegroup": "xx_xx_Linux_westeurope", "runtime_version": "python|3.7", "runtime_version_detected": "-", "sku": "FREE", "src_path": ".../Working-with_Django" }
Additional Reading
- Microsoft: Python on Azure
- Microsoft: Python in Visual Studio Code
- Microsoft: Azure für Python-Entwickler
Installation
Here is the documentation from Microsoft.
Mac OS
Install with Homebrew
$ brew update && brew install azure-cli $ az login
Leave a Reply