APP下载

基于WampServer 环境的多版本PHP 网站群搭建

2019-04-03柏建明刘斌文董银麟

现代计算机 2019年35期
关键词:配置文件语句站点

柏建明,刘斌文,董银麟

(中色(宁夏)东方集团有限公司,石嘴山753000)

0 引言

WampServer(简称Wamp),就是Windows+Apache+MySQL+PHP 的网站搭建集成环境,即在Windows 下的Apache、MySQL 和PHP 的服务器软件。在一台服务器上的Apache 和MySQL 可以管理多个站点和数据库,但要服务器同时兼容各种版本的PHP 程序代码就显得尤为费劲。同一服务器上多个不同的网站可能使用不同版本的PHP 语言和插件,在网站集成环境中单一的设置PHP 版本号,往往会影响个别站点的正常响应和界面显示,造成站点无法访问。本文重点在不使用虚拟主机的物理主机上通过对Wamp 文件改写和特别配置,实现多个版本PHP、不同的CMS(网站内容管理系统)站点同时在线运行,解决服务器中已有低版本PHP 网站和新建高版本PHP 网站共存的问题。

单一CMS 管理下的网站群管理不涉及多版本PHP 问题,本文不做讨论。本文中的网站群主要指同一主机中使用不同CMS 搭建、内容可以完全独立的多个网站。为方便说明,本文使用两个WordPress CMS,安装在不同子目录下,以子目录区分不同站点,且分别启用不同版本的PHP。本文中的虚机指的是WampServer 的一种多网站解析方式,不同于具有独立操作系统的虚拟主机。本文涉及到的软件版本号:

WampServer 3.1.7,Apache 2.4.37,MySQL 5.7.24,PHP 5.6.40 及以上,fcgid 2.3.10。

1 WampServer安装与配置

1.1 数据库配置

安装Wamp 前,必须先安装VC2012、VC2013、VC2015 几个必要的运行库。Wamp 安装成功后,在右下角的系统托盘里右键点击图标在菜单里设置为中文界面,左键点击,将服务“切换到在线状态”(此操作是直接改写Apache 的配置文件httpd.conf)。

Options+Indexes+FollowSymLinks+Multiviews+ExecCGI

AllowOverride all

#由原来的Require local 更改为Require all granted

Require all granted

