第十四周作业

1、简述CGI与FASTCGI区别

cgi(Common Gateway Interface)公共网关接口

cgi在web服务器方面,fork(英文:复刻)出一个新的进程运行外部程序。
在对数据进行处理的进程方面,每个进程处理完后在返回给web服务器,web服务器在发内容给用户,fork进程退出。下次在发出请求时,又fork出一个新进程,如此往复。(不能独立于apache之外。子进程关系)(资源消耗大,缺少复用)
fastcgi在web服务器方面,用tcp的方式与远程的主机上的进程或者本地进程建立连接。
在对数据进行处理的进程方面,当web服务器收到请求时,不会fork出一个新的进程(这个进程在开启web服务器时就跟随启动并且不会退出),web服务器直接把内容传递给该进程,该进程收到请求处理处理结果并返回给web服务器,等待下一个请求的到来,不会退出。(能够独立于apache服务器,本身也可以作为一个单独的服务器)

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

1.实验前的准备:

CentOS8(10.0.8.8)----安装数据库,其他的都在CentOS7(10.0.8.7)上
apr-1.7.0.tar
apr-util-1.6.1.tar
httpd-2.4.46.tar
php-7.4.30.tar
wordpress-6.0-zh_CN.tar
Discuz_X3.3_SC_UTF8

2.二进制安装数据库:(略)
参考如下文章:

https://editor.csdn.net/md/?articleId=124878782
#为wordpress和discuz应用准备数据库和用户账号
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> create database discuz;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> grant all on wordpress.* to wordpress@'10.0.8.%' identified by "123456"; 
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> grant all on discuz.* to discuz@'10.0.8.%' identified by '123456';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

3.编译安装httpd2.4

#安装相关包
38  2022-07-09 16:32:19 yum install gcc pcre-devel openssl-devel expat-devel -y
#编译安装httpd
40  2022-07-09 16:37:00 tar xf apr-1.7.0.tar.bz2 
41  2022-07-09 16:37:07 tar xf apr-util-1.6.1.tar.bz2 
42  2022-07-09 16:37:18 tar xf httpd-2.4.46.tar.bz2 
43  2022-07-09 16:37:59 mv apr-1.7.0 httpd-2.4.46/srclib/apr
44  2022-07-09 16:38:37 mv apr-util-1.6.1 httpd-2.4.46/srclib/apr-util
45  2022-07-09 16:38:43 cd httpd-2.4.46/
46  2022-07-09 16:38:53 ./configure --prefix=/apps/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=event
47  2022-07-09 16:40:00 make -j 8 && make install
#准备环境变量
63  2022-07-09 16:54:21 vim /etc/profile.d/lamp.sh
			PATH=/apps/httpd/bin:$PATH(添加该行)
64  2022-07-09 16:54:54 .  /etc/profile.d/lamp.sh

#创建和配制用户和组
50  2022-07-09 16:44:20 useradd -s /sbin/nologin -r -u 88 apache
51  2022-07-09 16:44:41 vim /apps/httpd/conf/httpd.conf
修改为: 
user   apache
group  apache
取消该行注释(修改为event模式,编译时已指定,此项不再需修改,可选项)
LoadModule mpm_event_module modules/mod_mpm_event.so 
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

52  2022-07-09 16:45:38 httpd -M |grep mpm
		 mpm_event_module (shared)
53  2022-07-09 16:45:51 apachectl start

54  2022-07-09 16:46:10 vim /usr/lib/systemd/system/httpd.service
  [Unit](该语句块不改)
  [Service](该语句快修改部分)
  Type=forking
  ExecStart=/apps/httpd/bin/apachectl start
  ExecReload=/apps/httpd/bin/apachectl graceful
  ExecStop=/apps/httpd/bin/apachectl stop
  [Install](该语句块不改)
  
55  2022-07-09 16:48:07 systemctl daemon-reload
56  2022-07-09 16:48:17 systemctl restart httpd.service


4.编译安装 fastcgi 方式的 php 7.4

#安装相关包依赖epel源,如果yum仓库已配置可忽略(yum install -y epel-release),如果yum仓库没有配置,则:yum install -y epel-release

#相关包
57  2022-07-09 16:48:49 yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel   oniguruma-devel
#php7.4编译安装
58  2022-07-09 16:50:14 cd 
59  2022-07-09 16:50:30 tar xf php-7.4.30.tar.xz 
60  2022-07-09 16:50:45 cd php-7.4.30/
61  2022-07-09 16:50:57 ./configure --prefix=/apps/php --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl   --with-zlib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo
62  2022-07-09 16:51:42 make -j 8 && make install

