fabric自動化部署django

使用fabric部署django應用


使用fabric部署django應用

本文是個人網站易讀中文網自動化部署的腳本實現,如下代碼在ubuntu和debian中測試經過python

因爲網站使用的是python技術,鑑於python的強大,在自自動部署上有fabric這個一個強大的工具,閱讀本文除了略懂pythonfabric,還須要安裝fabtools,安裝這個是爲了簡化一些基本的操做(爲不太懂linux的人找的藉口而已),裏面封裝了很是多的命令。下面我一步一步的將我網站的自動部署過程寫下來mysql

  • 首先是fabric文件中基本的配置,拿到一個vps之後,會有一個默認的root帳戶,你們在部署網站的時候儘可能不要使用root帳戶,不太安全,萬一誤刪了文件怎麼辦!因此首先得建立一個用戶,最好具備sudo權限linux

    from fabric.api import *
    from fabtools import require
    #建立用戶的代碼
    user = xxx
    password = xxx
    def add_user():
        require.users.user(user, password)
        require.users.sudoer(user)

     

    使用下面代碼運行函數nginx

    fab -H root@ip:host add_usergit

    這樣就建立了一個具備sudo 權限的用戶,建立完用戶後,這個root帳號和密碼之後就不用使用了(除了你還想建立新的用戶),直接使用建立好的這個user就能夠了,而後在腳本里配置一個role,這樣每次遠程操做的時候不須要輸入帳號了密碼了sql

    env.roledefs = {
            "user": "用戶名@ip:port",
            }
    env.passwords = {
            "用戶名@ip:port":"密碼"
            }

     

    配置好後,下面會用到數據庫

  • 建立了用戶後,安裝須要的軟件django

    @task
    @roles("user")
    def install_deb():
        require.deb.packages([
            "python-dev",
            "python-lxml",
            "python-imaging",
            "git",
            "libffi-dev",
            "libxml2",
            "python-libxslt1",
            "python-libxml2",
            "libxslt1-dev",
            "libxml2-dev",
            "libmysqlclient-dev",
            "libjpeg-dev",
            "libfreetype6-dev"
        ])

     

    你們看到這個函數用了兩個裝飾器,一個是task,這個每一個fab函數都須要,另外一個是roles('user'),有了這個之後,安裝軟件的命令就變成了ubuntu

    fab install_debapi

    這樣就不須要輸入帳號密碼了,減小了操做鍵盤的時間,因此之後每一個函數都會帶上這兩個裝飾器

  • 配置mysql

    def create_mysql():
        require.mysql.server(password=mysql_root_pw)
        with settings(mysql_user=mysql_root, mysql_password=mysql_root_pw):
            require.mysql.user(mysql_user, mysql_pw)
            require.mysql.database(mysql_db, owner=mysql_user)

     

    裏面的那些變量變一下就能夠用

先寫這麼多吧!今天不想寫了,後面還有一些就是建立python環境,git code,創建數據庫,配置static file,配置gunicorn,supervisor,nginx
而後網站就開始運行了!
最後附上小站 易讀中文網 你們要是以爲本文對你有一點點做用,轉載的時候請保留小站的連接!謝謝了

相關文章
相關標籤/搜索