本文是個人網站易讀中文網自動化部署的腳本實現,如下代碼在ubuntu和debian中測試經過python
因爲網站使用的是python技術,鑑於python的強大,在自自動部署上有fabric這個一個強大的工具,閱讀本文除了略懂python
,fabric
,還須要安裝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
而後網站就開始運行了!
最後附上小站 易讀中文網 你們要是以爲本文對你有一點點做用,轉載的時候請保留小站的連接!謝謝了