为什么要源码编译*
安装之前先关闭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#重启系统