本书前面讲到,Yum软件仓库的作用是为了进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术。可以把Yum想象成是一个硕大的软件仓库,里面保存有几乎所有常用的工具,而且只需要说出所需的软件包名称,系统就会自动为您搞定一切。
既然要使用Yum软件仓库,就要先把它搭建起来,然后将其配置规则确定好才行。鉴于第6章才会讲解Linux的存储结构和设备挂载操作,所以我们当前还是将重心放到Vim编辑器的学习上。如果遇到看不懂的参数也不要紧,后面章节会单独讲解。搭建并配置Yum软件仓库的大致步骤如下所示。
第1步:进入到/etc/yum.repos.d/目录中(因为该目录存放着Yum软件仓库的配置文件)。
第2步:使用Vim编辑器创建一个名为rhel7.repo的新配置文件(文件名称可随意,但后缀必须为.repo),逐项写入下面加粗的配置参数并保存退出(不要写后面的中文注释)。
一个合理的repo文件应该类似如下:
[rhel-media]name= IDC.NETlinuxbaseurl = file:///media/cdromenable = 1gpgcheck =0
在rhel8版本中,系统分为两个仓库,分别是BaseOS和AppStream,所以一个合理的rhel应该如下:
[BaseOS]name=BaseOSbaseurl=file:///media/cdrom/BaseOSenabled=1gpgcheck=0[AppStream]name=AppStreambaseurl=file:///media/cdrom/AppStreamenabled=1gpgcheck=0
第3步:按配置参数的路径挂载光盘,并把光盘挂载信息写入到/etc/fstab文件中。
[root@linuxprobe yum.repos.d]# mkdir -p /media/cdrom[root@linuxprobe yum.repos.d]# mount /dev/cdrom /media/cdrommount: /media/cdrom: WARNING: device write-protected, mounted read-only.[root@linuxprobe yum.repos.d]# vim /etc/fstab/dev/cdrom /media/cdrom iso9660 defaults 0 0
第4步:使用“yum install httpd -y”命令检查Yum软件仓库是否已经可用。

