http服务器以及LogAnalyzer日志服务器运用,fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构

1、简述CGI与FASTCGI区别:

CGI概述:

   CGl: Common Gateway Interface 公共网关接口
CGI在2000年或更早的时候用得比较多,以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢? web服务器会根据这次请求的内容,然后会fork一个新进程来运行外部的C程序或者bash,perl脚本等,这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进程也随之退出。如果下次用户还请求改动态脚本,那么web服务器又再次fork一个新进程,周而复始的进行。
CGI可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准

请求流程:
Client -- (http协议) --> httpd --(cgi协议)-->application server (program file)--(mysql协议)-->mysql

fastcgi概述:

fastcgi的方式是,web服务器收到一个请求时,不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出
请求流程:
Client -- (http协议)--> httpd --(fastcgi协议)-->fastcgi服务器--(mysql协议)--> mysql

CGI和fastcgi比较:


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

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

实验准备:

版本以及软件包:CentOS7.8------10.0.0.13

apr-1.7.0.tar.bz2                    
apr-util-1.6.1.tar.bz2              
auto_httpd.sh 
php-7.4.30.tar.gz                       
Discuz_X3.4_SC_UTF8【20200818】.zip  
httpd-2.4.46.tar.bz2                 
wordpress-6.0.1-zh_CN.tar.gz

 CentOS8--------10.0.0.7

mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz

第一步采用二进制安装mariadb8,把二进制编写成shell脚本

[root@CentOS8 ~]# vim install_mysql5.7or8.0_for_centos.sh 
#!/bin/bash
#
#********************************************************************
#Author:		hanyewei
#QQ: 			2512129751
#Date: 			2022-07-12
#FileName:		install_mysql5.7_for_centos.sh
#Description:		The test script
#Copyright (C): 	2022 All rights reserved
#********************************************************************
#MySQL Download URL: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz

. /etc/init.d/functions 
SRC_DIR=`pwd`
#MYSQL='mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz'
MYSQL='mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz'
COLOR='echo -e \E[01;31m'
END='\E[0m'
MYSQL_ROOT_PASSWORD=magedu


check (){

if [ $UID -ne 0 ]; then
  action "当前用户不是root,安装失败" false
  exit 1
fi

cd  $SRC_DIR
if [ !  -e $MYSQL ];then
        $COLOR"缺少${MYSQL}文件"$END
		$COLOR"请将相关软件放在${SRC_DIR}目录下"$END
        exit
elif [ -e /usr/local/mysql ];then
        action "数据库已存在,安装失败" false
        exit
else
	return
fi
} 

