编译安装httpd,nginx,mysql,yum命令详解

库文件(.so):动态加载的一些库文件
完整性校验

  • md5sum校验工具:
    • 计算MD5校验和,并与官方提供的值相比较,判断是否一致。

小结:编译安装

1.编译安装的流程

  • # yum install gcc gcc-c++ ncurses-devel
  • tar xf :解压
  • ./configure:配置生成makefile文件(编译前的配置工作(安装目录、哪些功能开,哪些功能关等))
  • make :编译,生成可执行的二进制文件
  • make install :安装编译好的程序,复制二进制文件到系统,配置应用环境。

2.编译安装的优势?

  • ①获得最新的软件版本;
  • ②安装时,可以自己灵活定制功能。

3.编译安装的卸载和升级

  • 卸载:删除目录即可
  • 升级:patch打补丁包;或直接安装新版本

4.源码包一般都是从官方网站下载,或搜索引擎解决

http://sourceforge.net/

5.两个编译器:gcc、gcc-c++、(cmake等)

6.编译安装软件也有依赖关系。

7.安装了httpd、nginx、mysql

8.企业里使用编译安装比较多

9.不会装的时候:看源码包的README和INSTALL或者官方网站的安装文档

10.删除了某个软件的部分文件,可以通过重新安装软件得到。但是有风险!得到的不是原来的文件了。建议:从其他机器里拷贝,修改。

实验

不小心删除了/etc/inittab,怎么处理?
答:

  • 1.从别人那里ssh一个过来。或者自己vi一个….(id:3:initdefault:)
  • 2.重新装一个:
#rpm -qf /etc/inittab --》看从哪里装来的
#rpm -ivh --force 具体包名 --》强制安装

例子:编译安装httpd

1.安装支持C/C++程序语言的编译工具:gcc、gcc-c++、make
2.下载源代码安装包文件(源码包)(官方或者ftp服务器)
make clean 不是必须使用,用途:清理以前编译的遗留文件。
3.步骤:

  • ①tar解包到指定的目录:tar -xzvf 包名 -C 指定目录
    • xjvf —->.tar.bz2
    • xzvf —>.tar.gz
    • xJvf —>.tar.xz
      (configure–》用来接受用户指定的条件的:安装目录,哪些功能开,哪些功能不开等等)
  • ②./configure 配置生成Makefile文件(有时需要接路径!!)
  • ③make 编译–》生成可执行的二进制文件
  • ④make install –》安装—》复制二进制文件到系统,配置应用环境。
  • ⑤安装好了之后,cd /usr/local/web,ls

会发现多了很多目录:
这里写图片描述

#cd bin
#service httpd stop    
--》httpd服务占用了80端口,而apache也是80端口
--》启动apache(必须绝对路径!!)
#lsof -i:80 

这里写图片描述

  • ⑥最后,打开真实机的浏览器,输入虚拟机的IP地址,显示“It works!”,成功!
    这里写图片描述

安装httpd文件出现的问题及解决方法

1.提示错误:
checking for APR… no
configure: error: APR not found. Please read the documentation.
–》提示缺少APR包,然后就先编译安装APR包即可

#rpm -qi apr 得到apr的官方网站,下载即可

2.然后下载,编译安装apr文件和apr-util文件;
其中,./configure apr文件时,如果报错,就指定安装目录即可:

./configure --prefix=/usr/local/apr

3.安装apr-util文件,会报错:不知道apr文件安装在哪,执行下面语句即可:

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

4.回到httpd的目录,重新configure,报错:APR-util not found.解决方法:

./configure --prefix=/usr/local/web --enable-cache -enable-http2 --with-apr-util=/usr/local/apr-util

5.执行上面语句后,重新报错:error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

6.编译安装pcre-8.21.tar.bz2包,不指定路径。采用默认路径。
7.重新进入httpd-2.4.23目录,重新执行下面的命令来编译安装:

./configure --prefix=/usr/local/web --enable-cache -enable-http2 --with-apr-util=/usr/local/apr-util

又报错:error: mod_http2 has been requested but can not be built due to prerequisite failures
错误是因为:加了http2功能,去掉即可。即:
./configure –prefix=/usr/local/web –with-apr-util=/usr/local/apr-util

