第十四周作业

一、简述CGI与FASTCGI区别

在WEB服务器方面 在对数据进行处理的进程方面
cgi fork一个新的进程进行处理 读取参数->处理数据->结束声明周期
fastcgi 使用TCP和本地进程或远程主机进程建立连接 开启tcp端口,进入循环,接收到数据后进行处理

CGI:兼职,一次性的过河拆桥式的服务
FASTCGI:专职,全周期的持续式的服务

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

环境及相关软件包

root@centos7-mini2:192.168.119.147
[root@centos7-mini2 ~]# ll
total 57824
-rw-r--r--  1 root root   872238 Sep  1  2021 apr-1.7.0.tar.bz2
-rw-r--r--  1 root root   428595 Sep  1  2021 apr-util-1.6.1.tar.bz2
-rw-r--r--  1 root root 11962143 Jul  8 16:07 Discuz_X3.4_SC_UTF8_20220518.zip
-rw-r--r--  1 root root  7187805 Sep  1  2021 httpd-2.4.46.tar.bz2
-rw-r--r--  1 root root 16866315 Jul  8 16:02 php-7.4.30.tar.gz
-rw-r--r--  1 root root 21881579 Jul  8 16:03 wordpress-6.0-zh_CN.tar.gz

root@centos7:192.168.119.131
[root@centos7 ~]# ll
total 473712
-rw-r--r--  1 root root 485074552 Sep  1  2021 mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz

实验步骤

2.1 二进制安装数据库

[root@centos7 ~]# groupadd -r -g 306 mysql
[root@centos7 ~]# useradd -r -g 306 -u 306 -d /data/mysql mysql
[root@centos7 ~]# mkdir -p /data/mysql
[root@centos7 ~]# chown mysql:mysql /data/mysql/
[root@centos7 ~]# tar xf mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz  -C /usr/local/
[root@centos7 ~]# cd /usr/local/
[root@centos7 local]# ln -sv mysql-8.0.19-linux-glibc2.12-x86_64/ mysql
‘mysql’ -> ‘mysql-8.0.19-linux-glibc2.12-x86_64/’
[root@centos7 local]# chown -R root:root /usr/local/mysql
[root@centos7 local]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@centos7 local]# . /etc/profile.d/mysql.sh
[root@centos7 local]# cat /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
[root@centos7 local]# mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
[root@centos7 local]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@centos7 local]# chkconfig --add mysqld
[root@centos7 local]# service mysqld start
Starting MySQL. SUCCESS!
[root@centos7 local]# mysqladmin -uroot password wuhaolam

# 为wordprss和discuz应用准备数据库和用户帐号
[root@centos7 ~]# mysql -uroot -pwuhaolam
mysql> create database wordpress;
Query OK, 1 row affected (0.01 sec)

mysql> create database discuz;
Query OK, 1 row affected (0.00 sec)

mysql> create user wordpress@'192.168.119.%' identified by 'wuhaolam';   
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on wordpress.* to wordpress@'192.168.119.%';
Query OK, 0 rows affected (0.00 sec)

mysql> create user discuz@'192.168.119.%' identified by 'wuhaolam';         
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on discuz.* to discuz@'192.168.119.%';                  
Query OK, 0 rows affected (0.00 sec)

2.2 编译安装http

[root@centos7-mini2 ~]# yum -y install gcc pcre-devel openssl-devel expat-devel
[root@centos7-mini2 ~]# tar xf apr-1.7.0.tar.bz2
[root@centos7-mini2 ~]# tar xf apr-util-1.6.1.tar.bz2 
[root@centos7-mini2 ~]# tar xf httpd-2.4.46.tar.bz2
[root@centos7-mini2 ~]# mv apr-1.7.0 httpd-2.4.46/srclib/apr
[root@centos7-mini2 ~]# mv apr-util-1.6.1 httpd-2.4.46/srclib/apr-util

[root@centos7-mini2 ~]# cd httpd-2.4.46/
[root@centos7-mini2 httpd-2.4.46]# ./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
[root@centos7-mini2 httpd-2.4.46]# make && make install

[root@centos7-mini2 httpd-2.4.46]# vim /etc/profile.d/lamp.sh
PATH=/apps/httpd/bin:$PATH
[root@centos7-mini2 httpd-2.4.46]# . /etc/profile.d/lamp.sh

[root@centos7-mini2 httpd-2.4.46]# vim /apps/httpd/conf/httpd.conf           //修改配置文件指定行内容
172 User apache
173 Group apache
[root@centos7-mini2 httpd-2.4.46]# apachectl start

