1. 环境准备
操作系统centos6.5
python版本2.7
django1.8.2
ansible2.4.1
mysql
redis
mongodb
2. 升级默认的python版本2.6.6到2.7,安装Django1.8.2
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel 这一步不能忘记
查看python的版本 #python -V Python 2.6.6 1.下载Python-2.7.6 #wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz 根据官方资源,可以下载最新版本 2.解压 #tar vxf Python-2.7.6.tgz 3.更改工作目录 #cd Python-2.7.6
yum install gcc -y 4.安装 ./configure --prefix=/usr/local make && make install 5.查看版本信息 #/usr/local/bin/python2.7 -V 6.建立软连接,使系统默认的 python指向 python2.7 #mv /usr/bin/python /usr/bin/python2.6.6 #ln -s /usr/local/bin/python2.7 /usr/bin/python 7.重新检验Python 版本 #python -V 2.7.6 echo 8.解决系统 Python 软链接指向 Python2.7 版本后,因为yum是不兼容 Python 2.7的,所以yum不能正常工作,我们需要指定 yum 的Python版本 #vim /usr/bin/yum 将文件头部的 #!/usr/bin/python 改成 #!/usr/bin/python2.6.6
https://pypi.python.org/pypi/setuptools
wget https://files.pythonhosted.org/packages/e9/93/e53fb79dbf5f4a1407feed7a19ea6d0e83765b354754e003cce7aa12b976/setuptools-28.8.0.zip
unzip setuptools-28.8.0.zip
cd setuptools-28.8.0
python ./setup.py install
错误:RuntimeError: Compression requires the (missing) zlib module
解决方法:
重新编译安装python2.7。
cd ..
3. 下载项目imooc-master
https://github.com/iopsgroup/imoocc
git clone https://github.com/iopsgroup/imoocc.git
wget https://github.com/iopsgroup/imoocc/archive/master.zip
执行命令,安装模块。
pip install -r ./requirements.txt
报错1:
ipaddress
解决方法:
修改requirements.txt文件,把ipaddress删除掉。
报错2:
致命错误:python.h:没有那个文件或目录
解决方法:
yum install python-devel -y
报错3:
You are using pip version 9.0.1, however version 18.1 is available.
You should consider upgrading via the \'pip install --upgrade pip\' command.
解决方法:
pip install --upgrade pip
报错4:
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-cqDmz4/MySQL-python/
解决方法:
https://www.cnblogs.com/dupengcheng/p/8626512.html
yum install mysql-devel -y
4. 安装数据库
1. 安装mysql
https://www.cnblogs.com/renjidong/p/7047396.html
2. 安装mongodb
3. 安装redis
https://www.cnblogs.com/zgaspnet/p/7905407.html
5. 将工程run起来
1. 配置(mysql连接,数据库表结构生成)
/root/imoocc-master/admin/settings/settings.py
修改这个文件的内容:
DATABASES = { \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'NAME\': \'imoocc\', \'USER\': \'imoocc\', \'PASSWORD\': \'imoocccom\', \'HOST\': \'127.0.0.1\', \'PORT\': \'\', \'OPTIONS\': {}, \'init_command\': \'SET storage_engine=INNODB,\' \'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, autocommit=1, names "utf8";\', } }
2. 修改数据库默认的字符集
[client] default-character-set=utf8 [mysqld] character-set-server=utf8 collation-server=utf8_general_ci
3. 登录mysql,创建数据库,创建用户,设置密码。
create database imoocc;
grant all on imoocc.* to imoocc@"localhost" identified by \'zhen.com\';
4. 在mysql数据库中生成数据
进入/root/imoocc-master
python ./manage.py makemigrations
python ./manage.py migrate
5. 使用这个用户测试一下,是否登录mysql,是否有数据。
6. 运行工程
python ./manage.py runserver 0.0.0.0:8000
7. 通过浏览器访问http://192.168.1.108:8000
注意:pycharm修改python版本
pycharm显示行数
pycharm跳转到其他模块
6. 工程的目录结构
1. apps: 前端代码
2. conf: 配置文件
3. extra_apps: 第三方模块
4. logs: 日志
5. scanhosts: 自动化扫描主机
6. scripts:
7. static: 静态文件
8. taskdo: 自动化执行
7. DevOPS工程快速入门
1. python入门引导
1. Ipython
一个基于Python的交互式解释器
自动补全,历史记录,获取对象信息
进入python的目录下,执行下面的命令
./pip install ipython
./ipython
ctrl+r,查找历史命令,查找出的是最近一条信息
? aa 查出定义是数据类型
?? aa 查出的内容更多
2. python基础知识
1. 数值
a=11
2. 字符串
a="yangjianbo"
3. 列表
a=[1,2,3,4]
4. 元组
a=(1,2,3,4)
5. 集合
6. 字典
a={"name":"yangjianbo","age":18}
a["name"] 查看name的值
a["age"] 查看age的值
a.keys() 查看所有键
a.values() 查看所有值
7. 布尔
true
false
8. 变量赋值
赋值符号 =
变量名必须大小写数字英文,不能以数字开头
9. 条件语句
if 条件1:
执行语句
else:
执行语句
if 条件1:
执行语句
elif 条件2:
执行语句
else:
执行语句
10. for循环
for i in range(0,10):
print i
2. python进阶引导
1. python的迭代器
1. 迭代对象
2. 迭代器
可以被next()函数调用,这是2.7的使用方法,3.6使用的__next__()调用
3. 生成器
本质上还是一个迭代器
用关键字yield来返回值
3. Django入门引导
1. 在linux安装Django。
pip install Django==1.8.2
安装完成后,会在/usr/local/bin目录下,出现一个命令:django-admin
2. 新建项目容器
django-admin startproject mydevops
执行完以后会出现mydevops目录,里面有manage.py和mydevops两个文件和目录。
manage.py作用:django工程管理文件
mydevops子目录:
__init__.py
settings.py
urls.py
wsgi.py
3. 新建一个应用app
python ./manage.py startapp scanhosts
执行完成后,会在项目下创建一个目录scanhosts
scanhosts目录:
__init__.py
admin.py
migrations 数据库初始化操作
models.py 数据库模型
tests.py
views.py 视图文件,作为web后台
4. 构建第一个DevOPS工程
1. setting文件配置
1. 第一个注意BASE_DIR
2. 第二个注意INSTALLED_APPS
INSTALLED_APPS = ( \'django_crontab\', \'django.contrib.admin\', \'django.contrib.auth\', \'django.contrib.contenttypes\', \'django.contrib.sessions\', \'django.contrib.messages\', \'django.contrib.staticfiles\', \'detail\', \'users\', \'operations\', \'scanhosts\', \'taskdo\', # \'extra_apps.xadmin\', \'crispy_forms\', )
3. Django默认用的sqlite,修改为mysql。
DATABASES = { \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'NAME\': \'imoocc\', \'USER\': \'imoocc\', \'PASSWORD\': \'zhen.com\', \'HOST\': \'127.0.0.1\', \'PORT\': \'\', \'OPTIONS\': {}, \'init_command\': \'SET storage_engine=INNODB,\' \'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, autocommit=1, names "utf8";\', } }
2. models模型建模
1. 在你的app目录下的models.py文件中,定义表和字段。
class HostLoginifo(models.Model): TYPE_CHIOCE = ( (\'0\', \'kvm\'), (\'1\', \'docker\'), (\'2\', \'vmx\'), ) ip = models.CharField(max_length=64,null=False,verbose_name=u"主机IP信息") ssh_port = models.CharField(max_length=32,null=True,verbose_name=u"ssh登录的端口") ssh_user = models.CharField(max_length=32,null=True,verbose_name=u"ssh登录的用户") ssh_passwd = models.CharField(max_length=64,null=True,verbose_name=u"ssh登录的用户",default="") ssh_rsa = models.CharField(max_length=64,null=True,verbose_name=u"登录使用的私钥",default="") rsa_pass = models.CharField(max_length=64,null=True,verbose_name=u"私钥的秘药",default="") system_ver = models.CharField(max_length=256,null=True,verbose_name=u"操作系统版本",default="") hostname = models.CharField(max_length=256,null=True,verbose_name=u"操作系统主机名",default="") ssh_status = models.IntegerField(verbose_name=u"0-登录失败,1-登录成功",default=0) ssh_type = models.IntegerField(verbose_name=u"1-rsa登录,2-dsa登录,3-普通用户rsa登录,4-docker成功,5-docker无法登录",default=0) mac_address = models.CharField(max_length=512,verbose_name=u"mac地址列表",default="") sn = models.CharField(max_length=256,verbose_name=u"SN-主机的唯一标示",default="") mathine_type = models.CharField(max_length=256,verbose_name=u"机器的类型 1=物理服务器,2=虚拟资产,3=网络设备 0=其他类型(未知)",default="") sn_key = models.CharField(max_length=256,verbose_name=u"唯一设备ID",default="") host_type = models.CharField(max_length=256,verbose_name=u"虚拟机上宿主机的类型",default="",null=True) class Meta: verbose_name = u\'初始化扫描信息表\' verbose_name_plural = verbose_name db_table = "hostloginifo"
2. 在数据库上创建库,用户并授权,修改settings.py文件的数据库连接信息。
3. model模型
1. CharField 字符串字段
2. IntegerField 整数型字段
3. DateTimeField 时间日期字段
4. ForeignKey 定义多对一关系
4. 数据迁移
注意:model.py文件的使用utf-8的编码,否则会有报错SyntaxError Non-ASCII
5. 在工程中执行命令:
python ./manage.py makemigrations
python ./manage.py migrate
6. 确认数据是否迁移成功
1. 登录到数据库中
2.
3. 项目设计
4. 项目开发
4. DevOPS构建之路