前言
Linux操作系统之所以能够在十余年的时间里发展壮大以至于风靡全球,其开放源代码的特性是很重要的原因之一,及Linux操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制修改后编译安装。
虽然现代的Linux发行版本大部分采用包管理机制对软件进行打包安装,可以省去软件的编译安装过程,但是还有些情况需要使用源代码编译的方式为系统安装新的应用程序。
-
L:Linux
-
A:Apache
-
M:MySQL
-
P:PHP
一:LAMP平台与编译安装
1.1:LAMP平台概述
-
LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境
-
LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言
1.2:构建LAMP平台顺序
-
在构建LAMP平台时,各组件的安装顺序依次为Linux,Apache,MySQL,PHP
-
其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作
1.3:编译安装的优点
- 具有较大的自由度,功能可定制
- 可及时获得最新的软件版本
- 普遍适用于大多数Linux版本,便于一直使用
1.4:编译安装的基本过程
-
解包
-
开源软件的源代码包一般为TarBall形式,扩展名为“.tar.gz”或“.tar.bz2”,都可以使用tar命令进行解压。
-
在Linux系统中,通常将各种软件的源代码目录保存到“/sur/src”目录中,便于集中管理。
-
解包 习惯上将软件包解压到/sur/src/目录中 解包后源代码文件位置:/usr/src/软件名-版本号/
-
-
配置
-
在编译应用程序之前,需要进入源代码目录,对软件的安装目录,功能选择等参数进行配置。
-
在Linux系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹,当需要卸载软件时,只需将该文件夹删除即可。
-
配置 配置工作通常使用源码目录中的configure脚本完成 执行“./configure --help”可查看帮助 典型的配置选项:–prefix=软件安装目录(指定软件包安装的目标文件夹)
-
-
编译
-
编译的过程主要是根据Makefile文件内的配置信息(若上一步的配置操作失败,将无法进行编译),将源代码文件进行编译而生成二进制的程序模块,动态链接库,可执行文件等。
-
配置完成后,只需要在源代码目录中执行“make”命令即可执行编译操作
-
-
安装
- 编译完成后,就可以执行“make install”命令将软件的执行程序,配置文件,帮助文档等相关文件复制到Linux系统中了,也就是应用程序的最后“安装”过程。同样是在源代码目录中执行命令。
二:Apache网站服务源码编译安装
2.1:Apache起源
- 源于A Patchy Server,著名的开源web服务软件
- 1955年时,发布Apache服务程序的1.0版本
- 由Apache软件基金会(ASF)负责维护
- 最新的名称为“Apache HTTP Server”
2.2:主要特点
- 开放源代码,跨平台应用
- 支持多种网页编程语言
- 模块化设计,运行稳定,良好的安全性
2.3:环境准备
- VMware软件
- centos7操作系统
- 准备Apache服务的源码包
- Apache跨平台组件包准备
2.4:源码编译安装过程
2.4.1:环境准备
-
挂载宿主机的共享文件夹,读取下载好的源码文件
[root@localhost ~]# smbclient -L //192.168.100.3 Enter SAMBA\root's password: Sharename Type Comment --------- ---- ------- ADMIN$ Disk 远程管理 C$ Disk 默认共享 ccc Disk ...省略内容 [root@localhost ~]# mount.cifs //192.168.100.3/ccc /mnt Password for root@//192.168.100.3/ccc: [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on ...省略内容 //192.168.100.3/ccc 444G 31G 413G 7% /mnt [root@localhost ~]# cd /mnt [root@localhost mnt]# ls LAMP-C7 LAMP-C7.rar [root@localhost mnt]# cd LAMP-C7/ [root@localhost LAMP-C7]# ls apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt php-5.6.11.tar.bz2 apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz
-
解压跨平台组件包和源码包
将跨平台组件包移动到源码包目录下
[root@localhost LAMP-C7]# tar zxvf apr-1.6.2.tar.gz -C /opt ...省略内容 [root@localhost LAMP-C7]# tar zxvf apr-util-1.6.0.tar.gz -C /opt ...省略内容 [root@localhost LAMP-C7]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt ...省略内容 [root@localhost LAMP-C7]# cd /opt [root@localhost opt]# ls apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh [root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/s server/ srclib/ support/ [root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr [root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util [root@localhost opt]# ls httpd-2.4.29/srclib/ apr apr-util Makefile.in
-
安装编译器和其他工具
[root@localhost opt]# yum -y install \ > gcc \ '//编译器' > gcc-c++ \ '//编译器' > make \ '//make工具' > pcre-devel \ '//支持正则表达式的工具' > expat-devel \ '//使网站能解析标签语言的工具' > perl '//Perl语言工具' ...省略内容
2.4.2:configure配置
-
[root@localhost opt]# cd httpd-2.4.29/ [root@localhost httpd-2.4.29]# ls ...省略内容 ap.d configure include Makefile.in ...省略内容 [root@localhost httpd-2.4.29]# ./configure \ > --prefix=/usr/local/httpd \ '//指定路径' > --enable-so \ '//开启核心功能模块' > --enable-rewrite \ '//开启重写功能,如防盗链保护' > --enable-charset-lite \ '//开启字符集' > --enable-cgi '//开启通用网关接口' ...省略内容
2.4.3:make编译和makeinstall
-
[root@localhost httpd-2.4.29]# make '//编译' ...省略内容 [root@localhost httpd-2.4.29]# make install '//安装'
2.4.4:配置启动脚本
-
[root@localhost bin]# cd /usr/local/httpd/ [root@localhost httpd]# ls bin build cgi-bin conf error htdocs icons include lib logs man manual modules [root@localhost httpd]