就业和全程班小伙伴本周学习内容:

第二十七天:

http协议和web服务器

1http的cookie和session详解

2LAMP架构和CGI与FASTCGI区别

3常见PHP的配置和php程序

4LAMP各种常见应用

5基于opcache加速LAMP

6实现基于FACTCGI的LAMP架构

7编译安装基于

第二十八天:

日志服务管理

1rsyslog日志服务管理

2rsyslog实现网络日志和MySQL存储日志

3基于loganalyzer实现日志的web展示

4存储类型和ftp服务工作原理

5ftp服务基本配置

6ftp服务常见功能实现

就业班(全程班)第十四周作业

1、简述CGI与FASTCGI区别
2、编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构
3、通过loganalyzer展示数据库中的日志

1、简述CGI与FASTCGI区别

1.1 CGI: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

1.2 fastcgi

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

请求流程:

Client -- (http协议) --> httpd -- (fastcgi协议) --> fastcgi服务器 -- (mysql协议) --> mysql

1.3 CGI 和 FASTCGI 比较

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

通过以上的工作原理,我们可以看出两者的区别主要表现为:

①在web服务器方面:CGI需要fork一个新的进程来处理,而FastCGI则是用TCP方式跟远程主机上的进程或本地进程进行连接。

②在对数据处理的进程方面:CGI在读取参数、处理数据后结束生命周期,FastCGI则是开启TCP端口,并进入循环,一旦有数据进来就进行数据的处理,不会退出。

通过两者的对比,我们会发现,FastCGI的程序性能会更好,同时安全性也更高,可谓是加强版的CGI,在当前的生产中,一般也是会用FastCGI来代替传统的CGI。

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

2.1 目标

实现CentOS 7 编译安装基于 fastcgi 模式的多虚拟主机的wordpress和discuz的LAMP架构

2.2 环境准备

两台主机:

  • 一台主机:httpd+php(fastcgi模式) 10.0.0.7
  • 一台主机:mysql 服务器 10.0.0.8

软件版本:

  • CentOS 7.9
  • mysql-8.0.19-linux-glibc2.12-x86_64.tar 通用二进制格式
  • apr-1.7.0.tar.bz2
  • apr-util-1.6.1.tar.bz2
  • httpd-2.4.43.tar.gz
  • php-7.4.7.tar.xz
  • wordpress-5.4.2-zh_CN.tar.gz
  • Discuz_X3.4_SC_UTF8【20191201】.zip

2.3 实现步骤

2.3.1 二进制安装 mysql (10.0.0.8)
[root@centos8 ~]#cat install_mysql_centos.sh
. /etc/init.d/functions
SRC_DIR=`pwd`
MYSQL='mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz'
COLOR='echo -e \E[01;31m'
END='\E[0m' 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 ncurses-compat-libs ncurses-c++-libs
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]
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
EOF
[ -d /data ] || mkdir /data
mysqld --initialize-insecure --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
[ $? -ne 0 ] && { $COLOR"数据库启动失败,退出!"$END;exit; }
sleep 3
action "数据库安装完成"
} check install_mysql
[root@centos8 ~]#mysql -uroot