8.执行上面功能后,configure成功。

编译安装注意事项:

  • 每一步骤成功执行是下一个步骤的基础。

TAR包升级:

  • 利用patch命令打补丁。

TAR包卸载:

  • 直接删除安装文件夹;
  • 少数软件执行make uninstall。

./configure文件的功能

# ./configure --help
--prefix=PREFIX=/usr/local/apr:指定安装路径为/usr/local/apr
--disable-authn-file:默认情况下开启此项功能,如果接上面选项,就是禁用这项功能。
--enable-cache:默认情况下这项功能是关闭的,如果接上面的选项,就是启用这项功能。
--bindir=DIR:指定可执行程序的目录,DIR是自己定义的路径,需要连接具体的目录路径
--with-apr=PATH:说明安装软件的时候依赖别的软件(apr),需要指定别的软件的安装目录路径
--with-apr-util=PATH:说明安装软件的时候依赖别的软件(apr-util),需要指定apr-util软件的路径或者配置文件的路径
--with-pcre=PATH:使用外部PCRE图书馆
实际工作中,公司都有安装文档,会说明那些选项需要接,那些不需要接的。

更改网页内容:

①cd /usr/local/web/ –》进入目录

  • bin 可执行程序存放目录 binary
  • conf 配置文件config
  • error 错误页面存放位置
  • htdocs 存放网站的目录
  • man 手册
  • logs 存放日志文件的目录

②#/usr/local/web/bin/apachectl start –》启动apache
③# cat /etc/rc.local 开机启动

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/web/bin/apachectl start –》 开机启动编译安装apache
④# chkconfig httpd off 让rpm方式安装的httpd服务,开机不启动。
chkconfig 是一个命令对服务进行配置是否开机启动的命令
⑤PS:修改域名

#cd /usr/local/web/conf
# vim httpd.conf

去掉注释行,修改域名,如下所示:
修改前:#ServerName www.example.com:80
修改后:ServerName www.liupeng.com:80
修改了配置文件后,一定要刷新服务,让新的配置生效。
#/usr/local/web/bin/apachectl start
启动apache
#chkconfig iptables off
让iptables服务开机不启动
#iptables -F
清除防火墙规则 防火墙软件的名字叫iptables

搭建一个本地web网站

httpd这个软件是提供web服务的—-》进程名字就叫httpd
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
daemon –>守护进程
1.安装httpd软件

[root@tsxt Packages]# rpm -ivh httpd-2.2.15-29.el6_4.x86_64.rpm apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm httpd-tools-2.2.15-29.el6_4.x86_64.rpm apr-util-1.3.9-3.el6_0.1.x86_64.rpm apr-1.3.9-5.el6_2.x86_64.rpm mailcap-2.1.31-2.el6.noarch.rpm

2.启动httpd服务

[root@tsxt Packages]# service httpd  start  启动
[root@tsxt Packages]# service httpd  restart 重启
[root@tsxt Packages]# service httpd  stop 停止
Stopping httpd:                                            [  OK  ]
[root@tsxt Packages]# lsof -i:80
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   1923   root    4u  IPv6  32260      0t0  TCP *:http (LISTEN)
httpd   1925 apache    4u  IPv6  32260      0t0  TCP *:http (LISTEN)
httpd   1926 apache    4u  IPv6  32260      0t0  TCP *:http (LISTEN)
httpd   1927 apache    4u  IPv6  32260      0t0  TCP *:http (LISTEN)
httpd   1928 apache    4u  IPv6  32260      0t0  TCP *:http (LISTEN)
httpd   1929 apache    4u  IPv6  32260      0t0  TCP *:http (LISTEN)
httpd   1930 apache    4u  IPv6  32260      0t0  TCP *:http (LISTEN)
httpd   1931 apache    4u  IPv6  32260      0t0  TCP *:http (LISTEN)
httpd   1932 apache    4u  IPv6  32260      0t0  TCP *:http (LISTEN)

3.访问web访问

[root@tsxt Packages]# ip add  知道自己服务器的ip地址
[root@tsxt Packages]# iptables -F  清除防火墙规则(临时有效)
[root@tsxt Packages]# chkconfig iptables off  设置防火墙开机不要启动
使用浏览器去访问http://172.16.70.8 就可以了

