技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Apache>正文
Linux下apache虚拟主机配置多版本php同时运行
2019年07月01日 Apache 暂无评论 ⁄ 被围观 2,495次+

学习本教程须掌握:

1、Linux下指定版本编译安装LAMP

https://www.osyunwei.com/archives/9224.html

2、Linux下Apache虚拟主机配置

https://www.osyunwei.com/archives/9232.html

3、CentOS 7.x编译安装Nginx1.10.3+MySQL5.7.16+PHP5.2 5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3多版本全能环境

https://www.osyunwei.com/archives/10057.html

安装约定:

Apache版本:2.2

Apache安装路径:/usr/local/apache

Apache虚拟主机配置文件:/usr/local/apache/conf/vhost

php版本:支持php5.2到最新的php7.3

php安装路径:/usr/local/php56      /usr/local/php73

开始配置:

1、安装Apache的mod_fcgid模块   #mod_fcgid模块可以实现Apache下多版本php同时运行

cd  /usr/local/src

wget   https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz   #下载

tar -zxvf mod_fcgid-2.3.9.tar.gz

cd mod_fcgid-2.3.9

APXS=/usr/local/apache/bin/apxs      ./configure.apxs

make

make install

2、修改apache配置文件

cp  /usr/local/apache/conf/httpd.conf   /usr/local/apache/conf/httpd.conf-bak   #备份

vi  /usr/local/apache/conf/httpd.conf   #编辑

#在Group apache下面一行添加如下代码,如果配置文件有就不用重复添加。

LoadModule fcgid_module modules/mod_fcgid.so

FcgidMaxProcesses 1000  #php-cgi最大的进程数

MaxRequestLen    52428800   #php程序最大文件上传限制50MB

:wq!  #保存退出

一般安装完第一步mod_fcgid模块,会在apache配置文件httpd.conf中自动添加上面第一行的代码。

apache  php fastcgi模式下,默认上传文件大小只有131072字节(128kb),需要在apache的配置文件中修改,

fastcgi模式下,在php.ini中修改upload_max_filesize等参数无效。

3、配置虚拟主机文件

cd  /usr/local/apache/conf/vhost

vi  osyunwei.com.conf   #编辑虚拟主机配置文件,添加下面的红色字体代码。

<VirtualHost *:80>

# ServerAdmin webmaster@dummy-host.example.com

DocumentRoot /data/root/osyunwei.com/www.osyunwei.com/wwwroot/

ServerName www.osyunwei.com

ServerAlias osyunwei.com

# ErrorLog logs/dummy-host.example.com-error_log

# CustomLog logs/dummy-host.example.com-access_log common

CustomLog "|/usr/local/apache/bin/rotatelogs /upload/log/osyunwei.com/www.osyunwei.com/logf iles/access_log%Y%m%d.log 86400 480" combined

DirectoryIndex index.htm index.html index.php

AddHandler fcgid-script .fcgi .php  #映射fcgi执行脚本

FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000  #设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程 在处理完所有请求前退出

FcgidMaxRequestsPerProcess 1000  #php-cgi每个进程的最大请求数

FcgidIOTimeout 300  #最大执行时间

FcgidIdleTimeout 300  #最大空闲时间

FcgidMaxRequestLen 2097152  #限制最大请求字节

MaxRequestLen    52428800   #php程序最大文件上传限制50MB,默认只有2MB

FcgidInitialEnv PHPRC "/usr/local/php73/"   #php安装路径

FcgidWrapper "/usr/local/php73/bin/php-cgi" .php    #php-cgi脚本执行路径

<Directory "/data/root/osyunwei.com/www.osyunwei.com/wwwroot/">

php_admin_value open_basedir "/data/root/osyunwei.com/www.osyunwei.com/wwwroot/:/tmp/"

Options Includes ExecCGI FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

#其他的虚拟主机设置方法一样,php安装路径部分,根据服务器上php实际安装路径填写。

#apache使用mod_fcgid模块后,php_admin_value open_basedir 参数就不起作用了,防止php脚本跨站必须去php.ini配置文件中设置。

[HOST=www.osyunwei.com]

[PATH=/data/root/osyunwei.com/www.osyunwei.com/wwwroot/]

open_basedir=/data/root/osyunwei.com/www.osyunwei.com/wwwroot/:/tmp/

4、测试虚拟主机

在虚拟主机目录下上传测试文件,查看php版本信息的变化。

ceshi.php

<?php

phpinfo();

?>

打开测试页面,会看到php版本已经变成了7.3

特别注意:

这样配置的apache、php运行模式为apache fastcgi模式,此模式下apache的伪静态规则需要做调整。

如:默认的

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

规则在apache fastcgi模式下会导致No input file specified.

修改成

RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

就正常了。

Thinkphp框架的apache规则.htaccess文件,默认为:

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

</IfModule>

apache fastcgi模式需要调整为:

<IfModule mod_rewrite.c>

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

#RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

</IfModule>

至此,Linux下apache虚拟主机配置多版本php同时运行教程完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2019 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接