create database blog;
create database forum;
create user blog@'10.0.0.%' identified by '123456';
create user forum@'10.0.0.%' identified by '123456';
grant all on blog.* to blog@'10.0.0.%';
grant all on forum.* to forum@'10.0.0.%'; mysql>
2.3.2编译安装httpd-2.4 (10.0.0.7)
#安装相关包
yum install gcc pcre-devel openssl-devel expat-devel -y
#编译安装httpd
tar xvf apr-1.7.0.tar.bz2
tar xvf apr-util-1.6.1.tar.bz2
tar xf httpd-2.4.43.tar.gz
mv apr-1.7.0 httpd-2.4.43/srclib/apr
mv apr-util-1.6.1 httpd-2.4.43/srclib/apr-util
cd httpd-2.4.43/
./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 make && make install
#准备PATH变量
vim /etc/profile.d/lamp.sh
PATH=/apps/httpd/bin:$PATH
. /etc/profile.d/lamp.sh
#创建和配置用户和组
useradd -s /sbin/nologin -r -u 88 apache
vim /apps/httpd/conf/httpd.conf
user apache
group apache
#修改为event模式,编译时已指定,此项不再需修改,可选项
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.so
httpd -M |grep mpm
mpm_event_module (shared)
apachectl start [root@centos7 ~]#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 #一键安装httpd脚本
#!/bin/bash
APR_URL=https://mirrors.aliyun.com/apache/apr/
APR_FILE=apr-1.7.2
TAR=.tar.bz2
APR_UTIL_URL=https://mirrors.aliyun.com/apache/apr/
APR_UTIL_FILE=apr-util-1.6.3
HTTPD_URL=https://mirrors.aliyun.com/apache/httpd/
HTTPD_FILE=httpd-2.4.55
INSTALL_DIR=/apps/httpd24
CPUS=`lscpu |awk '/^CPU\(S\)/{print $2}'`
MPM=event install_httpd(){
if [ `awk -F'"' '/^ID=/{print $2}' /etc/os-release` == "centos" ] &>/dev/null;then
yum -y install gcc make pcre-devel openssl-devel expat-devel wget bzip2
else
apt update
apt -y install gcc make libapr1-dev libaprutil1-dev libpcre3 libpcre3-dev libssl-dev wget
fi
cd /usr/local/src
wget $APR_URL$APR_FILE$TAR && wget $APR_UTIL_URL$APR_UTIL_FILE$TAR && wget $HTTPD_URL$HTTPD_FILE$TAR
tar xf $APR_FILE$TAR && tar xf $APR_UTIL_FILE$TAR && tar xf $HTTPD_FILE$TAR
mv $APR_FILE $HTTPD_FILE/srclib/apr
mv $APR_UTIL_FILE $HTTPD_FILE/srclib/apr-util
cd $HTTPD_FILE
./configure --prefix=$INSTALL_DIR --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=$MPM
make -j $CPUS && make install
useradd -s /sbin/nologin -r apache
sed -i 's/daemon/apache/' $INSTALL_DIR/conf/httpd.conf
echo "PATH=$INSTALL_DIR/bin:$PATH" > /etc/profile.d/http24.sh
. /etc/profile.d/httpd24.sh
cat > /lib/systemd/system/httpd.service <<EOF
[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
ExecStart=${INSTALL_DIR}/bin/apachectl start
ExecReload=${INSTALL_DIR}/bin/apachectl graceful
ExecStop=${INSTALL_DIR}/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now httpd
} install_httpd
2.3.3 编译安装 fastcgi 方式的 php 7.4
#安装相关包,依赖EPEL源
#php 7.4 相关包
yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel
#php7.4 编译
tar xvf php-7.4.7.tar.xz
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 make -j 4 && make install
#准备PATH变量
#php7.4
vim /etc/profile.d/lamp.sh
PATH=/apps/php/bin:/apps/httpd/bin:$PATH
. /etc/profile.d/lamp.sh
[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 #准备php配置文件和启动文件
cp php.ini-production /etc/php.ini
cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
cd /apps/php/etc
cp php-fpm.conf.default php-fpm.conf
cd php-fpm.d/
cp www.conf.default www.conf
#修改进程所有者
vim /apps/php/etc/php-fpm.d/www.conf
user apache
group apache
#支持status和ping页面
pm.status_path = /fpm_status
ping.path = /ping
#支持opcache加速
mkdir /etc/php.d/
vim /etc/php.d/opcache.ini
[opcache]
zend_extension=opcache.so
opcache.enable=1
systemctl daemon-reload
systemctl status php-fpm.service
systemctl enable --now php-fpm.service
2.3.4 修改配置 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/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.magedu.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 ~]#systemctl restart httpd
2.3.5 准备wordpress和discuz! 相关文件
#准备wordpress程序文件
mkdir /data/
tar xvf upzip wordpress-6.1.1-zh_CN.zip
mv wordpress/ /data
setfacl –R –m u:apache:rwx /data/wordpress/
#或者chown –R apache.apache /data/wordpress
#准备discuz!程序文件
unzip Discuz_X3.5_SC_UTF8_20230210.zip
mv DiscuzX/upload/ /data/discuz
setfacl -R -m u:apache:rwx /data/discuz/
2.3.6 测试访问
vim /etc/hosts
10.0.0.7 blog.magedu.org forum.magedu.org

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

loganalyzer是用 php 语言实现的日志管理系统,可将MySQL数据库的日志用丰富的WEB方式进行展示

官网:https://loganalyzer.adiscon.com

3.1目标

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

3.2环境准备

三台主机

一台日志服务器,利用上一个案例实现,IP:10.0.0.8,

一台数据库服务器,利用上一个案例实现,IP:10.0.0.18

一台当httpd+php 服务器,并安装loganalyzer展示web图形,IP:10.0.0.28

3.2.1步骤

3.2.1.1 安装 php和相关软件包

在10.0.0.28主机上安装httpd, php和相关软件包

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

3.2.1.2安装 LogAnalyzer

在10.0.0.28主机上安装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
[root@centos8 ~]#touch /var/www/html/log/config.php
[root@centos8 ~]#chmod 666 /var/www/html/log/config.php

3.2.1.3基于 web 页面初始化

访问http://10.0.0.28/log 实现初始化

选择:MySQL Native, Syslog Fields, Monitorware

3.2.1.3安全加强

在10.0.0.28上进行安全加固

[root@centos8 ~]#chmod 644 /var/www/html/log/config.php

N63050 第十四周运维作业的更多相关文章

  1. 第十四周博客作业 <西北师范大学| 周安伟>

    第十四周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10909068 ...

  2. 第十四周java实验作业

    实验十四  Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: 在java中的GUI应用 程序界面设计中,布局控制通过为容器设置布局管理器 ...

  3. 老男孩python自动化运维作业2

    拿到要求真不知道怎么写,不能还要写个商城页面吧: 最后还是用了input()模拟用户操作吧- -!不就操作个字典吗(字典模拟商品数据). python版本: >>>import sy ...

  4. 老男孩python自动化运维作业1

    #!/usr/bin/env pthon #字典操作三级菜单 “b”返回上一级菜单,“q”退出. menu={"BJ":{"cp":{1:1,2:2,3:3}, ...

  5. 中型企业的IT运维策略

    如何建设一支能够解决问题.创造价值.有活力的.不断进取的IT运维团队,并带领这支团队?充分发挥这个团队的优势力量,是运维业务有效开展的关 键.运维策略是直接体现运维业务的经济价值所在.好的运维措施.方 ...

  6. GOPS2017全球运维大会深圳站 出席嘉宾盘点!

    去年,GOPS全球运维大会在深圳出发,当时门票提前几周收盘,2017年,承载着运维人的期望,GOPS全球运维大会再次来到了深圳.第六届GOPS2017全球运维大会深圳站(本次)将于2017年4月21日 ...

  7. 运维架构服务监控Open-Falcon

    一. 介绍 监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题.监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择.当公司刚 ...

  8. IT运维队伍的管理

    如何建设一支能够解决问题.创造价值.有活力的.不断进取的IT运维团队,并带领这支团队,充分发挥这个团队的优势力量,是运维业务有效开展的关键.运维 策略是直接体现运维业务的经济价值所在.好的运维措施.方 ...

  9. Hadoop运维记录系列

    http://slaytanic.blog.51cto.com/2057708/1038676 Hadoop运维记录系列(一) Hadoop运维记录系列(二) Hadoop运维记录系列(三) Hado ...

  10. 第十二届GOPS全球运维大会2019深圳站即将开幕

    第十二届 GOPS 全球运维大会深圳站 会议召开时间:2019年4月12日-13日 会议召开地点:深圳圣淘沙酒店(翡翠店) 会议主办单位:高效运维社区 票务合作伙伴:活动家 会议报名地址:https: ...

随机推荐

  1. java下载网络文件的N种方式

    java下载网络文件的N种方式 通过java api下载网络文件的方法有很多,主要方式有以下几种: 1.使用 common-io库下载文件,需要引入commons-io-2.6.jar public ...

  2. 使用Dapr和.NET 6.0进行微服务实战:Dapr简介

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本文是<使用Dapr和.NET 6.0进行微服务实战>的第2篇Dapr ...

  3. LeetCode-343. 整数拆分 - 题解分析

    题目来源 343. 整数拆分 题目详情 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化. 返回 你可以获得的最大乘积 . 示例 1: 输入: ...

  4. springcloud与微服务

    springcloud 与 微服务 父工程(按需导入依赖) <!--打包--> <packaging>pom</packaging> <properties& ...

  5. final关键字用于修饰成员方法-final关键字用于修饰局部变量

    final关键字用于修饰成员方法 修饰方法 格式如下: 修饰符 final 返回值类型 方法名(参数列表){ //方法体 } 重写被 final 修饰的方法,编译时就会报错. final关键字用于修饰 ...

  6. Quartz.Net 官方教程 Best Practices

    最佳实践 JobDataMap 建议只存储基本数据(含String),避免序列化问题 作业执行期间,JobDetail和Trgger的底层共用一个JobDataMap 实例,因此Trigger的数据会 ...

  7. 【论文笔记】FCN全卷积网络

    全卷积网络(FCN)是用于图片语义分割的一种卷积神经网络(CNN),由Jonathan Long,Evan Shelhamer 和Trevor Darrell提出,由此开启了深度学习在语义分割中的应用 ...

  8. SRS视频流服务器初试

    目录 1.关于协议理解 2.快速开始 1.SRS安装 2.推流 3.拉流 注: 1)方式一:SRS网页播放器(推荐) 2)方式二:VLC播放器(需要下载,延迟高,不推荐) 1.关于协议理解 在前面的博 ...

  9. UBUNTU18.04安装使用ORB-SLAM2

    1.下载: git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 2.依赖项: sudo apt install autotools ...

  10. Mybatis的逆向工程与延迟加载

    Mybatis 的逆向工程 Mybatis是一个半自动化的ORM框架,SQL语句需要要开发者自己定义,SQL定义在Mapper.xml中,与对应的Mapper接口对应 实体类 接口 Mapper.xm ...