4.修改主页面index.html

[root@tsxt Packages]# cd  /var/www/html/
[root@tsxt html]#vim index.html  新建网站首页
welcome to weipiqiang's web site!
thank you!!

5.刷新浏览器页面,看效果
6.停止httpd服务,看是否能打开网页

[root@tsxt html]# service httpd stop

7.再次开启httpd服务,测试是否能打开网页

[root@tsxt html]# service httpd start

练习:编译安装nginx-1.9.12.tar.gz
PS:nginx–》web服务器软件–》提供web服务的
①解压

# ./configure --prefix=/usr/local/nginx
报错:error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option

–》提示缺少http_gzip包
措施:

[root@liupeng nginx-1.9.12]# rpm -ivh /mnt/Packages/zlib-devel-1.2.3-29.el6.x86_64.rpm 
[root@liupeng nginx-1.9.12]# rpm -ivh /mnt/Packages/zlib-1.2.3-29.el6.x86_64.rpm 

③make
④make install
⑤启动 nginx:
#cd /usr/local/nginx/sbin
#./nginx –》启动成功时,什么反应也没有!

提示:98号端口被占用。
措施:停掉即可–》/usr/local/web/bin/apachectl stop 或者 service httpd stop

真实机开浏览器输入ip即可看到“Welcome to nginx!”

练习2:mysql服务(编译安装5.6.15)

根据帮助手册(vim INSTALL SOURCE)得到步骤:
①groupadd mysql
②useradd -r -g mysql -s /bin/false mysql
③tar -xzvf mysql-5.7.1.tar.gz
④cd mysql-5.7.10
⑤cmake .
⑥make
⑦make install
⑧cd /usr/local/mysql
⑨chown -R mysql .
⑩chgrp -R mysql .
⑩①scripts/mysql_install_db –user=mysql –》mysql 5.7.6之前版本的
{
bin/mysqld –initialize –user=mysql –》mysql 5.7.6之后的版本
bin/mysql_ssl_rsa_setup –》mysql 5.7.6之后的版本
}
⑩②chown -R root .
⑩③chown -R mysql data
⑩④bin/mysqld_safe –user=mysql & –》启动编译安装的mysql
⑩⑤cp support-files/mysql.server /etc/init.d/mysqld.server –》复制脚本
⑩⑥service mysqld.server start –》拷贝脚本过去后,启动

PS:
cmake . –》提示cmake版本低的问题:
tar xf 解压后–》./bootstrap–》make–》make install
回到mysql解压后的目录:
#CMake Error: Could not find CMAKE_ROOT !!!
提示缺少curses库的时候措施:–》需安装ncurses-devel包,之后删除CMakeCache.txt文件

rpm -ivh  ncurses-5.7-3.20090208.e16.x86_64.rpm     ncurses-devel-5.7-3.20090208.e16.x86_64.rpm

安装python编写的程序的源码包的方法:

tar解压后进入文件夹(ipython…)
python setup.py build
python setup.py install –》在centos7运行才行,6版本的会报错:python 为2.7或3.3才行。
setup.py是安装脚本;


YUM(Yellow dog Updater,Modified)
yum是什么:基于rpm但更胜于rpm的软件管理工具。
YUM的优点: –》可以全球部署!

  • 更方便的管理rpm软件包
  • 自动解决rpm包的依赖关系
  • 可以配置多个资源仓库

yum命令的几个目录

  • YUM配置文件:/etc/yum.conf (通常无需修改)
  • 仓库配置文件目录:/etc/yum.repos.d/
  • YUM的缓存目录:/var/cache/yum
  • YUM的日志文件:/var/log/yum.log

创建仓库索引文件的软件包:createrepo.noarch(未安装)

yum的基本工作流程:

服务器端:

  • 在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。

客户端:

  • 如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

/etc/yum.repos.d目录 此目录下存放各个yum源仓库的路径文件

这里写图片描述

注意:
以.repo结尾的文件都是用来帮助客户机定位到yum服务器地址的。
(repository 仓库;directory 目录)

vim /etc/yum.conf yum主要配置文件(最好不要改动!)

