源码编译0LAMP环境的搭建流程

为什么要源码编译*

安装之前先关闭selinux

一般来说,我们软件的安装方式有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语言的缺省正则库。
对应我们源码编译的版本
编译安装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
安装之前需要注意:

1、LAMP源码编译的基础环境

[root@localhost ~]#yum -y install lsb
[root@localhost ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.6.1810 (Core) 
Release:	7.6.1810
Codename:	Core
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

2、确保系统的干净的系统,不要和现在源码编译安装的软件冲突
不要在一个系统上同时存在 RPM-Apache+源码-Apache
建议在编译之前,把开发包组安装:"Development Tools"和 “Development Libraries”

[root@localhost ~]# yum -y groupinstall "Development Tools" "Development Libraries"
[root@localhost ~]# yum -y install gcc gcc-c++ openssl-devel

下载软件
httpd源码包下载

[root@localhost ~]# wget http://ftp.cuhk.edu.hk/pub/packages/apache.org//httpd/httpd-2.4.41.tar.gz

mysql二进制包下载

[root@localhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-i686.tar.gz

apr-util源码包下载

[root@localhost ~]# wget http://apache.website-solution.net//apr/apr-util-1.6.1.tar.gz

apr软件下载

[root@localhost ~]# wget http://apache.01link.hk//apr/apr-1.7.0.tar.gz

pcre 包下载

[root@localhost ~]# wget https://ftp.pcre.org/pub/pcre/pcre-8.37.tar.gz

php下载

[root@localhost ~]# wget https://www.php.net/distributions/php-5.6.40.tar.gz

软件安装

安装的顺序有要求
先安装apr----------->>apr-util--------->>pcre---------->>httpd--------->>mysql----------->>php
前三个是依赖包,安装前必须先安装

安装apr

[root@localhost ~]# tar -zxvf apr-1.7.0.tar.gz -C /usr/local
[root@localhost apr-1.7.0]# pwd
/usr/local/apr-1.7.0
[root@localhost apr-1.7.0]# ./configure --prefix=/usr/local/apr && make -j 2 && make install
[root@localhost apr-1.7.0]# echo $?
0

-j 后面跟的数字是核心数加一,可以加快编译的速度

apr-util安装

[root@localhost ~]# tar -xf apr-util-1.6.1.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make -j 2 && make install

编译报错

xml/apr_xml.c:35:19: 致命错误:expat.h:没有那个文件或目录
 #include <expat.h>
                   ^
编译中断。
make[1]: *** [xml/apr_xml.lo] 错误 1
make[1]: 离开目录“/usr/local/src/apr-util-1.6.1”
make: *** [all-recursive] 错误 1

缺少依赖包的原因,把依赖包安装上,重新编译

[root@localhost apr-util-1.6.1]# yum install -y  expat-devel
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make
[root@localhost apr-util-1.6.1]# echo $?
0

pcre安装

[root@localhost ~]#tar -xf pcre-8.37.tar.gz  -C /usr/local/
[root@localhost ~]# cd /usr/local/pcre-8.37/
[root@localhost pcre-8.37]# ./configure --prefix=/usr/local/pcre && make -j 2 && make install
[root@localhost pcre2-10.33]# echo $?
0

安装之前先关闭selinux

Apache源码编译

[root@localhost ~]# tar -xf httpd-2.4.41.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/httpd-2.4.41/
[root@localhost httpd-2.4.41]# ./configure --prefix=/usr/local/apache2.4 --enable-so --enable-mods-shared=most --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 -j `grep processor /proc/cpuinfo | wc -l` && make install
[root@localhost httpd-2.4.41]# echo $?
0
configure: error: Did not find pcre-config script at /usr/local/pcre
编译的时候抱这个错,说明找不到pcre的配置文件,版本的问题,新的版本是pcre2-config.所以检测不到
--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@localhost bin]# cp -p /usr/local/apache2.4/bin/apachectl /etc/init.d/httpd
编辑启动脚本文件

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

添加到系统服务

[root@localhost httpd-2.4.41]# chkconfig --add httpd   #添加到系统服务
[root@localhost httpd-2.4.41]# chkconfig httpd on    #开机自启

启动服务

[root@localhost bin]# service  httpd start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

查看端口

[root@localhost bin]# netstat -luntp |grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      106932/httpd        

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

[root@localhost bin]# ps -aux |grep apache
root     106932  0.0  0.2  72832  2292 ?        Ss   21:31   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   106933  0.0  0.4 361796  4196 ?        Sl   21:31   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   106934  0.0  0.4 361796  4196 ?        Sl   21:31   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   106935  0.0  0.4 361796  4196 ?        Sl   21:31   0:00 /usr/local/apache2.4/bin/httpd -k start
root     107046  0.0  0.0 112728   976 pts/0    R+   21:39   0:00 grep --color=auto apache

先用进程用户是daemon,编译安装运行用户身份是daemon,应该修改成apache

创建一个用户用来运行apache

[root@localhost bin]# useradd -M -s /sbin/nologin apache

修改启动用户

[root@localhost bin]# vim /usr/local/apache2.4/conf/httpd.conf
配置文件改变apache运行身份
User apache                     #运行用户,默认 是daemon
Group apache                    #运行组,创建apache的时候已经即时创建了apache这个组,默认 是daemon

更改目录权限

[root@localhost bin]# chown -R apache.apache /usr/local/apache2.4/

默认是root,改为apache
重启服务,查看

[root@localhost bin]# /etc/init.d/httpd restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[root@localhost bin]# ps -aux |grep apache
root     106932  0.0  0.2  72832  2872 ?        Ss   21:31   0:00 /usr/local/apache2.4/bin/httpd -k start
apache   107059  0.0  0.4 361796  4172 ?        Sl   21:45   0:00 /usr/local/apache2.4/bin/httpd -k start
apache   107060  0.0  0.4 361796  4172 ?        Sl   21:45   0:00 /usr/local/apache2.4/bin/httpd -k start
apache   107061  0.0  0.4 361796  4172 ?        Sl   21:45   0:00 /usr/local/apache2.4/bin/httpd -k start
root     107144  0.0  0.0 112728   976 pts/0    R+   21:45   0:00 grep --color=auto apache

现在的进程用户是apache

在浏览器访问
在这里插入图片描述

MYSQL源码编译
Mysql 5.5.15 以后,使用了新的 cmake 编译方式,所以先安装 cmake。 以前的版本直接 configure然后make ,make install ,对于5.5.16的后续版本,将需要先使用cmake之后再make,然后make install
CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的 makefile 或者 project 文件,能测试编译器所支持的 C++特性,类似 UNIX 下的automake。 只是 CMake 的建构档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

备注:数据库编译安装核心数要求要4核以上,4核一下,建议用yum安装,或者用二进制包安装,二进制包,解压初始化就可以使用
检查是否有安装mysql数据库

[root@localhost ~]# rpm -qa |grep mysql
[root@localhost ~]# rpm -qa | grep mariadb
[root@localhost ~]# yum -y  remove `rpm -qa | grep mariadb`

解决依赖 gcc等相关在编译apache已安装

[root@localhost ~]# yum install -y  gcc-c++ ncurses-devel perl-Data-Dumperpython-devel openssl openssl-devel
[root@localhost ~]#yum -y install perl perl-devel autoconf
[root@localhost ~]#yum -y install zlib zlib-devel cmake ncurses ncurses-devel bison bison-devel

安装boost
如果安装的MySQL5.7及以上的版本,在编译安装之前需要安装boost,因为高版本mysql需要boots库的安装才可以正常运行。否则会报CMake Error at cmake/boost.cmake:81错误
下载boost

[root@localhost ~]#wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
[root@localhost ~]#tar -xf boost_1_59_0.tar.gz  -C /usr/local/
[root@localhost ~]# mv /usr/local/boost_1_59_0/ /usr/local/boost

在预编译安装MySQL时要加上-DWITH_BOOST=/usr/local/boost
下载mysql

[root@localhost ~]#wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28.tar.gz   #5.7.28版本
[root@localhost ~]#wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24.tar.gz    #5.7.24版本

解压到指定目录

[root@localhost ~]#tar -xf mysql-5.7.28.tar.gz -C /usr/local && cd /usr/local/mysql-5.7.28

创建mysql运行用户

[root@localhost ~]# useradd -M -s /sbin/nologin mysql    
 **预编译**
[root@localhost ~]#cd /usr/local/mysql-5.7.28
[root@localhost mysql-5.7.28]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  \
> -DWITH_BOOST=/usr/local/boost \
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
> -DMYSQL_DATADIR=/usr/local/mysql/data \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_EXTRA_CHARSETS=all \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_MEMORY_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 \
> -DWITH_INNODB_MEMCACHED=1 \
> -DWITH_DEBUG=OFF \
> -DWITH_ZLIB=bundled \
> -DENABLED_LOCAL_INFILE=1 \
> -DENABLED_PROFILING=ON \
> -DMYSQL_MAINTAINER_MODE=OFF \
> -DMYSQL_TCP_PORT=3306  \
> -DMYSQL-USER=mysql
*********************************参数解释****************************************************************************
DCMAKE_INSTALL_PREFIX                                      #制定mysql的安装根目录,目录在安装的时候会自动创建,这个值也可以在服务器启动时,用--basedir来设置
DMYSQL_UNIX_ADDR                                           #服务器与本地客户端进行通信的Unix套接字文件,必须是绝对路径,默认位置/tmp/mysql.sock,可以在服务器启动时,用--socket改变
DDEFAULT_CHARSET                        #mysql默认使用的字符集,不指定将默认使用Latin1西欧字符集
DDEFAULT_COLLATION                           #默认字符校对
DWITH_EXTRA_CHARSETS                  #制定mysql拓展字符集,默认值也是all支持所有的字符集
DWITH_MYISAM_STORAGE_ENGINE 
DWITH_INNOBASE_STORAGE_ENGINE
DWITH_MEMORY_STORAGE_ENGINE
#静态编译MYISAM,INNOBASE,MEMORY存储引擎到MYSQL服务 器,这样MYSQL就支持这三种存储引擎
DWITH_READLINE                    #支持readline库
DENABLED_LOCAL_INFILE                    #允许本地倒入数据,启用加载本地数据
DMYSQL_DATADIR                                #mysql数据库存放路径
DMYSQL-USER                                    #运行mysql的用户

这些编译参数的帮助寻找方法:
http://www.mysql.com→→Documentation→→选择对应的版本→→HTML Online→→View→→Installation & Upgrades→→Installing MySQL from Source →→MySQL Source-Configuration Options→→
http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

编译&安装

[root@localhost mysql-5.7.28]# make -j `grep processor /proc/cpuinfo | wc -l` && make install

配置文件

[root@localhost mysql-5.7.28]# mkdir -p /usr/local/mysql/{data,tmp,run}
[root@localhost mysql-5.7.28]# chown -R mysql.mysql /usr/local/mysql/
[root@localhost ~]#vim /etc/my.cnf
[client]

default-character-set=utf8
socket=/usr/local/mysql/run/mysql.sock


[mysql]
port=3306
socket=/usr/local/mysql/run/mysql.sock

[mysqld]
# skip-name-resolve
# skip-external-locking
max_connections=300
log_timestamps=SYSTEM
# GENERAL #
user=mysql
port=3306
character_set_server=utf8
collation-server=utf8_general_ci
default_storage_engine=InnoDB
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/run/mysqld.pid
socket=/usr/local/mysql/run/mysql.sock
sql_mode='NO_ENGINE_SUBSTITUTION'

修改启动脚本

[root@localhost mysql-5.7.28]#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.7.28]# vim /etc/init.d/mysqld
 //更改启动脚本中指定mysql位置
 basedir=
datadir=
#修改为
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

初始化数据库

[root@localhost mysql-5.7.28]# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --initialize-insecure

配置mysql服务

[root@localhost mysql-5.7.28]# chkconfig --add mysqld         #添加到系统服务
[root@localhost mysql-5.7.28]# chkconfig mysqld on             #设置开机自启

启动服务

[root@localhost mysql-5.7.28]# service mysqld start   #启动
Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
........... SUCCESS! 
[root@localhost mysql-5.7.28]#service mysqld  restart    #重启
[root@localhost mysql-5.7.28]#service mysqld  stop       #停止

设置环境变量

[root@localhost mysql-5.7.28]# vim /etc/profile
添加下面的内容到最后
export PATH=/usr/local/mysql/bin:$PATH
保存退出
[root@localhost mysql-5.7.28]# source /etc/profile

登录服务,设置密码

[root@localhost mysql-5.7.28]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.28 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> set password for root@localhost =password('Admin123!@#');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 
退出,用新密码登录
[root@localhost mysql]# mysql -uroot -p'Admin123!@#'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.28 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

查看数据的字符集

mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

编译安装配置PHP

PHP原始为Personal Home Page的缩写,已经正式更名为 “PHP: Hypertext Preprocessor”。
Apache对于php的解析,就是通过众多Module中的php Module来完成的,把php最终集成到Apache系统中,还需要对Apache进行一些必要的设置!

解决依赖
php-cli, php-common, libzip.

[root@localhost ~]# yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel
[root@localhost ~]# yum install -y libxml2-devel
[root@localhost ~]# tar -xf php-5.6.40.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/php-5.6.40/
[root@localhost php-5.6.40]# ./configure --prefix=/usr/local/php \     #指定安装路径
> --with-apx2=/usr/local/apache2.4/bin/apxs \                  #用apache的apxs工具将php编译成apache的一个模块
> --with-config-file-path=/usr/local/php \       #php的主配置文件php.ini路径
> --with-mysql=/usr/local/mysql/         #与mysql结合,如果不跟路径,编译出来的版本将是低版本            
[root@localhost php-5.6.40]# ./configure --prefix=/usr/local/php \
> --with-apx2=/usr/local/apache2.4/bin/apxs \
> --with-config-file-path=/usr/local/php \
> --with-mysql=/usr/local/mysql/  \
> --with-zlib \
> --with-curl \
> --enable-fpm \
> --with-gd \
> --with-openssl \
> --with-mhash \
> --with-mysqli \
> --with-pdo_mysql \
> --with-iconv-dir \
> --enable-sockets \
> --with-xmlrpc \
> --enable-zip \
> --enable-soap  \
> --with-freetype-dir=/usr/lib64 \
> --enable-mbstring  \
> --enable-xml

******看到下面的内容说明configure成功**********************
Thank you for using PHP.

config.status: creating php5.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
configure: WARNING: unrecognized options: --with-apx2

安装

[root@localhost php-5.6.40]# make -j `grep processor /proc/cpuinfo | wc -l` && make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
Installing PHP CLI binary:        /usr/local/php/bin/
Installing PHP CLI man page:      /usr/local/php/php/man/man1/
Installing PHP CGI binary:        /usr/local/php/bin/
Installing PHP CGI man page:      /usr/local/php/php/man/man1/
Installing build environment:     /usr/local/php/lib/php/build/
Installing header files:           /usr/local/php/include/php/
Installing helper programs:       /usr/local/php/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/php/lib/php/
[PEAR] Archive_Tar    - installed: 1.4.4
[PEAR] Console_Getopt - installed: 1.4.1
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util       - installed: 1.4.3
[PEAR] PEAR           - installed: 1.10.7
Wrote PEAR system config file at: /usr/local/php/etc/pear.conf
You may want to add: /usr/local/php/lib/php to your php.ini include_path
/usr/local/src/php-5.6.40/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f phar.phar /usr/local/php/bin/phar
Installing PDO headers:           /usr/local/php/include/php/ext/pdo/

php配置文件

[root@localhost php-5.6.40]#cp php.ini-production /usr/local/php/php.ini

检测编译安装结果
只有有下面这两个文件(模块),代表我们的apache就可以支持php了
[root@localhost php-5.6.40]# ls /usr/local/apache2.4/modules/httpd.exp
/usr/local/apache2.4/modules/httpd.exp
[root@localhost php-5.6.40]# ls /usr/local/apache2.4/modules/libphp5.so
/usr/local/apache2.4/modules/libphp5.so

配置Apache支持PHP

[root@localhost php-5.6.40]# vim /usr/local/apache2.4/conf/httpd.conf

<IfModule dir_module>
    DirectoryIndex index.html index.php    #添加index.php
</IfModule>
 #下面两行是添加的,需要添加以
# If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz  #上面两行是以前有的
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    #
    # AddHandler allows you to map certain file exte

修改完,重启下Apache服务

[root@localhost php-5.6.40]# service httpd restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

测试

[root@localhost php-5.6.40]# vim /usr/local/apache2.4/htdocs/index.php
<?php
	phpinfo();
?>

然后使用客户端浏览此页面

由于好久没有搭环境,在linux上搭apache、php的环境时,遇到libphp5.so 无法生成这个问题,我也困扰了我半天,很是郁闷。从网上找了各种资料,都是瞎转载,太无聊的一堆人了,自己成功没有成功的先转载,鄙视。 害的我尝试了半天也没有解决。下面列出我的正确解决办法:

       常见问题一:配置apache打开libphp5.so文件后提示错误
                      /usr/local/apache2/modules/libphp5.so: No such file or directory
    

    解答: 发现modules下面没有libphp5.so文件,说明安装apache2的时候配置有问题,需要重新编译安装,必须采用  ./configure --enable-so 这种方式。然后重新安装 make clean  ->   make  -> make install。 然后重新安装php,安装时要求采用./configure --with-apxs2=/usr/local/apache2/bin/apxs 这种方式  然后  make  &  make install。如果还出现这个问题,可以重新安装一下apache 和 php



    常见问题二:在centOS中 配置apache的php时提示错误

              cannot restore segment prot after reloc: Permission denied

      解答:可以百度查看资料,关于centOS中的selinux。SELINUX的问题,对LIB库的保护。

          关闭 SELINUX 
          vi /etc/selinux/config 
          #SELINUX=enforcing #注释掉 
          #SELINUXTYPE=targeted #注释掉 
          SELINUX=disabled #增加 
          :wq!#保存退出  
          shutdown -r now#重启系统  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rio520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值