install_mysql(){
    $COLOR"开始安装MySQL数据库..."$END
	yum  -y -q install libaio numactl-libs   libaio &> /dev/null
    cd $SRC_DIR
    tar xf $MYSQL -C /usr/local/
    MYSQL_DIR=`echo $MYSQL| sed -nr 's/^(.*[0-9]).*/\1/p'`
    ln -s  /usr/local/$MYSQL_DIR /usr/local/mysql
    chown -R  root.root /usr/local/mysql/
    id mysql &> /dev/null || { useradd -s /sbin/nologin -r  mysql ; action "创建mysql用户"; }
        
    echo 'PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh
    .  /etc/profile.d/mysql.sh
	ln -s /usr/local/mysql/bin/* /usr/bin/
    cat > /etc/my.cnf <<-EOF
[mysqld]
server-id=1
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock                                                                                                   
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
EOF
    mysqld --initialize --user=mysql --datadir=/data/mysql 
    cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig mysqld on
    service mysqld start
	sleep 3
    [ $? -ne 0 ] && { $COLOR"数据库启动失败,退出!"$END;exit; }
    MYSQL_OLDPASSWORD=`awk '/A temporary password/{print $NF}' /data/mysql/mysql.log`
    mysqladmin  -uroot -p$MYSQL_OLDPASSWORD password $MYSQL_ROOT_PASSWORD &>/dev/null
    action "数据库安装完成" 
}


check

install_mysql

[root@CentOS8 ~]# bash install_mysql5.7or8.0_for_centos.sh

登录mariadb数据库

为wordprss-------(blog)和discuz-------(forum)应用准备数据库和用户帐号

mysql> create database blog;
mysql> create database forum;
mysql> grant all on blog.* to blog@'10.0.0.%' identified by "123456";
mysql> grant all on forum.* to forum@'10.0.0.%' identified by '123456';

第二步在10.0.0.13二进制安装httpd2.4

[root@centos7 ~]#yum install gcc pcre-devel openssl-devel expat-devel -y
#解压相关的编译httpd的包
[root@centos7 ~]#tar  xvf apr-1.7.0.tar.bz2 
[root@centos7 ~]#tar  xvf apr-util-1.6.1.tar.bz2 
[root@centos7 ~]#tar vxf httpd-2.4.46.tar.bz2 
[root@centos7 ~]#mv apr-1.7.0 httpd-2.4.46/srclib/apr
[root@centos7 ~]#mv apr-util-1.6.1  httpd-2.4.46/srclib/apr-util

开始编译安装

[root@centos7 ~]#cd 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 ~]#make && make -j 8 install--------------#开始编译安装
[root@centos7 ~]#vim /etc/profile.d/lamp.sh-------------#更改环境变量
  PATH=/apps/httpd/bin:$PATH
[root@centos7 ~]#. /etc/profile.d/lamp.sh
[root@centos7 ~]#useradd -s /sbin/nologin -r -u 88 apache----------#创建和配置用户和组
[root@centos7 ~]#vim /apps/httpd/conf/httpd.conf
User apache
Group apache
 [root@centos7 ~]#sed -i  -e '/^User/c User apache' -e '/^Group/c Group apache'  /apps/httpd/conf/httpd.conf -------------------跟上面的更改http配置文件是一个效果的

修改为event模式,编译时已指定,此项不再需修改,可选项

[root@centos7 ~]#vim /apps/httpd/conf/httpd.conf
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.sovim /apps/httpd/conf/httpd.conf

启动httpd服务

[root@centos7 ~]#apachectl start

编译安装 fastcgi 方式的 php 7.4

yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel
oniguruma-devel------------------PHP7.4版本所需的依赖包
yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel----------PHP7.3所需的依赖包
[root@centos7 ~]#tar xvf php-7.4.7.tar.xz
[root@centos7 ~]#cd php-7.4.7/
./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
[root@centos7 ~]#make -j 8 && make install--------------开始编译安装PHP7.4
[root@centos7 ~]#vim /etc/profile.d/lamp.sh----------------------#php7.4改变变量环境
PATH=/apps/php/bin:/apps/httpd/bin:$PATH
. /etc/profile.d/lamp.sh
[root@centos7 ~]#vim /etc/profile.d/lamp.sh
PATH=/apps/php/bin:/apps/httpd/bin:$PATH-----------#php7.3改变变量环境
[root@centos7 ~]#php --version
PHP 7.4.7 (cli) (built: Jul 1 2020 09:59:57) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies--------------表示编译成功
. /etc/profile.d/lamp.sh

准备php配置文件和启动文件

[root@centos7 ~]#cp php.ini-production /etc/php.ini
[root@centos7 ~]#cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
[root@centos7 ~]#cd /apps/php/etc
[root@centos7 ~]#cp php-fpm.conf.default php-fpm.conf
[root@centos7 ~]#cd php-fpm.d/
[root@centos7 ~]#cp www.conf.default www.conf
[root@centos7 ~]#vim /apps/php/etc/php-fpm.d/www.conf---#修改进程所有者和支持status和ping页面
user apache
group apache
pm.status_path = /fpm_status
ping.path = /ping

支持opcache加速

mkdir /etc/php.d/------------------#支持opcache加速
vim /etc/php.d/opcache.ini
[opcache]
zend_extension=opcache.so
opcache.enable=1

启动服务

[root@centos7 ~]#systemctl daemon-reload
[root@centos7 ~]#systemctl status php-fpm.service
[root@centos7 ~]#systemctl enable --now php-fpm.service

第三步修改配置 httpd 支持 php-fpm

[root@centos7 ~]#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
#AddType application/x-httpd-php-source .phps
ProxyRequests Off
#实现第一个虚拟主机
<virtualhost *:80>
servername blog.magedu.org
documentroot /data/blog
<directory /data/blog>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/blog/$1
#实现status和ping页面
ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1
CustomLog "logs/access_blog_log" common
</virtualhost>
#第二个虚拟主机
<virtualhost *:80>
servername forum.magedu.org
documentroot /data/forum
<directory /data/forum/>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/forum/$1
CustomLog "logs/access_forum_log" common
</virtualhost>
[root@centos7 ~]#apachectl restart

 第四步准备wordpress和discuz! 相关文件

#准备wordpress程序文件
mkdir /data/blog
tar xvf wordpress-6.0.1-zh_CN.tar.gz
mv wordpress/* /data/blog
setfacl –R –m u:apache:rwx /data/blog/
#或者chown –R apache.apache /data/*
#准备discuz!程序文件
mkdir /data/forum
unzip Discuz_X3.4_SC_UTF8【20200818】.zip
mv DiscuzX/upload/* /data/forum
setfacl -R -m u:apache:rwx /data/forum/

第五解决window_Client端的域名解析问题:

首先找到window powershell以管理员的身份运行并打开记事本

 打开hosts文件进行修改

测试域名是否可达

 第五步打开浏览器访问 http://blog.magedu.org 和http://forum.magedu.org 分别进行初始化和安装

分别填上10.0.0.7mysql中创建的数据库和账号密码

 安装结束后登录

 

 接下来就是论坛forum的安装了

一直下一步

 

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

实验准备:10.0.0.13----rsyslog_client

                   10.0.0.6-------rsyslog_server

                  10.0.0.7---------mysql_log

                   10.0.0.9----------log_GUL

第一步设置10.0.0.6-------rsyslog_server开始TCP/UDP端口和 在rsyslog服务器上安装连接mysql模块相关的程序包

[18:05:25 root@rsyslog-server ~]#vim /etc/rsyslog.conf 
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")----------------------UDP的514端口
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")--------------------TCP的514端口
[00:26:55 root@rsyslog-server ~]#systemctl restart  rsyslog.service 

 

[00:30:23 root@rsyslog-server ~]#yum -y install  rsyslog-mysql
[00:31:07 root@rsyslog-server ~]#rpm -ql rsyslog-mysql
/usr/lib/.build-id
/usr/lib/.build-id/b1
/usr/lib/.build-id/b1/435a976b2dfddfb19d0d1517964f615d510402
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog/mysql-createDB.sql--------------将这个文件夹复制到mysql服务器上面去,该文件使用存放log的,里面已经规定好log的数据库名以及表名了
[00:31:07 root@rsyslog-server ~]#scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.7:/root


   第二步 准备mysql-server---10.0.0.7并将/usr/share/doc/rsyslog/mysql-createDB.sql导入mysql中

[root@mysql ~]# yum -y install  mysql-server; systemctl enable --now mysqld
[root@mysql ~]#mysql < mysql-createDB.sql 

   

 

在10.0.0.7数据库创建账号用于日志服务器链接mysql-server

[root@mysql ~]# mysql
mysql> create user rsyslog@"10.0.0.%" identified by "123456";
mysql> grant all on Syslog.* to rsyslog@'10.0.0.%';

    第三步配置日志服务器配置文件将日志发送至指定数据库

#配置rsyslog将日志保存到mysql中
[10:20:03 root@rsyslog-server ~]#vim  /etc/rsyslog.conf 
#
####MODULES####
#在 MODULES 语言下面,如果是 CentOS 8 加下面行
module(load="ommysql")
#在 MODULES 语言下面,如果是 CentOS 7,6 加下面行
$ModLoad ommysql
#在RULES语句块加下面行的格式
#facility.priority              :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
*.info;mail.none;authpriv.none;cron.none     :ommysql:10.0.0.7,Syslog,rsyslog,123456
[10:20:03 root@rsyslog-server ~]#systemctl restart rsyslog.service
                        

第四步httpd+php 服务器,并安装loganalyzer展示web图形,IP:10.0.0.9

[root@centos8 ~]#yum -y install httpd php-fpm php-mysqlnd php-gd-----安装LogAnalyzer图形功能
[root@centos8 ~]#systemctl enable --now httpd php-fpm

在10.0.0.9主机上安装LogAnalyzer

#从http://loganalyzer.adiscon.com/downloads/ 下载loganalyzer-4.1.10.tar.gz
[root@centos8 ~]#tar xvf loganalyzer-4.1.10.tar.gz
[root@centos8 ~]#mv loganalyzer-4.1.10/src/* /var/www/html/log

基于 web 页面初始化,访问http://10.0.0.9/log 实现初始化

 

 

报错原因就是/var/www/html/log文件夹里面缺少

下图的文件,创建好该文件并设置好文件的权限就能解决问题 

 

[10:49:37 root@Centos8 log]#touch config.php
[10:49:46 root@Centos8 log]#chmod 666 config.php

 

 

 

第六步 10.0.0.13----rsyslog_client的配置

[root@centos7 ~]# vim /etc/rsyslog.conf 
*.info;mail.none;authpriv.none;cron.none               @10.0.0.6 ------指定日志服务器
[root@centos7 ~]# systemctl  restart rsyslog.service 

 

第七步测试

在10.0.0.13端发送logger  "LogAnalyzer-2022/7/24"

 

 

实验完成! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N64-HanYeWei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值