[main]
cachedir=/var/cache/yum/$basearch/$releasever    --》yum缓存目录
keepcache=0    --》下载的软件安装完成后,删除不保留(为0不保留,为1保留)
debuglevel=2    --》
logfile=/var/log/yum.log    --》日志文件存放的路径,记录yum安装了哪些软件,卸载了哪些软件等
exactarch=1    --》软件包针对的版本是否和当前系统的架构匹配
obsoletes=1
gpgcheck=1    --》为1检查软件包的签名,为0不检测。
plugins=1    --》插件的支持
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

PS:/var/log下面的anaconda开头的是linux下的安装软件的程序的名字。

本地YUM源配置:

服务器端配置:

  • ①#mkdir /yum(叫啥都行)–》创建仓库目录
  • ②mount -o loop /download/rhel5u5.iso /mnt –》真实机挂载(没有光驱)(挂载的是文件)
    mount /dev/cdrom /mnt –》虚拟机挂载(挂载的是设备)
    –》挂载安装介质盘
  • ③cp -r /mnt/* /yum –》复制光盘内容到/yum目录中(当②挂载到/yum时就不用复制了)

客户端配置:

  • ①cd /etc/yum.repos.d目录创建sxkj.repo配置文件
  • ②修改sxkj.repo配置文件:
[sxkeji] --》源名称
name = sxkeji    --》yum源的描述
baseurl = file:///yum       --》该源路径,file表示使用文件方式,即本地源
enabled = 1          --》是否启用这个yum源,1为启用
gpgcheck = 0       --》是否使用gpg检测,0为不使用

PS:baseurl和mirrorlist的区别:
baseurl:只能用一个源
mirrorlist:可以用很多源,且有一个插件来判断优先用哪个源。

本地yum源测试

为了避免其他repo文件干扰,保证/etc/yum.repos.d目录下只有一个repo文件。

  • ①yum clean all –》清空yum缓存所有信息
  • ②yum list –》列出资源库中所有可以安装或更新的包

本地YUM源缺点:

  • 只能为本机提供YUM服务

网络YUM源的优点:

  • 可以为网络中所有的客户机提供服务
  • 基于FTP的YUM源
  • 基于HTTP的YUM源

网络yum源的配置:
一、基于ftp的yum源配置
服务端:
①安装启动FTP服务

# rpm -ivh vsftpd-...
# chkconfig vsftpd --level 35 on       --》设置ftp服务开机启动
# service vsftpd start     --》启动ftp服务

# mount -o loop /download/rhel5u5.iso  /mnt     --》挂载安装介质盘
# cp -r /mnt/* /var/ftp/yum     --》复制光盘内容到/var/ftp/yum目录中

客户端:
①进入/etc/yum.repos.d目录创建sxkj-ftp.repo文件
②修改sxkj-ftp.repo配置文件如下:

[sxkeji-ftp]
name = sxkeji-ftp
baseurl = ftp://192.168.1.254/yum/Server     --》这里的路径为ftp方式yum源的ftp访问路径
enabled = 1
gpgcheck = 0    --》ftp方式yum源一般都不需要gpg检测

二、基于HTTP的yum源
服务器端:
①安装启动http服务

# yum install httpd
# chkconfig httpd --level 35 on --》服务开机启动
# service httpd start     --》启动服务

②安装配置http服务

vi /etc/httpd/conf/httpd.conf  # 编辑http配置文件
# 在配置文件中添加下面配置,使得/yum目录可被访问  
Alias /yum  /yum/Server  
<Directory "/yum/Server">
       Options Indexes FollowSymLinks  
       AllowOverride None  
       Order allow,deny  
       Allow from all  
</Directory>

③启动apache服务器
客户端:
进入/etc/yum.repos.d目录创建sxkj-http.repo文件
修改sxkj-http.repo配置文件如下所示 :

[sxkeji-http]
name = sxkeji-http
baseurl = http://192.168.1.254/yum/    --》服务器ip地址
enabled = 1 
gpgcheck = 0

同时搭建多个yum源:

[local_yum]
name = lcoal yum
baseurl = file://172.16.70.8/yum
enabled = 0    --》关了 
gpgcheck = 0 

[ftp_yum]
name = lcoal yum
baseurl = ftp://172.16.70.8/yum
enabled = 1    --》开了 
gpgcheck = 0

[http_yum]
name = lcoal yum
baseurl = http://172.16.70.8/yum
enabled = 0    --》关了 
gpgcheck = 0

/etc/rc.local –》开机自动挂载文件到ftp和web服务的程序下

修改/etc/rc.local文件即可。
考虑ftp和http服务的开机启动问题:

  • chkconfig
  • vsftpd on

把下面的5行命令加到/etc/rc.local:

touch      /var/lock/subsys/local
mount     /dev/cdrom     /var/ftp/yum
mount     /dev/cdrom      /usr/local/nginx/html/yum
mount     /dev/cdrom      /local_yum
/usr/local/nginx/sbin/nginx

YUM相关命令:

  • yum list [package…] –》查看rpm包信息
  • yum install package… –》安装
  • yum remove package… –》删除
  • yum update [package…] –》升级
  • yum info [package…] –》查看
  • yum grouplist –》查看有哪些rpm包组可以用,已经装了哪些,哪些还没装。
  • yum groupinstall –》安装包组
  • yum groupremove –》删除包组
  • yum groupinfo –》查看包组信息
    这里写图片描述

linux桌面工具:

  • Desktop
  • KDE Desktop

一个插件:yumdownloader
(此命令通过yum-utils-包安装的)

yum为什么能解决依赖关系:

变量的使用:x96_64 /etc/yum.conf
依赖关系文件的介绍
repodata –》存放解决依赖关系文件–》/local_yum/repedata/
SQLite –》是一款轻型的数据库,它占用资源非常的低,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理 系统来讲,它的处理速度比他们都快。
XML:它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网运输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

filelists.xml 记录了所有rpm包的列表、版本号、配置文件等;
primary.xml 记录了rpm包的依赖关系;
http://www.firefoxbug.com/index.php/archives/2777/primary.xml.gz
就是yum服务器上的“清单”,但是这里以sqlite方式存储了,可以查看sqlite的数据库。


实例:
这里写图片描述
bzip2 -d解压, 然后执行:
# sqlite3 解压后.sqlite
–》发现,确实是个数据库
这里写图片描述
PS:注意:每次yum装包或者卸载的时候都会来查询这个sqlite的DB,然后做出相应的操作。
PS:

  • sqlite> . table -》显示全部表
  • sqlite>select * from packages;–》查询packages表里的所有内容
  • sqlite> . quit –》退出sqlite数据库

yum clean all
#yum clean all
已加载插件:fastestmirror, refresh-packagekit, security
Cleaning repos: local_yum –》哪些能用(enabled=1)才清理
清理一切
Cleaning up list of fastest mirrors

yum卸载

  • yum remove package… 卸载(rpm -e)

    • 卸载软件要注意依赖关系!防止卸掉别的有用的软件,导致系统里的其他程序出问题。
  • yum update package… 更新(rpm -U)

    • 如果不接更新的具体的软件包,会更新系统里所有可以更新的软件包。

第三方yum源

1.国外官方YUM源
EPEL源–》非常丰富!–》需要上网!但速度较慢(epel-release-6-8.noarch.rpm)
http://vault.centos.org
2.国内YUM源
http://mirrors.163.com/
http://mirrors.sohu.com/
3.下载相应版本的repo文件到/etc/yum.repos.d目录即可

想yum安装nginx和mysql,需/etc/yum.repos.d下建立.repo文件,文件内容如下:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

练习:
1.搭建本地yum源、ftp和http源
2.写脚本,一键完成3个yum源

#!/bin/bash
[ -d /local_yum ]||mkdir /local_yum
mount /dev/cdrom /local_yum &>/dev/null
cd /etc/yum.repos.d
cat >local.repo<<EOF
[local_yum]
name=local yum
baseurl=file://172.16.70.8/local_yum
enabled=1
gpgcheck=0

[ftp_yum]
name=ftp yum
baseurl=ftp://172.16.70.8/local_yum
enabled=0
gpgcheck=0

[http_yum]
name=http yum
baseurl=http://172.16.70.8/local_yum
enabled=0
gpgcheck=0
EOF
echo "local yum is create successful!!!"
原文地址:https://www.cnblogs.com/lpeng94/p/12546504.html