linux apache部署php,Linux下apache虚拟主机配置多版本php同时运行 | 系统运维

linux apache部署php,Linux下apache虚拟主机配置多版本php同时运行 | 系统运维_第1张图片

学习本教程须掌握:

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

2、Linux下Apache虚拟主机配置

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多版本全能环境

安装约定:

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   #编辑

linux apache部署php,Linux下apache虚拟主机配置多版本php同时运行 | 系统运维_第2张图片

#在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   #编辑虚拟主机配置文件,添加下面的红色字体代码。

linux apache部署php,Linux下apache虚拟主机配置多版本php同时运行 | 系统运维_第3张图片

# ServerAdmin [email protected]

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脚本执行路径

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

#其他的虚拟主机设置方法一样,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

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文件,默认为:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

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

apache fastcgi模式需要调整为:

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]

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

你可能感兴趣的:(linux,apache部署php)