[root@centos7-mini2 httpd-2.4.46]# vim /usr/lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
Type=forking
#EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/apps/httpd/bin/apachectl start
#ExecStart=/apps/httpd/bin/httpd $OPTIONS -k start
ExecReload=/apps/httpd/bin/apachectl graceful
#ExecReload=/apps/httpd/bin/httpd $OPTIONS -k graceful
ExecStop=/apps/httpd/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target

2.3 编译安装 fastcgi 方式的 php 7.4

[root@centos7-mini2 ~]# yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel
[root@centos7-mini2 php-7.4.30]# ./configure --prefix=/apps/php --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-opnfig-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainers-zts --disable-fileinfo
[root@centos7-mini2 php-7.4.30]# make -j 6 && make install
[root@centos7-mini2 php-7.4.30]# vim /etc/profile.d/lamp.sh
PATH=/apps/php/bin:/apps/httpd/bin:$PATH
[root@centos7-mini2 php-7.4.30]# . /etc/profile.d/lamp.sh

[root@centos7-mini2 php-7.4.30]# cp php.ini-production /etc/php.ini
[root@centos7-mini2 php-7.4.30]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
[root@centos7-mini2 php-7.4.30]# cd /apps/php/etc
[root@centos7-mini2 etc]# cp php-fpm.conf.default php-fpm.conf
[root@centos7-mini2 etc]# cd php-fpm.d/
[root@centos7-mini2 php-fpm.d]# cp www.conf.default www.conf

[root@centos7-mini2 php-fpm.d]# vim /apps/php/etc/php-fpm.d/www.conf            // 修改指定行内容如下
23 user = apache
24 group = apache
239 pm.status_path = /fpm_status
251 ping.path = /ping

[root@centos7-mini2 php-fpm.d]# mkdir /etc/php.d/
[root@centos7-mini2 php-fpm.d]# vim /etc/php.d/opcache.ini、
[opcache]
zend_extension=opcache.so
opcache.enable=1

[root@centos7-mini2 php-fpm.d]# systemctl daemon-reload
[root@centos7-mini2 php-fpm.d]# systemctl status php-fpm.service
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Jul 08 21:18:31 centos7-mini2 systemd[1]: [/usr/lib/systemd/system/php-fpm.service:31] Unknown lvalue 'ProtectKernelModules' in section 'Service'
Jul 08 21:18:31 centos7-mini2 systemd[1]: [/usr/lib/systemd/system/php-fpm.service:38] Unknown lvalue 'ProtectKernelTunables' in section 'Service'
Jul 08 21:18:31 centos7-mini2 systemd[1]: [/usr/lib/systemd/system/php-fpm.service:44] Unknown lvalue 'ProtectControlGroups' in section 'Service'
Jul 08 21:18:31 centos7-mini2 systemd[1]: [/usr/lib/systemd/system/php-fpm.service:47] Unknown lvalue 'RestrictRealtime' in section 'Service'
Jul 08 21:18:31 centos7-mini2 systemd[1]: [/usr/lib/systemd/system/php-fpm.service:54] Unknown lvalue 'RestrictNamespaces' in section 'Service'
[root@centos7-mini2 php-fpm.d]# systemctl enable --now php-fpm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

2.4 准备wordpress和discuz! 相关文件

[root@centos7-mini2 ~]# mkdir /data
[root@centos7-mini2 ~]# tar xf wordpress-6.0-zh_CN.tar.gz 
[root@centos7-mini2 ~]# mv wordpress/ /data
[root@centos7-mini2 ~]# cd /data/
[root@centos7-mini2 data]# ls
wordpress
[root@centos7-mini2 data]# setfacl  -R -m u:apache:rwx /data/wordpress/

[root@centos7-mini2 ~]# unzip Discuz_X3.4_SC_UTF8_20220518.zip
[root@centos7-mini2 ~]# mv upload/ /data/discuz
[root@centos7-mini2 ~]# setfacl -R -m u:apache:rwx /data/discuz/

2.5 修改配置 httpd 支持 php-fpm

[root@centos7-mini2 ~]# vim /apps/httpd/conf/httpd.conf
#取消下面两行的注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

#修改下面行
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>

#增加如下内容
AddType application/x-httpd-php .php
ProxyRequests Off

#实现第一个虚拟主机
<virtualhost *:80>
servername blog.wuhao.org
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>

#第二个虚拟主机
<virtualhost *:80>
servername forum.wuhao.org
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>

[root@centos7-mini2 ~]# apachectl restart

2.6 测试访问

