LAMP架构由Linux、apache(httpd)、MySQL/MariaDB和php/perl/python四部分组成,其工作过程为:当客户端请求的是静态资源时,web服务器会直接把静态资源返回给客户端;当客户端请求的是动态资源时,httpd的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接MySQL取得数据然后进行运算,运算的结果转为静态资源由web服务器返回给客户端​(如下图)​。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库

    在上一篇中我们已经了解了FastCGI模式的工作原理,此篇通过编译安装基于FastCGI模式来实现多虚拟主机的wordpress和discuz的LAMP架构。笔者这边准备了两台主机,其中CentOS7主机作为httpd+php服务器,取名为web-server;CentOS8主机作为数据库服务器,取名db-sever;客户端在Windows的浏览器中查看效果。

  1. 编译安装MariaDB10.7.3

1.1 下载MariaDB10.7.3

    MariaDB目前已更新到10.9.0版本,考虑到最新版可能不太稳定,笔者这边通过官网​(下载选择界面:​https://mariadb.org/download/​下载10.7.3版本进行演示,注意选择的时候要选择source,同时镜像站点选择阿里云,下载会比较快。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_02

    下载完毕,将压缩包解压到想要存放的目录下,一般为/usr/local目录。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_03

1.2 下载依赖包

​    编译安装所需的依赖包较多,具体如下图。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_04

1.3 创建用户、组和相关目录

    根据使用习惯,来创建MariaDB服务的专用账号mysql用户和组;创建数据存放路径/data/mysql,将权限交给mysql;创建程序安装路径/usr/local/mysql。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_05

1.4 编译、安装

    进入已解压的/usr/local/mariadb-10.7.3目录下,利用cmake进行读取源文件,并生成相关Makefile文件。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_06

    cmake环节不出问题的话即可开始进行编译、安装,中间环节如果报错,需要删除掉CMakeCache.txt文件重新进行编译。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_07

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_08

1.5 启动脚本文件和配置文件

    拷贝support-files/目录下的mysql.server文件至/etc/init.d/目录下,取名为mysqld作为启动脚本文件,并给予执行权限。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_09

    CentOS8在进行编译安装时是没有参考配置文件的,因此需自己手动创建一个,配置文件中需写明服务的程序存放路径和数据存放路径,也可以加入server-id等。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_10

1.6 数据库初始化及更改相关权限

    利用/usr/local/mysql/scripts/目录下的mariadb-install-db文件进行数据初始化,并指定数据存放路径为/data/mysql。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_11

    此时还需将/usr/local/mysql的权限改为root,将/data/mysql目录下的文件权限改为mysql。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_12

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_13

1.7 启动服务和安全初始化

​    在完成上述的操作后,MariaDB已经可以启动。接下来可以进行安全初始化操作,安全初始化环节,可以设置是否允许数据库远程登录、是否删除测试数据库和更换密*码等。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_14

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_15

1.8 生成PATH变量

​     为了方便MariaDB服务的开启、关闭等操作,可将PATH变量写入到脚本中,并通过source命令使其生效。此时我们就可以直接使用mysql +用户名+密*码进行登录。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_16

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_17

1.9 创建数据库及用户

    根据规划,需创建wordpress和discuz的数据库,可以将两种服务的数据库放在一起,但是为了方便管理,建议针对不同的服务创建各自的数据库,同时需创建对应的授权账号。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_18


  1. 编译安装httpd2.4.53

2.1 下载相关包

    由于笔者的http服务是放在CentOS7主机上安装,部分依赖包可直接通过yum下载,但apr和apr-util版本过旧,可能会导致编译受影响,需通过官网​(下载选择界面:https://dlcdn.apache.org/apr/​下载较新的版本。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_19

    Apache部分,笔者就选择最新的2.4.53​(下载选择界面:https://dlcdn.apache.org/httpd/​。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_20

    依赖包部分主要有gcc、pcre-devel、openssl-devel和expat-devel四个。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_21

2.2 解压及改名

    将下载的三个压缩包进行解压,同时将解压后的apr和apr-util包移动到解压后httpd包目录下。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_22

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_23

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_24

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_25

2.3 执行configure脚本

    进入到解压过的httpd目录下,利用​configure脚本来进行编译安装的第一步,选项部分可指定文件安装的位置、支持哪些模块等。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_26

2.4 编译、安装

    在configure脚本不出错的情况下,编译、安装一般不会出错,执行​make​命令进行编译,如果要使用多核编译,可以使用-j,编译完成后,执行 ​make install​ 命令进行安装。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_27

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_28

2.5 PATH变量及配置文件

    为了省去每次启动服务都要写全路径,可将路径写入脚本中,此时已经可以开启服务。笔者这边在执行configure脚本的时候,指定了文件安装位置在/apps/httpd目录下,而/apps/httpd/conf/httpd.conf配置文件中还需做如下修改:

    ①默认用户和组是daemon,可以改成apache,如果没有apache的用户则需创建;

    ②取消“LoadModule proxy_module modules/mod_proxy.so”和“LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so”两行的注释;

    ③在“DirectoryIndex index.html ”中间添加index.php作为默认页面;

    ④添加“AddType application/x-httpd-php .php”和“ProxyRequests Off”,让服务支持php后缀文件,并开启反向代理功能;

    ⑤添加wordpress和discuz两个网站的信息。

    重启服务后,已经能通过浏览器查看网页。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_29

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_30

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_31

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_32

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_33

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_34


  1. 编译安装FastCGI方式的php7.3.10

3.1 下载

    CentOS7中的php版本为5.4,有点过旧,官方目前已更新到8.1.4版本,不过笔者这边有些依赖包下载不了,故选择下载7.3.10版本​(下载选择界面:​https://www.php.net/releases/​​。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_35

3.2 下载依赖包

    php7.3.10版本的编译安装需要gcc、libxml2-devel和bzip2-devel三个依赖包,部分7.3版本可能需要安装libmcrypt-devel包。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_36

3.3 编译安装

    对已下载的php压缩包进行解压,进入已解压的包目录下,执行​configure脚本指定文件安装位置等,在无报错的情况下根据主机的CPU核数来适当调大进行更快速地编译安装。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_37

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_38

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_39

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_40

3.4 PATH变量、启动文件和配置文件

    与大多数服务相同,为了方便开启或关闭服务等,建议将PATH变量写入到脚本中,因笔者这边是将FastCGI和http服务器放在同一台主机上,可以将两者的PATH变量写到同一个脚本,以便使用。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_41

    拷贝php.ini-production文件至/etc目录下,并取名为php.ini;同时将sapi/fpm/目录下的php-fpm.service文件拷贝至/usr/lib/systemd/system目录下作为启动文件。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_42

    进入到/apps/php/etc目录下,拷贝php-fpm.conf.default文件并命名为php-fpm.conf作为配置文件,将配置文件中的服务属主和属组改为apache,将pm.status_path改为fpm_status,启用此行和ping.path = /ping一行。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_43

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_44

    如果想提升php性能,省去每次加载和解析php的开销,可以创建一个opcache文件来进行加速。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_45

3.5 开启服务

    重新加载服务配置文件后即可开启php服务。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_46


  1. wordpress和discuz

    在准备wordpress和discuz之前,可以先创建两个目录用来存放解压后所需的文件。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_47

    此外,如果想要让浏览器中的主机ip以域名形式展现,可以在电脑C:\Windows\System32\drivers\etc目录下找到hosts文件,将对应的主机ip和想要使用的域名绑定起来即可。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_48

4.1 下载压缩包

    wordpress和discuz压缩包可通过官网进行下载,一般无版本要求,只要php不是过旧,选择最新版本即可。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_49

(官网下载地址:https://cn.wordpress.org/download/

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_50

(官网首页选择版本:https://www.discuz.net/)

4.2 解压并移动至指定文件夹

    wordpress下载最新版通常名为latest-zh_CN.tar.gz,解压后只有一个wordpress文件夹,将文件夹下的文件全部移动至/data/blog即可;discuz一般要用unzip进行解压,解压后会产生很多文件,只需将upload目录下的文件移动至/data/forum即可。移动完需修改文件属性,将属主和属组改为apache。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_51

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_52

4.3 安装wordpress和discuz

    只要前面的设置不出错,wordpress和discuz的安装基本不会失败,具体安装过程如下:

wordpress

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_53

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_54

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_55

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_56

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_57

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_58

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_59

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_60

discuz

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_61

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_数据库_62

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_63

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_64

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_65

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_php_66

4.4 检查数据库

    由于MariaDB在安装后只是针对不同的网站规划创建了各自的数据库,里面并不存在表等信息,在电脑客户端安装完wordpress和discuz后,登录数据库,可以发现两个网站的数据库中都自动生成了大量的表,从而验证了基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构实现。

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_67

编译安装基于FastCGI模式的多虚拟主机的wordpress和discuz的LAMP架构_mysql_68