使用fabric部署django应用
使用fabric部署django应用
本文是我的网站易读中文网自动化部署的脚本实现,以下代码在ubuntu和debian中测试通过
由于网站使用的是python技术,鉴于python的强大,在自自动部署上有fabric这个一个强大的工具,阅读本文除了略懂python
,fabric
,还需要安装fabtools,安装这个是为了简化一些基本的操作(为不太懂linux的人找的借口而已),里面封装了非常多的命令。下面我一步一步的将我网站的自动部署过程写下来
- 首先是fabric文件中基本的配置,拿到一个vps以后,会有一个默认的root账户,大家在部署网站的时候尽量不要使用root账户,不太安全,万一误删了文件怎么办!所以首先得创建一个用户,最好具有sudo权限
from fabric.api import * from fabtools import require #创建用户的代码 user = xxx password = xxx def add_user(): require.users.user(user, password) require.users.sudoer(user)
使用下面代码运行函数
fab -H [email protected]:host add_user
这样就创建了一个具有sudo 权限的用户,创建完用户后,这个root账号和密码以后就不用使用了(除了你还想创建新的用户),直接使用创建好的这个user就可以了,然后在脚本里配置一个role,这样每次远程操作的时候不需要输入账号了密码了
env.roledefs = { "user": "用户名@ip:port", } env.passwords = { "用户名@ip:port":"密码" }
配置好后,下面会用到
- 创建了用户后,安装需要的软件
@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‘),有了这个以后,安装软件的命令就变成了
fab install_deb
这样就不需要输入账号密码了,减少了操作键盘的时间,所以以后每个函数都会带上这两个装饰器
- 配置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
然后网站就开始运行了!
最后附上小站 易读中文网
大家要是觉得本文对你有一点点作用,转载的时候请保留小站的链接!谢谢了
时间: 2024-11-05 11:48:57