image
image
image
image
image
image

image
image
image
image

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

环境准备
rsyslog日志服务器:root@Rocky8-mini 192.168.119.128
MariaDB服务器:root@Rocky8-mini2 192.168.119.138
HTTP和PHP服务器并安装loganalyzer展示web图形:root@Rocky8-mini 192.168.119.129
image

实验步骤
3.1 在rsyslog服务器上安装连接mysql模块相关的程序包

[root@Rocky8-mini ~]# yum install -y rsyslog-mysql
[root@Rocky8-mini ~]# rpm -ql rsyslog-mysql
/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脚本内容 --
[root@Rocky8-mini ~]# 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,
        ReceivedAt datetime NULL,
        DeviceReportedTime datetime NULL,
        Facility smallint NULL,
        Priority smallint NULL,
        FromHost varchar(60) NULL,
        Message text,
        NTSeverity int NULL,
        Importance int NULL,
        EventSource varchar(60),
        EventUser varchar(60) NULL,
        EventCategory int NULL,
        EventID int NULL,
        EventBinaryData text NULL,
        MaxAvailable int NULL,
        CurrUsage int NULL,
        MinUsage int NULL,
        MaxUsage int NULL,
        InfoUnitID int NULL ,
        SysLogTag varchar(60),
        EventLogType varchar(60),
        GenericFileName VarChar(60),
        SystemID int NULL
);

CREATE TABLE SystemEventsProperties
(
        ID int unsigned not null auto_increment primary key,
        SystemEventID int NULL ,
        ParamName varchar(255) NULL ,
        ParamValue text NULL
);
-- 将SQL脚本复制到数据库服务器的 /data 目录下(该目录提前创建成功) --
[root@Rocky8-mini ~]# scp /usr/share/doc/rsyslog/mysql-createDB.sql 192.168.119.138:/data
The authenticity of host '192.168.119.138 (192.168.119.138)' can't be established.
ECDSA key fingerprint is SHA256:AJjtszOlLbfAWCuPQ7Ii0pkVfaVHFCds4X16AShQcjs.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.119.138' (ECDSA) to the list of known hosts.
root@192.168.119.138's password: 
mysql-createDB.sql                                                      100% 1046     1.8MB/s   00:00

3.2 准备数据库服务

[root@Rocky8-mini2 ~]# yum -y install mariadb-server
[root@Rocky8-mini2 ~]# systemctl enable --now mariadb.service
[root@Rocky8-mini2 ~]# mysql</data/mysql-createDB.sql
[root@Rocky8-mini2 ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| Syslog             |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)
MariaDB [(none)]> use Syslog;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

MariaDB [Syslog]> show tables;
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.000 sec)

-- 创建远程连接数据库服务器的账号并授权 --
MariaDB [Syslog]> create user rsyslog@'192.168.119.%' identified by 'wuhaolam';
MariaDB [Syslog]> grant all on Syslog.* to rsyslog@'192.168.119.%';
Query OK, 0 rows affected (0.000 sec)

3.3 配置日志服务器将日志发送至指定数据库

-- 在配置文件指定的路径下面各增加一行内容 --
[root@Rocky8-mini ~]# vim /etc/rsyslog.conf
#### MODULES ####
module(load="ommysql")
#### RULES ####
*.info;mail.none;authpriv.none;cron.none                :ommysql:192.168.119.138,Syslog,rsyslog,wuhaolam
[root@Rocky8-mini ~]# systemctl restart rsyslog.service

3.4 安装 httpd+php 服务器,并安装loganalyzer

[root@Rocky8-mini3 ~]# yum -y install httpd php-fpm php-mysqlnd php-gd
[root@Rocky8-mini3 ~]# systemctl enable --now httpd php-fpm

-- 安装 LogAnalyzer --
[root@Rocky8-mini3 ~]# ls
anaconda-ks.cfg  file  loganalyzer-4.1.12.tar.gz
[root@Rocky8-mini3 ~]# tar xvf loganalyzer-4.1.12.tar.gz
[root@Rocky8-mini3 ~]# mv loganalyzer-4.1.12/src/ /var/www/html/log
[root@Rocky8-mini3 ~]# touch /var/www/html/log/config.php
[root@Rocky8-mini3 ~]# chmod 666 /var/www/html/log/config.php

3.5 基于web页面的初始化
image
image
image
22.cnblogs.com/blog/2704859/202207/2704859-20220707215558361-885463716.png)

posted @ 2022-07-09 08:30  wuhaolam  阅读(60)  评论(0编辑  收藏  举报