使用Flask在Python中构建网站
{% assets "common_css" %}{% endassets %}{% assets "common_js" %}{% endassets %}
现在,我们需要在配置webassets环境__init__.py:
from flask_assets import Environmentfrom webassets.loaders import PythonLoader as PythonAssetsLoaderimport assets# ...assets_env = Environment(app)assets_loader = PythonAssetsLoader(assets)for name, bundle in assets_loader.load_bundles().iteritems():assets_env.register(name, bundle)
如你所见,我使用webassets的PythonLoader从assets模块加载bundle,并将每个bundle注册到环境中。
您可以添加ASSETS_DEBUG=True在DevConfig获取调试信息。还有许多其他的配置参数在这里列出。参数名称应以ASSETS_前缀和大写(如Environment.versions变ASSETS_VERSIONS)。
最后,烧瓶资产扩展提供了一些我们需要的中登记的命令行工具manage.py的文件:
from flask_assets import ManageAssetsfrom example import assets_env# ...manager.add_command("assets", ManageAssets(assets_env))
可用的命令在webassets说明文档,但最重要的是rebuild它再生所有包文件:
$ ./manage.py assets rebuild
部署到生产
现在我们有一个完全工作的Flask应用程序,我们需要将它部署在生产机器上。我喜欢用uWSGI+Nginx的+导师对我的设置。
注:本部分假设的Ubuntu作为你的Linux发行版
Nginx充当前端Web服务器,并将提供静态文件。uWSGI充当运行我们的烧瓶应用程序的WSGI服务器。最后,我使用管理程序来管理进程。我喜欢使用Supervisor而不是init.d脚本,因为我经常有其他进程来管理。
$ sudo apt-get install nginx supervisor$ pip install uwsgi
配置在uWSGI应用/etc/uwsgi.ini:
[uwsgi]socket = 127.0.0.1:3031chdir = /path/to/my/appmodule = example:appenv = EXAMPLE_ENV=prod
在Nginx的添加服务器条目/etc/nginx/sites-enabled/example.conf:
server {listen 80;server_name example.com;root /path/to/my/app/example/static;location / {try_files $uri @uwsgi;}location @uwsgi {include uwsgi_params;uwsgi_pass 127.0.0.1:3031;}}
最后,配置主管管理uWSGI过程/etc/supervisor/conf.d/example.conf:
[program:example]command=/usr/local/bin/uwsgi --ini /etc/uwsgi.iniautostart=trueautorestart=truestopsignal=INT
并重新启动一切:
$ sudo /etc/init.d/nginx restart$ sudo /etc/init.d/supervisor reload
更新:在本系列的下一个部分已经公布:越来越大,瓶
2更新:修复的错误,并添加数据库初始化