Linux 源码编译安装 LAMP(一)

为什么要源码编译

  • 一般来说,我们软件的安装方式有 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 相关网站

  1. Apache=http://httpd.apache.org/                                      httpd主程序包

  2. MySQL=http://dev.mysql.com/downloads/mysql/           mysql主程序包

  3. PHP=http://php.net/downloads.php                  php主程序包

  4. apr=http://apr.apache.org/                                 apr是httpd的依赖包

  5. apr-util=http://apr.apache.org/                          apr-util是httpd的第二个依赖包

  6. apr和apr-util 这个两个软件是对后端服务软件进行优化

  7. apr-util只是在apr的基础上提供了更多的数据结构和操作系统封装接口而已

  8. pcre=http://pcre.org/pcre                       pcre是httpd的第三个依赖包

PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。

对应源码编译的版本

    编译安装LAMP所需要及其所使用的源码版本:

  • httpd version:httpd-2.4.16

  • apr version:apr-1.5.2

  • pcre version:pcre-8.37

  • apr-util version:apr-util-1.5.4

  • mysql version:mysql-5.6.26

  • php version:php-5.6.13


安装之前需要注意:

LAMP源码编译的基础环境

[root@python ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.4.1708 (Core) 
Release:	7.4.1708
Codename:	Core

[root@python ~]# uname -a
Linux python 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

确保系统是干净的,不要和现在源码编译安装的软件冲突
不要在一个系统上同时存在 RPM-Apache + 源码-Apache

建议在编译之前,把开发包组安装上:

[root@python LAMP软件包]# yum groupinstall "Development Tools" "Development Libraries" -y

[root@python LAMP软件包]# yum install gcc gcc-c++ openssl-devel -y 

所需的软件:

[root@python LAMP软件包]# ls
apr-1.5.2.tar.gz        httpd-2.4.16.tar.bz2  nginx-1.8.1.tar.gz  php-5.6.13.tar.bz2
apr-util-1.5.4.tar.bz2  mysql-5.6.26.tar.gz   pcre-8.37.tar.bz2

apr 和 apr-util 依赖

[root@python LAMP软件包]# tar xf apr-1.5.2.tar.gz -C /usr/local/src/ && tar xf apr-util-1.5.4.tar.bz2 -C /usr/local/src/

[root@python apr-1.5.2]# cd /usr/local/src/apr-1.5.2/ && ./configure --prefix=/usr/local/apr && make && make install

[root@python apr-util-1.5.4]# cd ../apr-util-1.5.4/ && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install

[root@python LAMP软件包]# tar xf pcre-8.37.tar.bz2 -C /usr/local/src/

cd /usr/local/src/pcre-8.37/ && ./configure --prefix=/usr/local/pcre && make && make install 

Apache 源码编译

  • 依赖环境安装完成,开始编译安装apache
[root@python LAMP软件包]# tar xvf httpd-2.4.16.tar.bz2 -C /usr/local/src/ && cd /usr/local/src/httpd-2.4.16

[root@python httpd-2.4.16]# ./configure --prefix=/usr/local/apache2.4 --enable-so --enable-rewrite --enable-ssl --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event && make && 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 的演变和发展。


配置 Apache 的启动脚本 

[root@python bin]# cp /usr/local/apache2.4/bin/apachectl  /etc/init.d/apache2.4

如果安装的是桌面,那么需要关掉 httpd 服务
[root@python ~]# cp /usr/local/apache2.4/bin/apachectl /etc/init.d/apache2.4

[root@python ~]# vim /etc/init.d/apache2.4

#!/bin/sh
# chkconfig: 2345 64 36            
#这个是启动级别的服务,2345是指那些级别启动,64是开启顺序,应该在network服务的后面,36是关闭顺序,应该在network的前面,这里并不是注释
#默认network的是:2345 10 90
# description: Apache2.4.16 start script            #描述字段,有了这两个字段,就可以用chkconfig命令控制

[root@python ~]# service apache2.4 start

如启动报错 请查看  https://blog.csdn.net/Qevery678/article/details/93162867

[root@python ~]# chkconfig apache2.4 on

Apache安装完成需要注意的地方:

[root@python ~]# ps -ef | grep apache   #源码编译apache 运行用户为 daemon
root     104162      1  0 09:47 ?        00:00:00 /usr/local/apache2.4/bin/httpd -k start
daemon   104163 104162  0 09:47 ?        00:00:00 /usr/local/apache2.4/bin/httpd -k start
daemon   104164 104162  0 09:47 ?        00:00:00 /usr/local/apache2.4/bin/httpd -k start
daemon   104165 104162  0 09:47 ?        00:00:00 /usr/local/apache2.4/bin/httpd -k start
root     104509  55510  0 10:03 pts/5    00:00:00 grep --color=auto apache
[root@python ~]# id daemon
uid=2(daemon) gid=2(daemon) 组=2(daemon)

[root@python ~]# useradd -M -s /sbin/nologin apache  #创建一个用户用来运行 apache 

[root@python ~]# vim /usr/local/apache2.4/conf/httpd.conf
User apache                     #运行用户
Group apache                    #运行组,创建apache的时候已经即时创建了apache这个组

[root@python ~]# chown -R apache:apache /usr/local/apache2.4/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值