进入/etc/yum.repos.d目录中后创建Yum配置文件:
[root@linuxprobe ~]# cd /etc/yum.repos.d/[root@linuxprobe yum.repos.d]# vim rhel7.repo[rhel7]name=rhel7baseurl=file:///media/cdromenabled=1gpgcheck=0
创建挂载点后进行挂载操作,并设置成开机自动挂载(详见第6章)。尝试使用Yum软件仓库来安装Web服务,出现Complete!则代表配置正确:
[root@linuxprobe yum.repos.d]# mkdir -p /media/cdrom[root@linuxprobe yum.repos.d]# mount /dev/cdrom /media/cdrommount: /dev/sr0 is write-protected, mounting read-only[root@linuxprobe yum.repos.d]# vim /etc/fstab/dev/cdrom /media/cdrom iso9660 defaults 0 0[root@linuxprobe ~]# yum install httpdLoaded plugins: langpacks, product-id, subscription-manager………………省略部分输出信息………………Dependencies Resolved================================================================================Package Arch Version Repository Size================================================================================Installing:httpd x86_64 2.4.6-17.el7 rhel 1.2 MInstalling for dependencies:apr x86_64 1.4.8-3.el7 rhel 103 kapr-util x86_64 1.5.2-6.el7 rhel 92 khttpd-tools x86_64 2.4.6-17.el7 rhel 77 kmailcap noarch 2.1.41-2.el7 rhel 31 kTransaction Summary================================================================================Install 1 package (+4 Dependent packages)Total download size: 1.5 MInstalled size: 4.3 MIs this ok [y/d/N]: yDownloading packages:--------------------------------------------------------------------------------………………省略部分输出信息………………Complete!
啤酒的酿制过程
啤酒制造方法与过程特点…餐厅内啤酒的酿制方法是严格遵循德国传统古老的酿酒法令所酿制,纯自然不经过滤正,因如此而使得鲜酿啤酒拥有独特的口感顺口而舒畅,保留了啤酒原有的特色风味。 绝对不加任何人工添加物。 原料…水:对啤酒而言为最重要的成分,它必须是纯净无色无味麦芽:啤酒麦芽分大麦小麦,餐厅里的麦芽主要来自中国北方啤酒花:是啤酒味道的主要来源,全部由德国进口而来酵母:是一种真菌,它能使麦芽汁内的糖分解成酒精和二氧化碳,酵母由德国进口而来制造方式…酿制啤酒共分为六个步骤,大约需历时28个工作天来完成啤酒酿造过程分为:1. 粉碎糖化Mashing ---把麦芽磨成粉、糖化后的麦汁由输送管 输送至过滤锅2.过滤Lautering ---将糖化后之麦汁送至右边煮酒槽过滤,将麦汁与麦糟分离3. 煮沸及添加啤酒花Boiling ---传送至煮酒槽内用100度水温蒸煮大约70分钟,加入啤酒花之后,蒸煮到剩余1000L之麦汁为止再顺着输送管输送到发酵房4. 冷却Whirlpool ---麦汁会经由此冷却器将温度降至10-12 C后引入发酵桶等待发酵5.发酵Fermentation ---麦汁经过充分的冷却后引入发酵桶,加入10- 15L之酵母进行发酵,大约需6天左右来完成发酵,在此步骤最后麦芽里的糖会经由酵母转化成酒精 (酵母加麦汁 = 啤酒)6.熟化贮存Aging storage ---在啤酒成熟之前熟化贮存为必要步骤,啤酒熟化大约需要 3个星期在摄氏 0 度的贮酒桶进行,啤酒的色泽、独特的风味都会在此步骤发展形成等待啤酒成熟后,啤酒直接经由啤酒管输送至贮酒桶或桶装啤酒桶内提供消费者使用口味…鲜酿小麦啤 :是一种带有纯麦芽酿造的啤酒、使用丰富的啤酒花、其口感在辛涩中蕴藏着温和的奶油香味(非常适合女性饮用)鲜酿黄啤 :是一种德国南部风味之啤酒,由多种烘烤过的麦芽酿制而成、故此颜色较深而且口味浓郁、其豪放的酒性充满活力鲜酿黑啤 :也是一种德国南部风味之啤酒,唯一由顶部发酵酿制而成的啤酒、气泡丰富有着“香槟啤酒”之美誉、其口感略酸并具有丁香及香蕉的芬芳
linux的php安装目录在哪
1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。 2、在linux命令行下输入shell指令:find / -name *php*。 3、键盘按“回车键”运行shell指令,此时会看到php安装目录在/usr/local/lib/php。
如何使用python连接数据库,插入并查询数据
你可以访问Python数据库接口及API查看详细的支持数据库列表。 不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。 DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。 Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。 Python DB-API使用流程:引入 API 模块。 获取与数据库的连接。 执行SQL语句和存储过程。 关闭数据库连接。 什么是MySQLdb?MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。 如何安装MySQLdb?为了用DB-API编写MySQL脚本,必须确保已经安装了MySQL。 复制以下代码,并执行:#!/usr/bin/python# -*- coding: UTF-8 -*-import MySQLdb如果执行后的输出结果如下所示,意味着你没有安装 MySQLdb 模块:Traceback (most recent call last):File , line 3, in import MySQLdb ImportError: No module named MySQLdb 安装MySQLdb,请访问 ,(Linux平台可以访问:)从这里可选择适合您的平台的安装包,分为预编译的二进制文件和源代码安装包。 如果您选择二进制文件发行版本的话,安装过程基本安装提示即可完成。 如果从源代码进行安装的话,则需要切换到MySQLdb发行版本的顶级目录,并键入下列命令: $ gunzip $ tar -xvf $ cd MySQL-python-1.2.2 $ python build $ python install 注意:请确保您有root权限来安装上述模块。 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。 连接数据库TESTDB使用的用户名为 testuser ,密码为 test123,你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。 在你的机子上已经安装了 Python MySQLdb 模块。 如果您对sql语句不熟悉,可以访问我们的 SQL基础教程 实例: 以下实例链接Mysql的TESTDB数据库: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # 使用execute方法执行SQL语句 (SELECT VERSION()) # 使用 fetchone() 方法获取一条数据库。 data = () print Database version : %s % data # 关闭数据库连接 () 执行以上脚本输出结果如下: Database version : 5.0.45 创建数据库表 如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # 如果数据表已经存在使用 execute() 方法删除表。 (DROP TABLE IF EXISTS EMPLOYEE) # 创建数据表SQL语句 sql = CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT ) (sql) # 关闭数据库连接 () 数据库插入操作 以下实例使用执行 SQL INSERT 语句向表 EMPLOYEE 插入记录: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 插入语句 sql = INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (Mac, Mohan, 20, M, 2000) try: # 执行sql语句 (sql) # 提交到数据库执行 () except: # Rollback in case there is any error () # 关闭数据库连接 () 以上例子也可以写成如下形式: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 插入语句 sql = INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES (%s, %s, %d, %c, %d ) % \ (Mac, Mohan, 20, M, 2000) try: # 执行sql语句 (sql) # 提交到数据库执行 () except: # 发生错误时回滚 () # 关闭数据库连接 () 实例: 以下代码使用变量向SQL语句中传递参数: .................................. user_id = test123 password = password (insert into Login values(%s, %s) % \ (user_id, password)) .................................. 数据库查询操作 Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。 fetchone(): 该方法获取下一个查询结果集。 结果集是一个对象 fetchall():接收全部的返回结果行. rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。 实例: 查询EMPLOYEE表中salary(工资)字段大于1000的所有数据: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 查询语句 sql = SELECT * FROM EMPLOYEE \ WHERE INCOME > %d % (1000) try: # 执行SQL语句 (sql) # 获取所有记录列表 results = () for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print fname=%s,lname=%s,age=%d,sex=%s,income=%d % \ (fname, lname, age, sex, income ) except: print Error: unable to fecth data # 关闭数据库连接 () 以上脚本执行结果如下: fname=Mac, lname=Mohan, age=20, sex=M, income=2000 数据库更新操作 更新操作用于更新数据表的的数据,以下实例将 TESTDB表中的 SEX 字段全部修改为 M,AGE 字段递增1: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 更新语句 sql = UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = %c % (M) try: # 执行SQL语句 (sql) # 提交到数据库执行 () except: # 发生错误时回滚 () # 关闭数据库连接 () 删除操作 删除操作用于删除数据表中的数据,以下实例演示了删除数据表 EMPLOYEE 中 AGE 大于 20 的所有数据: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = (localhost,testuser,test123,TESTDB ) # 使用cursor()方法获取操作游标 cursor = () # SQL 删除语句 sql = DELETE FROM EMPLOYEE WHERE AGE > %d % (20) try: # 执行SQL语句 (sql) # 提交修改 () except: # 发生错误时回滚 () # 关闭连接 () 执行事务 事务机制可以确保数据一致性。 事务应该具有4个属性:原子性、一致性、隔离性、持久性。 这四个属性通常称为ACID特性。 原子性(atomicity)。 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。 事务必须是使数据库从一个一致性状态变到另一个一致性状态。 一致性与原子性是密切相关的。 隔离性(isolation)。 一个事务的执行不能被其他事务干扰。 即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability)。 持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 接下来的其他操作或故障不应该对其有任何影响。 Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。
发表评论