Apache-源码编译安装
Apache-源码编译安装
为什么要源码编译
一般来说,我们软件的安装方式有yum(rpm),和源码编译两种方式,那么为什么我们需要源码编译安装一部分软件?选择源码编译安装软件有以下几个原因:
1:满足不同的运行平台,我们Linux发行版本众多,但是每个版本采用的软件或者内核版本都不一样,而我们的二进制包所依赖的环境不一定能够正常运行,所以大部分软件直接提供源码!
2:方便定制,满足不同的需求,很多时候我们所需要的软件都是可以定制的,我需要什么就安装什么,大多数二进制代码都是一键装全,所以自由度并不高!
3:方便运维、开发人员维护,我们的源码是可以打包二进制的,但是对于这个软件的打包都会有一份代价不小的额外工作,包括维护,所以如果是源码的话,软件产商会直接维护,但是如果是二进制的话,一般都是Linux发行商提供!
什么是LAMP
LAMP=Linux Apache Mysql/MariaDB PHP/Perl/Python 这些软件都是开源免费的软件,几个程序各自是独立的,经常为了达到我们需要的效果而协同工作,组成了我们常见的LAMP架构平台!LAMP是世界上最流行的组合,当然同时也有Nginx,也就是LNMP: LAMP 相对于 NGINX 来说较为安全,但是Nginx处理高并发比Apache要强,NGINX 相对于 LAMP 来说安全较为差一点,同样的配制环境负载远远高于 LAMP 向国内的一些大公司,淘宝、新浪都在用这一些 NGINX,像那么大的公司网站需要用到服务器群用LAMP搭建环境成本远远大于NGINX。打个比方本来1000000W访问量需要 10台LAMP环境服务器才能完成,但是使用NGINX也许只需要5、6台,这样一来对于这样的公司来说就大大的节约了成本。
从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案,在以前这句话没有错,但是在现在,这句话有待证实!!!因为在以后的过程中,会发现我们会使用的架构是Nginx和Apache结合使用:使用Nginx可以做集群等相关配置,可以和apache一起使用,有的会用apache去跑php,然后用nginx做反向代理,比如apache运行在8080端口,nginx在80端口,访问php文件时,反向代理到apache,静态页通过nginx处理。nginx支持高并发,apache对php的运行比较稳定。.
常见的网页类型:htm,html,shtml,stm.php,asp,aspx,shtm,jsp等等Apache本事只处理静态页面,处理动态页面需要使用libphp5.so这个模块去工作,编译php也其实是将一个至关重要的模块打入到apache内部,然后apache收到php请求,将请求交给这个模块来处理!
Apache工作原理:
Apache本身只处理html静态语言页面,当客户端需要访问php页面的时候,Apache会调用libphp5.so这个模块去工作,这个模块会把php页面转换成html静态页面,让Apache处理,Apache处理过,会返回给客户端
LAMP相关网站
Apache=http://httpd.apache.org/ httpd主程序包
MySQL=http://dev.mysql.com/downloads/mysql/ mysql主程序包
PHP=http://php.net/downloads.php php主程序包
apr=http://apr.apache.org/ apr是httpd的依赖包
apr-util=http://apr.apache.org/ apr-util是httpd的第二个依赖包
apr和apr-util这个两个软件是对后端服务软件进行优化的,
apr-util只是在apr的基础上提供了更多的数据结构和操作系统封装接口而已。
pcre 是httpd的第三个依赖包 http://pcre.org/
PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。
Apache官网
http://httpd.apache.org/
需要源码编译安装的软件包
httpd-2.4.28.tar.gz #Apache主程序包
apr-1.6.5.tar.gz #Apache依赖包
apr-util-1.6.1.tar.gz #Apache依赖包
pcre-8.41.tar.gz #Apache依赖包
下载源码安装包
http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.28.tar.gz http://archive.apache.org/dist/apr/apr-1.6.2.tar.gz
http://archive.apache.org/dist/apr/apr-util-1.6.0.tar.gz
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
首先下载最新的源码包
安装之前请先安装make、gcc、openssl等编译工具和开发包
yum -y install make gcc gcc-c++ openssl openssl-devel expat-devel
echo "编译安装依赖包apr-1.6.5.tar.gz"
tar xf apr-1.6.5.tar.gz -C /usr/local/src/
cd /usr/local/src/apr-1.6.5/
./configure --prefix=/usr/local/apr
echo $?
make && make install
echo $?
echo "编译安装依赖包apr-util-1.6.1.tar.gz"
tar xf apr-util-1.6.1.tar.gz -C /usr/local/src/
cd /usr/local/src/apr-util-1.6.1/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make -j 4 && make install
echo "注意:如果执行make 报错:"
echo "xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory"
echo "编译安装依赖包pcre-8.41.tar.gz"
tar xf pcre-8.41.tar.gz -C /usr/local/src/
cd /usr/local/src/pcre-8.41/
./configure --prefix=/usr/local/pcre
echo $?
make -j 4 && make install
echo "编译安装Apache"
tar zxvf httpd-2.4.28.tar.gz -C /usr/local/src/
cd /usr/local/src/httpd-2.4.28/
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=event
echo $?
make -j 4 && make install
#--prefix=/usr/local/apache2.4 #安装路径
#--enable-so #支持动态加载模块
#--enable-rewrite #支持网站地址重写
#--enable-ssl #支持SSL加密
#--with-pcre=/usr/local/pcre #pcre路径
#--with-apr=/usr/local/apr #apr路径
#--with-apr-util=/usr/local/apr-util #apr-util路径
#一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式。它们分别是#prefork,worker和event,它们同时也代表这Apache的演变和发展。
make -j 4 && make install
#配置文件
ls /usr/local/apache/conf/httpd.conf
#网站根目录
ls /usr/local/apache/htdocs/
#index.html
#生成启动脚本
cp /usr/local/apache/bin/apachectl /etc/init.d/
chmod +x /etc/init.d/apachectl
#写个apache系统服务脚本, 以754的权限保存此文件
vim /usr/lib/systemd/system/apache.service
[Unit]
Description=apache
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/apachectl start
ExecReload=/etc/init.d/apachectl restart
ExecStop=/etc/init.d/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl enable apache
#启动服务
systemctl start apache.service
#修改Apache的运行用户:
#默认是daemon用户运行的进程
ps aux|grep apache
#ps aux|grep apache单独创建一个用户来运行服务:
useradd -M -s /sbin/nologin apache
vim /usr/local/apache/conf/httpd.conf
User apache #运行用户
Group apache #运行组,创建apache的时候已经即时创建了apache这个组
更改目录权限
[root@localhost ~]# chown -R apache:apache /usr/local/apache //默认是root,改为apache