公司服務器遷移至阿里雲,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"
官網下載源碼,編譯安裝後,配置好 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>
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>