#准备环境变量
63  2022-07-09 16:54:21 vim /etc/profile.d/lamp.sh
		PATH=/apps/php/bin:/apps/httpd/bin:$PATH
64  2022-07-09 16:54:54 .  /etc/profile.d/lamp.sh
#查看是否成功
65  2022-07-09 16:55:02 php --version     #(显示成功)/apps/php/bin/php --version   = php --version 
PHP 7.4.30 (cli) (built: Jul  9 2022 16:53:30) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies


#准备php配置文件和启动文件
66  2022-07-09 16:55:23 cp php.ini-production /etc/php.ini
67  2022-07-09 16:55:34 cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
68  2022-07-09 16:55:45 cd /apps/php/etc
69  2022-07-09 16:55:52 cp php-fpm.conf.default php-fpm.conf
70  2022-07-09 16:56:04 cd php-fpm.d/
71  2022-07-09 16:56:19 cp www.conf.default www.conf

#修改进程所有者
72  2022-07-09 16:56:28 vim /apps/php/etc/php-fpm.d/www.conf
修改为: 
user   apache
group  apache
支持status和ping页面,修改为:
pm.status_path = /fpm_status
ping.path = /ping  
		
#支持opcache加速
73  2022-07-09 16:57:53 mkdir /etc/php.d/
74  2022-07-09 16:57:59 vim /etc/php.d/opcache.ini
增加如下内容:
[opcache]
zend_extension=opcache.so               
opcache.enable=1

75  2022-07-09 16:58:59 systemctl daemon-reload
76  2022-07-09 16:59:08 systemctl status php-fpm.service 
77  2022-07-09 16:59:32 systemctl start php-fpm.service 
78  2022-07-09 16:59:45 systemctl status php-fpm.service 


5.修改配置httpd支持php-fpm

79  2022-07-09 17:00:06 vim /apps/httpd/conf/httpd.conf
修改以下内容:
		(1)#取消下面两行的注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
		(2)#修改下面行,增加index.php
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
		(3)#增加下面内容
AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps(可不加)
ProxyRequests Off
		(4)#实现第一个虚拟主机
<virtualhost *:80>
servername wordpress.linux202207.com
documentroot /data/wordpress
<directory /data/wordpress>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1
#实现status和ping页面
ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1
CustomLog "logs/access_wordpress_log" common
</virtualhost>
		(5)#实现第二个虚拟主机
<virtualhost *:80>
servername discuz.linux202207.com
documentroot /data/discuz
<directory /data/discuz/>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/discuz/$1
CustomLog "logs/access_discuz_log" common
</virtualhost> 
		
83  2022-07-09 17:10:42 apachectl start 
84  2022-07-09 17:10:57 apachectl restart 

6.准备WordPress和discuz相关配置文件

#wordpress相关配置文件
87  2022-07-09 17:11:50 cd  /data
88  2022-07-09 17:12:03 mkdir wordpress discuz
91  2022-07-09 17:12:52 tar xf  wordpress-6.0-zh_CN.tar.gz 
92  2022-07-09 17:13:14 ll
93  2022-07-09 17:13:24 mv wordpress/ /data
95  2022-07-09 17:13:47 chown -R apache.apache /data/wordpress

#discuz相关配置文件
96  2022-07-09 17:14:09 unzip Discuz_X3.3_SC_UTF8.zip 
99  2022-07-09 17:14:50 mv upload/ /data/discuz
100  2022-07-09 17:15:06 chown -R apache.apache /data/

7.准备hosts文件(Windows中和虚拟机中)

#Windows中的路径C:\Windows\System32\drivers\etc
..\etc中有一个hosts文件(文件类型为:iCalendar文件)
增加以下内容:
10.0.8.7  wordpress.linux202207.com  discuz.linux202207.com

#在虚拟机中:
103  2022-07-09 17:30:15 vim /etc/hosts
	  10.0.8.7  wordpress.linux202207.com  discuz.linux202207.com

8.测试
(1)在物理机机中测试:
在这里插入图片描述
(2)在浏览器中测试:
在这里插入图片描述
在这里插入图片描述
测试成功,至此本实验成功。

3、通过loganalyzer展示数据库中的日志

架构图如下:
在这里插入图片描述
CentOS7:10.0.0.7

