软件包管理之编译安装
源码编译的优势
- 自定义软件功能
- 优化编译参数,提高性能
- 解决不必要的软件间依赖
- 方便清理与卸载
下面以 centos 编译安装httpd为例
实验环境
操作系统:CentOS 7.5 x64 最小化安装
httpd版本:2.4.34
编译安装httpd 2.4
1.需要的软件包有 gcc ,openssl-devel ,pcre-devel,expat-devel,这几个包可以通过yum安装
[root@centos7 ~]# yum install gcc openssl-devel expat-devel pcre-devel -y
此外还需要较高版本的 apr,apr-util ,这两个包解压后可以放到httpd解压文件下,和httpd一起编译安装
2. 下载 apr-1.6.3,apr-util-1.6.1, httpd-2.4.34 这个三个源码包并解压到 /usr/local/src 下
这里用的 wget 工具下载的,没有安装的话请自行用 yum 安装
[root@centos7 ~]# wget http://mirrors.ustc.edu.cn/apache/apr/apr-1.6.3.tar.gz http://mirrors.ustc.edu.cn/apache/apr/apr-util-1.6.1.tar.gz http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.34.tar.gz
[root@centos7 ~]# for i in `ls *.tar.gz`;do tar xf $i -C /usr/local/src;done
3. 把apr和apr-util的解压文件复制一份至httpd-2.4.34/srclib目录下,并去除版本号 ,和httpd一起编译安装
[root@centos7 ~]# cd /usr/local/src/ [root@centos7 src]# ls apr-1.6.3 apr-util-1.6.1 httpd-2.4.34 [root@centos7 src]# cp -r apr-1.6.3 httpd-2.4.34/srclib/apr [root@centos7 src]# cp -r apr-util-1.6.1 httpd-2.4.34/srclib/apr-util
4.编译安装httpd 2.4
[root@centos7 src]# cd httpd-2.4.34/ [root@centos7 httpd-2.4.34]# ./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --with-include-apr --with-pcre --with-z --enable-so --enable-ssl --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=event
[root@centos7 httpd-2.4.34]# make -j 2 && make install
其中,上述 configure 选项的含义如下(可以用 ./configure --help 查看帮助):
--prefix=/usr/local/httpd 安装路径 --sysconfdir=/etc/httpd 配置文件路径 --with-included-apr 包含apr,apr-util --with-pcre 支持pcre --with-z 支持zlib压缩 --enable-so 允许运行时加载DSO模块 --enable-ssl 编译ssl模块 --enable-cgi 允许使用cgi脚本 --enable-rewrite 支持URL重写机制 --enable-modules=most 启用大多数常用的模块 --enable-mpms-shared=all 启用MPM所有支持的模式 --with-mpm=event 默认使用event模式
编译安装过程需要一定时间,请耐心等待
编译安装后的配置
1. 二进制程序目录导入至PATH环境变量中
[root@centos7 ~]# echo 'export PATH="/usr/local/httpd/bin:$PATH"' > /etc/profile.d/httpd.sh [root@centos7 ~]# . /etc/profile.d/httpd.sh [root@centos7 ~]# echo $PATH /usr/local/httpd/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2. 导出库文件路径
[root@centos7 ~]# echo "/usr/local/httpd/lib" > /etc/ld.so.conf.d/httpd.conf [root@centos7 ~]# ldconfig
3. 导入头文件,基于链接的方式实现
[root@centos7 ~]# ln -sv /usr/local/httpd/include /usr/include/httpd ‘/usr/include/httpd’ -> ‘/usr/local/httpd/include’
4. 导入帮助手册
[root@centos7 ~]# vim /etc/man_db.conf MANPATH_MAP /usr/local/httpd /usr/local/httpd/man
5. 启动apache服务并测试
[root@centos7 ~]# apachectl start [root@centos7 ~]# ss -tunl | grep :80 tcp LISTEN 0 128 :::80 :::*
关闭 firewalld 和 selinux
[root@centos7 ~]# systemctl stop firewalld [root@centos7 ~]# systemctl disable firewalld [root@centos7 ~]# setenforce 0 [root@centos7 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
在浏览器输入 服务器地址
出现如上图所示则httpd服务已启动
至此,httpd 2.4的编译安装到此结束