文档章节

Centos 配置 Apache + PHP 环境

诸葛孔明亮
 诸葛孔明亮
发布于 2016/07/15 17:33
字数 1339
阅读 148
收藏 0

公司服务器迁移至阿里云,openapi 模块需要 apache + php;

一、简单的 yum 安装

    安装 Apache、PHP 组件

    yum install httpd php 

    安装 apache 扩展

    yum install httpd-manual mod_ssl mod_perl

    安装 PHP 扩展

    yum install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc 

    至此简单的 apache 和 php 环境便安装完成:

    systemctl start httpd  

    firewall-cmd --add-port=80/tcp

    即可在浏览器中访问 apache 主页;

    yum 安装的版本一般较低,阿里云中 yum 仓库中 apache 最新的为 2.4.23、PHP 的最新版本为 5.6.23,yum 安装只加载了默认的模块,所以往往需要再次编译添加需要的模块,然后用编译好的文件替换 httpd 和 php 包。。。

 

编译安装前准备

    yum install gcc gcc-c++ make wget

 

二、编译安装 Apache

    yum install zlib-devel openssl-devel

    yum install perl perl-devel

 

    1)编译安装 apr、apr-util

    APR ( Apache portable Run-time libraries,Apache 可移植运行库)主要为上层的应用程序提供一个可跨越多操作系统平台使用的底层支持接口库,在早期 的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。随着Apache的进一步开 发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。

    wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.2.tar.gz

    tar zxvf apr-1.5.2.tar.gz

    cd apr-1.5.2

    ./configure --prefix=/usr/local/apache/apr

    

#configure 报错
rm: cannot remove 'libtoolT': No such file or directory
直接打开/usr/local/src/apr-1.4.6/configure  把 $RM “$cfgfile” 注释掉

    make && make install

    wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.4.tar.gz

    tar zxvf apr-util-1.5.4.tar.gz

    cd apr-util-1.5.4

    ./configure --prefix=/usr/local/apache/apr-util --with-apr=/usr/local/apache/apr

    make && make install 

 

2)编译安装 pcre

    PCRE(Perl Compatible Regular Expression)是一个 Perl 库,包括 perl 兼容的正则表达式库。

    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz

    tar zxvf pcre-8.37.tar.gz

    cd pcre-8.37

    ./configure

    make && make install

 

3)编译安装 Apache

    wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.23.tar.gz

    tar zxvf httpd-2.4.23.tar.gz

    cd httpd-2.4.23

    ./configure --prefix=/usr/local/apache  --with-apr=/usr/local/apache/apr/bin/apr-1-config --with-apr-util=/usr/local/apache/apr-util/bin/apu-1-config --enable-module=so  --enable-mods-shared=all --enable-deflate --enable-expires --enable-headers --enable-cache --enable-file-cache --enable-mem-cache --enable-disk-cache --enable-mime-magic --enable-authn-dbm --enable-vhost-alias --enable-so --enable-rewrite --enable-ssl --with-mpm=prefork

    make && make install 

 

    添加软连接至安装目录:

    ln -s /usr/local/apache/conf /etc/httpd

    ln -s /usr/local/apache/bin/* /usr/sbin/

    httpd -k start 

    浏览器访问 http://ip

 

二、编译安装 PHP

1)安装库文件

    yum install libxml2-devel curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel net-snmp net-snmp-devel

    wget http://ftp.gun.org/pub/gnu/libiconv/libiconv-1.14.tar.gz http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

编译 libiconv 报错:./stdio.h:1010:1: 错误: ‘gets’未声明(不在函数内)

vim srclib/stdio.h

找到 1010 行,注释掉:

_GL_CXXALIASWARN (gets);
/* It is very rare that the developer ever has full control of stdin,
   so any use of gets warrants an unconditional warning.  Assume it is
   always declared, since it is required by C89.  */
//_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif

即可

    wget http://nchc.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz

    wget http://nchc.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz

    wget http://nchc.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

    分别解压并执行 ./configure && make && make install 

2)编译安装 PHP 

    wget http://cn2.php.net/distributions/php-5.6.23.tar.gz

    tar zxvf php-5.6.23.tar.gz

    cd php-5.6.23

    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc  --with-iconv=/usr/local/php/libiconv --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-jpeg-dir --with-png-dir --with-pear --with-freetype-dir --with-zlib --with-libxml-dir --with-iconv-dir --with-xmlrpc --with-mhash --with-mcrypt --with-curl --with-openssl --with-snmp --with-gettext --enable-pdo --enable-mbstring --enable-ctype --enable-simplexml --enable-ftp --enable-sockets --enable-gd-native-ttf --enable-sysvsem --enable-exif --enable-sysvshm --enable-xml --enable-dom --enable-simplexml --enable-shmop --enable-zip --enable-mbregex --enable-bcmath --enable-inline-optimization --enable-soap

PS:附带编译报错可查看:http://blog.sina.com.cn/s/blog_75a07c3b0101kcwb.html

cp php.ini-production /usr/local/php/etc/php.ini

