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

mac2024-01-29  32

为什么要源码编译*

安装之前先关闭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#重启系统
最新回复(0)