使用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更新:修復的錯誤,并添加數據庫初始化