Centos 配置 Apache + PHP 環境

公司服務器遷移至阿里雲,openapi 模塊須要 apache + php;php

1、簡單的 yum 安裝html

    安裝 Apache、PHP 組件mysql

    yum install httpd php c++

    安裝 apache 擴展git

    yum install httpd-manual mod_ssl mod_perlgithub

    安裝 PHP 擴展正則表達式

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

    至此簡單的 apache 和 php 環境便安裝完成:sql

    systemctl start httpd  apache

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

    便可在瀏覽器中訪問 apache 主頁;

    yum 安裝的版本通常較低,阿里雲中 yum 倉庫中 apache 最新的爲 2.4.2三、PHP 的最新版本爲 5.6.23,yum 安裝只加載了默認的模塊,因此每每須要再次編譯添加須要的模塊,而後用編譯好的文件替換 httpd 和 php 包。。。

 

編譯安裝前準備

    yum install gcc gcc-c++ make wget

 

2、編譯安裝 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

 

2、編譯安裝 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

3、配置 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 信息

 

    

    4、PHP 安裝 redis 拓展

    

一、安裝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/

二、配置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>
相關文章
相關標籤/搜索