本文是个人网站易读中文网自动化部署的脚本实现,如下代码在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
而后网站就开始运行了!
最后附上小站 易读中文网 你们要是以为本文对你有一点点做用,转载的时候请保留小站的连接!谢谢了