38  2022-07-10 17:07:21 vim /etc/rsyslog.conf 
#添加这行:(参照类似格式)
		*.info;mail.none;authpriv.none;cron.none     @10.0.0.18:514  (@:为UDP;@@:为TCP)
39  2022-07-10 17:09:58 systemctl restart rsyslog.service

CentOS8:10.0.0.8

与CS7类似

rstslog服务器:(CentOS8:10.0.0.18)

#在rstslog服务器上连接mysql模块相关的程序包
2  2022-07-03 21:32:30 yum install -y mysql-server
4  2022-07-10 17:05:23 rpm -ql rsyslog
/usr/lib/.build-id
/usr/lib/.build-id/e6
/usr/lib/.build-id/e6/aa0e40c19a2e0524d72780eee3b1698684cbe7
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog/mysql-createDB.sql

 #查看sql脚本文件内容
5  2022-07-10 21:39:47 cat /usr/share/doc/rsyslog/mysql-createDB.sql
CREATE DATABASE Syslog;
USE Syslog;
CREATE TABLE SystemEvents
(
        ID int unsigned not null auto_increment primary key,
        CustomerID bigint,
        ...
);
CREATE TABLE SystemEventsProperties
(
        ID int unsigned not null auto_increment primary key,
        SystemEventID int NULL ,
        ParamName varchar(255) NULL ,
        ParamValue text NULL
);


#将sql脚本复制到数据库服库上     
16  2022-07-10 21:41:13 scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.28:/data

#完成数据库服务器配置后,配置日志服务器将日志发送至指定数据库
vim   /etc/rsyslog.conf
#增加以下几行
module(load="ommysql")      #启动这个模块
*.info;mail.none;authpriv.none;cron.none             :ommysql:10.0.8.28,Syslog,rsyslog,123456 
(:ommysql:10.0.0.28,Syslog,rsyslog,123456  为固定模式
10.0.0.28数据库的ip;Syslog数据库服务器中的数据库名;rsyslog为授权登录的账号;123456为密码
)

#重启rsyslog服务
21  2022-07-10 22:07:56 systemctl restart rsyslog.service

MySQL服务器:(CentOS8:10.0.0.28)

#安装数据库
yum  install   -y  mysql.service
#启动数据库
26  2022-07-10 21:53:00 systemctl start mysqld
#导入sql脚本,创建相关数据库和表,并授权rsyslog能连接至当前服务器
27  2022-07-10 21:53:15 mysql < mysql-createDB.sql 
#创建相应的账号
create  user  rsyslog@'10.0.0.%'  identified by '123456';
grant all on Syslog.* to  rsyslog@'10.0.0.%';

测试:

#CS7(10.0.0.7)
[18:21:25 root@CS7-VM8-10 ~][#logger "this is a test log"

#CS8(10.0.0.28)
mysql> select  *  from SystemEvents\G;
*************************** 221. row ***************************
              ID: 221
        CustomerID: NULL
        ReceivedAt: 2022-07-11 18:51:08
DeviceReportedTime: 2022-07-11 18:51:08
          Facility: 1
......

到此说明:日志服务器将日志发送至指定的数据库完成。
LAP:(CentOS8:10.0.0.38)(loganalyzer展示web图形)

#安装httpd, php和相关软件包
109  2022-07-11 09:52:05 yum -y install httpd php-fpm php-mysqlnd php-gd     #php-gd图形相关的包
110  2022-07-11 09:52:42 systemctl start httpd php-fpm
#包的下载地址http://loganalyzer.adiscon.com/downloads/ 
111  2022-07-11 10:53:28 rz -E
112  2022-07-11 10:54:00 tar xf loganalyzer-4.1.12.tar.gz 
113  2022-07-11 10:54:02 ll
114  2022-07-11 10:54:21 mv loganalyzer-4.1.12/src/ /var/www/html/log
115  2022-07-11 10:55:06 touch /var/www/html/log/config.php
116  2022-07-11 10:55:22 chmod 666 /var/www/html/log/config.php 
119  2022-07-11 10:56:05 cd /var/www/html/
#建立测试页面,测试php是否成功
120  2022-07-11 10:56:07 vim    info.php
		<?php  phpinfo();  ?>
#安全加固,修改成原来的权限
121  2022-07-11 10:56:11  chmod 644 /var/www/html/log/config.php
122  2022-07-11 10:56:12 ll
123  2022-07-11 10:56:24 cat config.php 

测试页面步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值