第四周作业
1、查找/var目录下不属于root、lp、gdm的所有文件
find /var ! \( -user root -o -user lp -o -user gdm \)
2、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)
思路:除了字母的(不止一个)的字符替换成换行符,进行排序并且寻找出现次数
(1)cat /etc/init.d/functions | sed -r 's@[^[:alpha:]]+@\n@g' | sort | uniq -c | sort -n
(2)grep -Eo "[[:alpha:]]+" /etc/init.d/functions | sort | uniq -c
3、利用sed 取出ifconfig命令中本机的IPv4地址总结
思路:取出inet对应的行——>替换中间的IP地址来后向引用来替换
ifconfig ens33 | sed -n '/inet\b/p'|sed -r 's@.*inet\>(.*)\<netmask.*$@\1@'
4、总结yum的配置和使用,包括yum仓库的创建
yum (Yellowdog Update Modifier) 程序包管理器的前端工具
是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包.
yum客户端安装软件等操作实现原理:
1、配置文件:指定各可用的yum仓库;
2、缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地;
3、分析元数据:根据具体操作请求完成元数据分析, 可能包括检查依赖关系、文件列表等信息;
4、执行具体操作:
客户端配置文件指定对应服务器访问方式如下几种:
ftp ftp://server/path/to/repo
http http://server/path/to/repo
nfs nfs://server/nfs_path
file file:///path/to/repository
要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中:
主配置 /etc/yum.conf
仓库配置 /etc/yum.repos.d/*.repo
配置文件格式:由两段组成,类似windows的ini配置文件
[main] :主配置段
[repo] :仓库配置段
配置文件格式,文件 存放于/etc/yum.repos.d/ 并以repo结尾的文件
[repo_id]
name=repo_name 显示的名称,可以是任意的字符串
baseurl=url 软件路径可以是网络上的,也可以是本地的
gpgcheck={0|1} 是否启用包来源合法性验证
enabled={0|1} 是否启用仓库
gpgkey=公钥文件(可以在本地,也可是服务器端路径)
cost=1000 仓库开销,用来做优先级,默认不指定就是1000 数值越小,优先级越大
示例以光盘为rpm源配置仓库
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
vim /etc/yum.repos.d/cdrom.repo
[base-cdrom]
name=cdrom_repo
baseurl=file:///mnt/cdrom/ # 一般为repodata所在的目录,这里面有rpm包的元数据
gpgcheck=1
enabled=1
gpgkey=file://mnt/cdrom/RPM-GPG-KEY-CentOS-6
保存退出,yum repolist 可以查看是否配置成功
yum 命令使用:
格式:
yum的各命令:
安装
install package_name ...: 安装指定的程序包
reinstall package_name ...: 重新安装指定的程序包
groupinstall "group_name":安装指定的包组
# yum install httpd
查找
repolist [all|enabled|disabled]: 列出所有可用yum repo
list [all|installed|available]: 列出rpm包
info package_name: 列出包的描述信息
grouplist: 列出所有包组
groupinfo "package_group_name":显示包组信息
升级
check-update: 检查可升级的包
update package_name ...: 升级指定的程序包
如现在的版本:x-1.2.1, x-1.2.2, x-1.2.3
要升级到指定版本需指定版本号:yum update x-1.2.2
降级 downgrade package_name:
删除
erase|remove package_name ...: 删除己安装的包,会连依赖的包一起删除
groupremove "group_name": 卸载指定的包组
查询
whatprovides|provides /path/to/somefile: 查询某文件是由哪个包安装生成的
# yum provides */ifcofnig # 这样可以查询ifconfig这个命令由哪个包提供的
清除元仓库数据
clean [all|packages|metadata|expire-cache|rpmdb|plugins]: 清理缓存
安装本地包:(yum 安装本地的rpm包依旧会检查软件来源合法性的,无法通过的不予安装。需要安装则要禁止检查。)
install /path/to/package_file
手动禁止检查来源及完整性:--nogpgcheck
yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck
yum配置文件中可用的四个宏:
$releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号,如RedHat 6.5,则替换为6;
$arch: 系统架构
$basearch: 系统基本架构,如i686,i586等的基本架构为i386;
$YUM0-9: 在系统中定义的环境变量,可以在yum中使用;
获取当前系统相应宏替换结果的办法:
# python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import yum,pprint
>>> yb = yum.YumBase()
>>> pprint.pprint(yb.conf.yumvar,width=1)
Loaded plugins: fastestmirror, refresh-packagekit
{'arch': 'ia32e',
'basearch': 'x86_64',
'releasever': '6',
'uuid': 'ea249181-2f82-4c40-8c42-d51b3fce319a'}
>>> quit()
三个跟开发相关的包组:
Desktop Platform Development:有图形程序时需安装此组;
Server Platform Development
Development Tools
5、编写系统初始化脚本reset.sh。包括别名,提示符颜色,yum仓库配置文件
1 [root@localhost data]# bash resert.sh
2 [root@localhost data]# cat resert.sh
3 #!/bin/bash
4 #
5 # 初始化系统脚本
6 echo "alias net='cd /etc/sysconfig/network-scripts/'" >> /root/.bashrc
7 echo "PS1='\[\e[31m\][\u\]\e[0m\]\[\e[1;33m\]@\[\e[0m\]\e[36m\]\W\t\]]\e[0m\]'" >>/etc/profile.d/env.sh
8 touch /etc/yum.repos.d/base.repo
9 echo "[base]">>/etc/yum.repos.d/base.repo
10 echo "name=base">>/etc/yum.repos.d/base.repo
11 echo "baseurl=https://mirrors.aliyun.com/centos/$releasever/os/x86_64/">>/etc/yum.repos.d/base.repo
12 echo "gpgcheck=0">>/etc/yum.repos.d/base.repo
13 [root@localhost data]#
14 [root@localhost data]# reboot
15 Connection closing...Socket close.
16
17 Connection closed by foreign host.
18
19 Disconnected from remote host(Centos 7-CN-ZH root - 副本) at 00:49:00.
20
21 Type `help' to learn how to use Xshell prompt.
22 [C:\~]$
23
24 Connecting to 192.168.47.128:22...
25 Connection established.
26 To escape to local shell, press 'Ctrl+Alt+]'.
27
28 Last login: Sat Apr 13 23:04:24 2019 from 192.168.47.1
29 [root@~00:49:54]
6、安装tree,ftp,lftp,telnet等包
[root@yum.repos.d01:04:09]yum -y install tree ftp lftp telnet
7、在CentOS7上编译安装apache2.4源码包,并启动此服务
1) 安装一些依赖包
yum install wget gcc pcre-devel openssl-devel
2) 下载apache,apr和apr-util
apache 2.4版本使用apache 2.4.12,apr-1.5.2和 apr-util-1.5.4
cd ~
mkdir sources
cd sources
wget http://ftp.piotrkosoft.net/pub/mirrors/ftp.apache.org//httpd/httpd-2.4.12.tar.bz2
wget http://ftp.ps.pl/pub/apache//apr/apr-1.5.2.tar.bz2
wget http://ftp.ps.pl/pub/apache//apr/apr-util-1.5.4.tar.bz2
tar -xvf httpd-2.4.12.tar.bz2
tar -xvf apr-1.5.2.tar.bz2
tar -xvf apr-util-1.5.4.tar.bz2
cp -r apr-1.5.2 httpd-2.4.12/srclib/apr
cp -r apr-util-1.5.4 httpd-2.4.12/srclib/apr-util
cd httpd-2.4.12
./configure --prefix=/etc/apache2 --enable-ssl --enable-so --with-included-apr --with-mpm=event
make
make install
需要注意的是由于./configure中的–prefix=/etc/apache2,apache将安装在/etc/apache2,同样的会启用ssl支持,so(动态模块支持),包括apr和event mpm。
3) 启动前一些基本的配置
需要确保/etc/apache2的所有者为apache用户:
chown -R apache.root /etc/apache2
需要对httpd.conf作一些更改
cd /etc/apache2/conf
cp httpd.conf httpd.conf.bak
vi httpd.conf
在文件内,设置用户和用户组为apache
User apache
Group apache
设置一个ServerName,这可以避免apache启动时的warning
ServerName example.com
取消Server-pool管理的注释
Include conf/extra/httpd-mpm.conf
在上面的行添加如下行:
Include conf/vhosts/*.conf
也取消server默认配置的注释
Include conf/extra/httpd-default.conf
4) 启动apache
检查启用的模板
/etc/apache2/bin/apachectl -M
检查配置文件是否有错误
/etc/apache2/bin/apachectl -t
重启apache server
/etc/apache2/bin/apachectl -k graceful
确保apache开机启动
echo '/etc/apache2/bin/apachectl start' >> /etc/rc.local
在centos 7开机80 443端口
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --reload

浙公网安备 33010602011771号