<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 部署靜態文件 # > 另見 > > `django.contrib.staticfiles` 的用法簡介,請參見[管理靜態文件(CSS、images)](http://python.usyiyi.cn/django/howto/static-files/index.html)。 ## 在線上環境部署靜態文件 ## 放置靜態文件到線上環境的基本步驟很簡單:當靜態文件改變時,運行`collectstatic` 命令,然后安排將收集好的靜態文件的目錄(`STATIC_ROOT`) 搬到靜態文件服務器上。取決于`STATICFILES_STORAGE`,這些文件可能需要手工移動到一個新的位置或者`Storage` 類的`post_process` 方法可以幫你。 當然,與所有的部署任務一樣,魔鬼隱藏在細節中。每個線上環境的建立都會有所不同,所以你需要調整基本的綱要以適應你的需求。下面是一些常見的方法,可能有所幫助。 ### 網站和靜態文件位于同一臺服務器上 ### 如果你的靜態文件和網站位于同一臺服務器,流程可能像是這樣: + 將你的代碼推送到部署的服務器上。 + 在這臺服務器上,運行`collectstatic` 來收集所有的靜態文件到`STATIC_ROOT`。 + 配置Web 服務器來托管URL` STATIC_URL`下的`STATIC_ROOT`。 例如,這是[如何使用Apache 和mod_wsgi 來完成它](http://python.usyiyi.cn/django/howto/deployment/wsgi/modwsgi.html#serving-files)。 你可能想自動化這個過程,特別是如果你有多臺Web 服務器。有許多種方法來完成這個自動化,但是許多Django 開發人員喜歡 [Fabric](http://fabfile.org/)。 在一下的小節中,我們將演示一些示例的Fabric 腳本來自動化不同選擇的文件部署。Fabric 腳本的語法相當簡單,但這里不會講述;參見[Fabric 的文檔](http://docs.fabfile.org/) 以獲得其語法的完整解釋。 所以,一個部署靜態文件來多臺Web 服務器上的Fabric 腳本大概會是: ``` from fabric.api import * # Hosts to deploy onto env.hosts = ['www1.example.com', 'www2.example.com'] # Where your project code lives on the server env.project_root = '/home/www/myproject' def deploy_static(): with cd(env.project_root): run('./manage.py collectstatic -v0 --noinput') ``` ### 靜態文件位于一臺專門的服務器上 ## 大部分大型的Django 站點都使用一臺單獨的Web 服務器來存放靜態文件 —— 例如一臺不運行Django 的服務器。這種服務器通常運行一種不同類型的服務器 —— 更快但是功能很少。一些常見的選擇有: + [Nginx](http://wiki.nginx.org/Main) + 裁剪版的[Apache](http://httpd.apache.org/) 配置這些服務器在這篇文檔范圍之外;查看每種服務器各自的文檔以獲得說明。 既然你的靜態文件服務器不會允許Django,你將需要修改的部署策略,大概會是這樣: + 當靜態文件改變時,在本地運行`collectstatic`。 + 將你本地的`STATIC_ROOT` 推送到靜態文件服務器相應的目錄中。在這一步,常見的選擇[rsync](https://rsync.samba.org/) ,因為它只傳輸靜態文件改變的部分。 下面是Fabric 腳本大概的樣子: ``` from fabric.api import * from fabric.contrib import project # Where the static files get collected locally. Your STATIC_ROOT setting. env.local_static_root = '/tmp/static' # Where the static files should go remotely env.remote_static_root = '/home/www/static.example.com' @roles('static') def deploy_static(): local('./manage.py collectstatic') project.rsync_project( remote_dir = env.remote_static_root, local_dir = env.local_static_root, delete = True ) ``` ### 靜態文件位于一個云服務或CDN 上 ### 兩位一個常見的策略是放置靜態文檔到一個云存儲提供商比如亞馬遜的S3 和/或一個CDN(Content Delivery Network)上。這讓你可以忽略保存靜態文件的問題,并且通常可以加快網頁的加載(特別是使用CDN 的時候)。 當使用這些服務時,除了不是使用rsync 傳輸你的靜態文件到服務器上而是到存儲提供商或CDN 上之外,基本的工作流程和上面的差不多。 有許多方式可以實現它,但是如果提供商具有API,那么自定義的文件存儲后端 將使得這個過程相當簡單。如果你已經寫好或者正在使用第三方的自定義存儲后端,你可以通過設置`STATICFILES_STORAGE` 來告訴`collectstatic` 來使用它。 例如,如果你已經在`myproject.storage.S3Storage` 中寫好一個S3 存儲的后端,你可以這樣使用它: ``` STATICFILES_STORAGE = 'myproject.storage.S3Storage' ``` 一旦完成這個,你所要做的就是運行`collectstatic`,然后你的靜態文件將被你的存儲后端推送到S3 上。如果以后你需要切換到一個不同的存儲提供商,你只需簡單地修改你的`STATICFILES_STORAGE` 設置。 關于如何編寫這些后端的細節,請參見[編寫一個自定義的存儲系統](http://python.usyiyi.cn/django/howto/custom-file-storage.html)。有第三方的應用提供存儲后端,它們支持許多常見的文件存儲API。一個不錯的入口是[djangopackages.com 的概覽](https://www.djangopackages.com/grids/g/storage-backends/)。 ## 了解更多 ## 關于`django.contrib.staticfiles` 中包含的設置、命令、模板標簽和其它細節,參見[staticfiles 參考](http://python.usyiyi.cn/django/ref/contrib/staticfiles.html)。 > 譯者:[Django 文檔協作翻譯小組](http://python.usyiyi.cn/django/index.html),原文:[Deploying static files](https://docs.djangoproject.com/en/1.8/howto/static-files/deployment/)。 > > 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 協議發布,轉載請保留作者署名和文章出處。 > > [Django 文檔協作翻譯小組](http://python.usyiyi.cn/django/index.html)人手緊缺,有興趣的朋友可以加入我們,完全公益性質。交流群:467338606。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看