Centos 配置 Apache + PHP 环境

公司服务器迁移至阿里云,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>

 

 

    

转载于:https://my.oschina.net/u/2470065/blog/712617

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值