ln -s /usr/local/php/bin/* /usr/sbin

三、配置 Apache 加载 PHP 模块

    编辑 Apache 配置文件 httpd.conf

    DirectroyIndex index.html index.shtml index.cgi index.php index.php3

    <IfModule mod_php5.c>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php .phtml .php3
    AddType application/x-httpd-php-source .phps
    </IfModule>

    PHPIniDir "/etc"   -- php.ini 文件位置

    防止 php info 文件 index.php

    <?php
    phpinfo();
    ?>

    httpd -k restart 

    浏览器打开 http://ip 即可看到 php 信息

 

    

    四、PHP 安装 redis 拓展

    

1、安装redis

下载:https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz

上传phpredis-2.2.4.tar.gz到/usr/local/src目录

cd /usr/local/src #进入软件包存放目录

tar zxvf phpredis-2.2.4.tar.gz #解压

cd phpredis-2.2.4 #进入安装目录

/usr/local/php/bin/phpize #用phpize生成configure配置文件

报 Cannot find autoconf. Please check your autoconf installation and the  $PHP_AUTOCONF  environment variable is set correctly and then rerun this script. 错则需要 

yum install autoconf

然后再执行 /usr/local/php/bin/phpize  生成 configure 配置文件

./configure --with-php-config=/usr/local/php/bin/php-config  #配置

make  #编译

make install  #安装

安装完成之后,出现下面的安装路径

/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

2、配置php支持

vi /usr/local/php/etc/php.ini  #编辑配置文件,在最后一行添加以下内容

添加

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226"  #redis.so 编译安装位置

extension="redis.so"

 

 

PHP 升级至 7.10

    官网下载源码,编译安装后,配置好 httpd.conf 发现并不能加载 php 模块。

    检查:

    LoadModule php7_module modules/libphp7.so

    还要添加:

告诉apache,碰到文件名以

.php, .php2, .php3, .php4, .php5, .php6或phtml结尾的文件使用

libphp7.so模块进行解析。

    <FilesMatch "\.ph(p[2-6]?|tml)$">

        SetHandler application/x-httpd-php

    </FilesMatch>

 

从 mod_php 切换到 php-fpm

    httpd.conf 配置文件需要注释掉以下配置:

LoadModule php5_module modules/libphp5.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
PHPIniDir "/usr/local/php/etc"

    然后去掉mod_proxy.so和mod_proxy_fcgi.so之前的注解,确保他们被apache加载。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

    如果php-fpm使用的是TCP socket,那么在httpd.conf末尾加上:

<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

 

 

    

© 著作权归作者所有

共有 人打赏支持
诸葛孔明亮
粉丝 2
博文 64
码字总数 53931
作品 0
浦东
运维
私信 提问
CentOS5/6编译安装LAMP

一、环境说明准备 本次使用CentOS5.5、Centos6.5,编译安装Apache2.4.20、Mysql-5.5.48、PHP-5.5.30。 编译PHP以Apache模块方式运行。编译PHP前需要先编译好Apache和Mysql。 1.关闭SELINUX,...

cy_lyh
2017/02/26
0
0
LAMP 系统服务搭建过程详解

LAMP 架构在企业里用得非常广泛,目前很多电商公司、游戏公司、移动互联网公司大多都采用这种架构。LAMP指的是Linux、Apache、MySQL、PHP。下面记录了 LAMP 架构系统服务的搭建过程。 一、M...

肖邦0526
2017/01/08
0
0
源码安装lamp

在实际环境中我们经常根据自己所处的公司环境进行配置,适合自己公司的配置。下面我们来介绍如何进行编译安装 安装前提 在CentOS7 系统: 关闭iptables 将selinux设置为disabled apr-1.6.2.ta...

Joah_Li
2017/10/18
0
0
Linux搭建lamp(Apache+PHP+Mysql环境)centos7.2版

我们更多的网站服务器是选择了Linux系统,这里建议你选择centos,这也是阿里云ecs推荐的系统,在服务器上比较推荐centos,特别对于新手,首选CentOS,并不是centos比Debian和ubuntu好,而是c...

麦可叔叔
2017/11/04
0
0
Linux服务器上简单搭建wordpress

一、登录linux服务器 选用CentOS 系统 (最好选用centOS 7版本以下的,不然进行下面的yum install安装的时候mysql-server可能会错误) 二、配置环境 (1)安装apache php mysql软件 在CentO...

1533816606116580
2018/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
2
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
1
0
cocoapods 用法

cocoapods install pod install 更新本地已经install的仓库 更新所有的仓库 pod update --verbose --no-repo-update 更新制定的仓库 pod update ** --verbose --no-repo-update...

HOrange
今天
3
0
linux下socket编程实现一个服务器连接多个客户端

使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后...

shzwork
昨天
3
0
android自定义viewgroup画背景

设计部要求背景实现一个背景边框带圆弧的效果: 所以想着用自定义控件画一个背景。 为了方便,继承的是LinearLayout,在onMeasure中先获取控件宽高: @Overrideprotected void onMeasure(in...

醉雨
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部