马哥教育——第十四周作业

1、简述CGI与FASTCGI区别

CGI:公共网关接口

web服务器会根据这次请求的内容,开启一个fork新进程来运行外部的C程序或者脚本等,这个进程会把处理完的数据返回给Web服务器,最后Web服务器把内容发送给用户,fork退出

(用户——Web浏览器——fork(进程)——处理数据完后(数据处理完后fork自动关闭)——Web服务器——用户)
  • CGI可以让客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据
  • CGI描述了客户端和服务器程序之间传输的一种标准
请求流程

Client – (http协议) --> httpd – (cgi协议) --> application server (program file) – (mysql协议) --> mysql

FASTCGI

Web服务器收到用户请求时,不会重新开启一个fork进程(进程在web浏览器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程( 进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下个进程,不会退出。

(用户——Web浏览器——fork(进程)——处理数据完后(数据处理完后fork不关闭)——Web服务器——用户)

区别:

  • CGI:处理完一个数据后会自动关闭,处理下一个数据要开启一个新的fork
  • fastcgi:处理完数据后不会关闭进程,该进程等待处理下一个数据(要开启tcp端口)

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

基于wordpress的LAMP架构

实验环境:centos8
一台虚拟机:mysql
一台虚拟机:yum安装https2.4,编译安装PHP7.4

安装http和连接数据库的包

[root@htp-php ~]#dnf -y install httpd  php-json php-mysqlnd 

安装 wordpress 包

[root@htp-php ~]#wget https://cn.wordpress.org/latest-zh_CN.zip
[root@htp-php ~]#tar xvf wordpress-5.4.2-zh_CN.tar.gz
[root@htp-php ~]#mv wordpress/* /var/www/html/
[root@htp-php ~]#chown -R apache.apache /var/www/html/

编译安装PHP7.4

下载PHP7.4安装和下载相关依赖包
[root@htp-php ~]#wget https://www.php.net/distributions/php-7.4.26.tar.gz  
###解压
[root@htp-php ~]#tar xf php-7.4.26.tar.gz 
[root@htp-php ~]#yum install gcc make libxml2-devel bzip2-devel libmcrypt-devel

安装一些插件
[root@htp-php php-7.4.26]#./configure \
> --prefix=/apps/php \
> --enable-mysqlnd \
> --with-mysqli=mysqlnd \
> --with-openssl \
> --with-pdo-mysql=mysqlnd \
> --enable-mbstring \
> --with-freetype-dir \
> --with-jpeg-dir \
> --with-png-dir \
> --with-zlib \
> --with-libxml-dir=/usr \
> --enable-xml \
> --enable-sockets \
> --with-apxs2=/app/httpd/bin/apxs \
> --with-config-file-path=/etc \
> --with-config-file-scan-dir=/etc/php.d \
> --enable-maintainer-zts \
> --disable-fileinfo

[root@htp-php php-7.4.26]#make -j 4 && make install
准备PHP的配置文件
[root@htp-php ~]#cd php-7.4.26
[root@htp-php php-7.4.26]#
cp php.ini-production /etc/php.ini
修改httpd配置文件
[root@htp-php ~]#vim /etc/httpd/conf/httpd.conf 
#下面加二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#定位至DirectoryIndex index.html, 修改为
DirectoryIndex index.php index.html
重启apache服务
[root@htp-php ~]#apachectl restart

安装数据库

[root@mysql ~]#yum install mariadb-server
[root@mysql ~]#systemctl start mariad
mysql> create database wordpress;
mysql> grant all on wordpress.* to wpuser@'10.0.0.%' identified by "magedu";

基于discuz的LAMP架构

[root@htp-php ~]#unzip Discuz_X3.4_SC_UTF8【20191201】.zip
[root@htp-php ~]#mv upload/ /var/www/html/forum
[root@htp-php ~]#chown -R apache.apache /var/www/html/forum

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

实验环境:
一台:rsyslog日志服务器,IP:172.17.8.8
一台:mariadb数据库服务器,IP:172.17.8.18
一台:客户端,IP:172.17.8.28

在rsyslog服务器上安装连接mysql模块相关的程序包

[root@centos8 ~]#yum install rsyslog-mysql

[root@centos8 ~]#rpm -ql rsyslog-mysql
/usr/lib/.build-id
/usr/lib/.build-id/d7
/usr/lib/.build-id/d7/77fc839aa07e92f0a8858cf3f122996436c7df
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog/mysql-createDB.sql

将记录日志的sql脚本复制到数据库服库上

[root@centos8 ~]#scp /usr/share/doc/rsyslog/mysql-createDB.sql 172.17.8.18:/data/back_`date +%F`

安装mysql数据库

[root@centos8 ~]#yum install mariadb-server

创建用户,并赋予日志服务器能连接数据库

[root@centos8 ~]#yum install mariadb-server
mysql>source /data/mysql-createDB.sql
mysql>grant all ON Syslog.* to 'rsyslog'@'172.17.8.%' identified by 'magedu';

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

[root@centos8 ~]#vim /etc/rsyslog.conf
#在 MODULES 语言下面添加
module(load="ommysql")
#在RULES语句块加下面行的格式
*.info :ommysql:172.17.8.18,Syslog,rsyslog,magedu

测试

#在日志服务器上生成日志
[root@centos8 ~]#logger "this is a test log"
#在数据库上查询到上面的测试日志
mysql>select count(*) from SystemEvents;

你可能感兴趣的:(服务器,php,apache)