再选择“phpMyAdmin”进入MySQL 数据库管理器(即登录http://localhost/phpmyadmin/,可以在登录时选择MariaDB 数据库,二者区别只在高版本MySQL 的使用有版权限制),初始账号/密码为:root/空。

新建网站群的管理员账号webadmin,设置密码webpassword。新建wordpress_one 数据库和wordpress_two 数据库(字符集与排序规则utf8mb4_unicode_ci),并在权限中将这两个数据库的权限赋予账号webadmin,这两个数据库将分别用于下文中安装的两个网站。最后设置一下数据库系统管理员root 的账号密码。

1.2 网站文件安装

假设要建两个域名分别为www.webone.com 和www.webtwo.com 的网站,将两个WordPress 安装包分别解压放在Wamp 安装子目录“wamp64wwwwebone”和“wamp64wwwwebtwo”下,这两个网站的数据库分别对应wordpress_one 和wordpress_two。

在 服 务 器 本 地 以 类 似“http://localhost/www/web_one/wp-admin/setup-config.php”的方式分别安装子站。安装时需要输入以下信息(填写数据库的界面是英文,之后可以选择语言,可能出现错误提示“The site is experiencing technical difficulties”,刷新后继续出现安装画面):

数据库名:wordpress_one(网站www.webone.com 的数据库);

用户名:webadmin(网站群管理员账号);

用户密码:webpassword(网站群管理员账号的密码);

安装完成后,后台自动将以上信息填入了Word-Press 配置文件wp-config.php 中。另一个网站以同样的方式安装。不同的CMS 有不同的安装界面和配置文件,具体的安装方式要参照其相应的安装说明进行。

1.3 Wamp的多站点解析设置

服务器上有多个网站时,需要Apache 建立网站域名和网站文件路径对应关系。通过图形界面配置可以自动对路径“wamp64inapacheapache2.4.37confextra”下的httpd-vhosts.conf 文件添加相应内容。

如图1 所示在虚机管理器的图形界面(左键点击面板的“Your”、“VirtualHost Management”,打开http://localhost/add_vhost.php)填写网站www.webone.com 域名和网站目录信息(注意路径中是反斜杠),生成httpdvhosts.conf 文件,同时自动生成了本地hosts 文件的站点域名解析。另一个网站也做类似设置。

图1 配置网站www.webone.com的虚机管理

这样生成的文件配置里,只能本地访问网站的。可以在执行以上操作前,修改路径“wamp64www”下的文件add_vhost.php。

ServerName{$vh_name}

DocumentRoot"{$vh_folder}"

Options+Indexes+Includes+FollowSymLinks+MultiViews

AllowOverride All

#由原来的Require local 更改为Require all granted

Require all granted

此设置可以使虚机管理器在自动生成httpdvhosts.conf 文件时,直接填写“Require all granted”语句而具有非本地访问权限。如果不对此文件预先修改,则需要手动去将httpd-vhosts.conf 文件中的网站访问权限改为“Require all granted”。

2 Wamp网站群多版本PHP配置

多站点实现多版本PHP 运行的核心方法是使用Apache 的mod_fcgid 模块,mod_fcgid 模块是Apache 的FastCGI 实现,在Apache 的2.4 以后的版本中得到支持。FastCGI 是语言无关的、可伸缩架构的CGI 开放扩展,其主要行为是让CGI 解释器进程常驻内存并接受FastCGI 进程管理器调度,因此获得较高的性能。

2.1 安装加载fcgid模块

下载fcgid 文件包mod_fcgid-2.3.10-win64-VS16.zip(下载地址https://www.apachelounge.com/download/),解压后将其中的mod_fcgid.so 文件复制到服务器中Apache 模 块 目 录 里( 如 C:wamp64inapacheapache2.4.37modules)。然后在httpd.conf 文件中加载相应的模块,添加语句LoadModule fcgid_module modules/mod_fcgid.so(最好和其他LoadModule 语句放在一起)。

2.2 修改httpd.conf文件

引入fcgid 后,需要进一步对fcgid 的运行参数进行配置。左键点击系统托盘中Wamp 的Apache 菜单,打开httpd.conf 文件(wamp64inapacheapache2.4.37conf),修改或添加以下内容:

#在下面的语句末尾添加“+ExecCGI”,允许该目录下使用CGI 解释器(也可以在httpd-vhosts.conf 文件的每个主机里单独添加)

Options+Indexes+FollowSymLinks+Multiviews+ExecCGI

AllowOverride all

Require all granted

在以上模块之后添加下面的模块内容,保证在启用fcgid 之后能正常登录MySQL 数据库。

Options+Indexes+FollowSymLinks+Multiviews+ExecCGI

AllowOverride all

Require all granted

在httpd.conf 文件末尾添加以下模块的所有内容,确定执行fcgid 时的主要参数。

#添加映射将文件扩展名映射到指定的处理程序

AddHandler fcgid-script.fcgi.php

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

FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000

#设置php-cgi 每个进程的最大请求数

FcgidMaxRequestsPerProcess 1000

#设置php-cgi 最大进程数

FcgidMaxProcesses 5

#设置fcgid 的通信超时时间

FcgidIOTimeout 120

#超时终止空闲fcgid 程序

FcgidIdleTimeout 120

#设置启用fcgid 后上传附件的大小值(单位是字节),如下16777216=16M

FcgidMaxRequestLen 16777216

#指定运行默认PHP 版本时的php.ini 配置文件所在的文件夹路径

FcgidInitialEnv PHPRC "C:/wamp64/bin/apache/apache2.4.37/bin"

#指定默认PHP 版本,同wamp 面板中设置的PHP 版本保持一致

FcgidWrapper "C:/wamp64/bin/php/php5.6.40/php-cgi.exe" .

php

#指定可执行PHP 代码的文件类型

AddType application/x-httpd-php.php

2.3 修改httpd-vhosts.conf文件

修改httpd-vhosts.conf 文件,针对具体的网站指定不同版本的PHP。打开路径“wamp64inapacheapache2.4.37confextra”下的httpd-vhosts.conf 文件(即图1 生成的配置文件),对网站www.webone.com 和www.webtwo.com 的配置信息做如下内容添加。

ServerName www.webone.com

DocumentRoot"c:/wamp64/www/webone"

#添加以下两条语句,指明网站www.webone.com 运行php7.0.33 版本,

FcgidInitialEnv PHPRC"C:/wamp64/bin/php/php7.0.33"

FcgidWrapper "C:/wamp64/bin/php/php7.0.33/php-cgi.exe" .php

Options+Indexes+Includes+FollowSymLinks+MultiViews

AllowOverride All

Require all granted

#

ServerName www.webtwo.com

DocumentRoot"c:/wamp64/www/webtwo"

#添加以下两条语句,指明网站www. webtwo.com 运行php7.3.1 版本

FcgidInitialEnv PHPRC"C:/wamp64/bin/php/php7.3.1"

FcgidWrapper "C:/wamp64/bin/php/php7.3.1/php- cgi.exe" .php

Options+Indexes+Includes+FollowSymLinks+MultiViews

AllowOverride All

Require all granted

这两个网站指定了不同版本的PHP 解释器,对各自的代码和插件有不同的兼容性和特点。这里指定了PHP 较高的版本,如果这里不特别指明PHP 版本,则网站默认运行系统设置里指定的低版本PHP 5.6.40,以便适应较旧的网站。

3 结语

相对于在服务器上启用多个Web 服务器(例如Apache 和IIS)分别配置或以虚拟主机方式隔离网站主体的方式,本方法仅使用Apache 服务器并引入fcgid模块来解决多网站的PHP 版本冲突问题,配置方式简单且系统运行稳定,避免了多Web 服务器的干扰影响,也避免使用虚拟主机造成系统资源消耗过大。非常适合集团性企业的子分公司各门户网站统一管理,也适合网站托管集成商有效提高云资源利用率。

猜你喜欢

配置文件语句站点
基于Docker的实时数据处理系统配置文件管理软件的设计与实现
从Windows 10中删除所有网络配置文件
用软件处理Windows沙盒配置文件
互不干涉混用Chromium Edge
基于Web站点的SQL注入分析与防范
积极开展远程教育示范站点评比活动
怕被人认出
先进站点应与落后站点开展结对帮扶
我喜欢
冠词缺失与中介语句法损伤研究