使用 Azure 应用托管平台服务, 可以为运维人员省去大量的基础服务器的管理工作, 并且可以和 Azure DevOps, GitHub, BitBucket, Docker Hub, Azure Container Registry 等配合使用实现持续集成和持续部署. 现阶段 Global Azure 也推出了 Azure App Service on Linux 服务, 用户可以托管他们的应用在 Linux 环境下, 目前支持大多数开发语言和版本, 对 Python 的支持处于 public preview 阶段, 接下来我们做一个 Django 项目的操作演示, 探索下这项服务的使用.
1, 首先我们在本地创建一个 Django 项目 hello, 确认运行没问题;
- django-admin startproject hello
- cd hello
- python manage.py makemigrations
- python manage.py migrate
- python manage.py createsuperuser
- python manage.py runserver
2, 然后在项目所在的文件夹下运行:
pip freeze> requirements.txt
这一步是为了生成本项目所依赖的环境清单, 例如
因为应用是以 Docker container 的方式跑在后台的, 所以后面部署至 Azure 的时候容器会自动运行 pip install -r requirements.txt 来安装这个应用的依赖项.
3, 上传至 web App, 运行命令:
az webapp up -n ruchanappdemo
运行完的截图如下:
简单描述一下这个过程, az webapp up 这个命令会自动执行以下几步:
(1), 创建一个默认的资源组 appsvc_rg_Linux_centralus;
(2), 创建一个默认的 App plan appsvc_asp_Linux_centralus;
(3), 创建一个 App, 名称为 ruchanappdemo;
(4), 将项目打包, 从现在的目录下部署到创建的 Web 服务上.
看下这条命令的参数:
目前要求的参数里, 支持了指定的订阅, 产品组正在把 --resource-group 和 --plan 加进去, 方便用户指定特定的资源组和应用服务计划.
上传完成后, 浏览器输入 https://ruchanappdemo.azurewebsites.net 发现报错了, 正常,, 因为我们需要把 ALLOWED_HOSTS 修改下:
ALLOWED_HOSTS = ['ruchanappdemo0.azurewebsites.net']
修改完了重新运行更新:
az webapp up -n ruchanappdemo -l centralus #-l 代表 location
最后检查结果, 可以了.
几点补充说明的:
1, 修改 Web App 的 python 版本:
az webapp config set --resource-group <resource-group-name> --name <App-name> --Linux-fx-version "PYTHON|3.7"
2, 应用的后台默认用 guicorn 做 WSGI 和 http 服务器, 支持 guicorn 的自定义配置, 例如:
gunicorn --bind=0.0.0.0 --timeout 600 --chdir website hello:myapp
如果要用 non-Gunicorn 服务器, 也可以用命令更改:
python3.7 -m aiohttp.Web -H localhost -P 8080 package.module:init_func
3, 每一个应用部署过程, 都会先自动检查有没有 Django 文件, 下来检查有没有 Flask, 如果两个框架都没找到, 就运行一个默认的 App 出来. 如果你想运行一个自定义的 docker image, 可以参考: https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-custom-docker-image
4, 其他一些比如为应用加自定义域名, 查看容器里的日志等, 可以参考: https://docs.microsoft.com/en-us/azure/app-service/containers/how-to-configure-python#customize-startup-command.
最后附上一些其他的参考链接:
- https://docs.microsoft.com/en-us/azure/app-service/containers/quickstart-python;
- https://docs.microsoft.com/en-us/azure/app-service/containers/how-to-configure-python;
- https://docs.microsoft.com/zh-cn/azure/app-service/manage-custom-dns-buy-domain.
来源: http://www.bubuko.com/infodetail-3027712.html