N63050 第十四周运维作业
就业和全程班小伙伴本周学习内容:
第二十七天:
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 第十四周运维作业的更多相关文章
- 第十四周博客作业 <西北师范大学| 周安伟>
第十四周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10909068 ...
- 第十四周java实验作业
实验十四 Swing图形界面组件 实验时间 20178-11-29 1.实验目的与要求 (1) 掌握GUI布局管理器用法: 在java中的GUI应用 程序界面设计中,布局控制通过为容器设置布局管理器 ...
- 老男孩python自动化运维作业2
拿到要求真不知道怎么写,不能还要写个商城页面吧: 最后还是用了input()模拟用户操作吧- -!不就操作个字典吗(字典模拟商品数据). python版本: >>>import sy ...
- 老男孩python自动化运维作业1
#!/usr/bin/env pthon #字典操作三级菜单 “b”返回上一级菜单,“q”退出. menu={"BJ":{"cp":{1:1,2:2,3:3}, ...
- 中型企业的IT运维策略
如何建设一支能够解决问题.创造价值.有活力的.不断进取的IT运维团队,并带领这支团队?充分发挥这个团队的优势力量,是运维业务有效开展的关 键.运维策略是直接体现运维业务的经济价值所在.好的运维措施.方 ...
- GOPS2017全球运维大会深圳站 出席嘉宾盘点!
去年,GOPS全球运维大会在深圳出发,当时门票提前几周收盘,2017年,承载着运维人的期望,GOPS全球运维大会再次来到了深圳.第六届GOPS2017全球运维大会深圳站(本次)将于2017年4月21日 ...
- 运维架构服务监控Open-Falcon
一. 介绍 监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题.监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择.当公司刚 ...
- IT运维队伍的管理
如何建设一支能够解决问题.创造价值.有活力的.不断进取的IT运维团队,并带领这支团队,充分发挥这个团队的优势力量,是运维业务有效开展的关键.运维 策略是直接体现运维业务的经济价值所在.好的运维措施.方 ...
- Hadoop运维记录系列
http://slaytanic.blog.51cto.com/2057708/1038676 Hadoop运维记录系列(一) Hadoop运维记录系列(二) Hadoop运维记录系列(三) Hado ...
- 第十二届GOPS全球运维大会2019深圳站即将开幕
第十二届 GOPS 全球运维大会深圳站 会议召开时间:2019年4月12日-13日 会议召开地点:深圳圣淘沙酒店(翡翠店) 会议主办单位:高效运维社区 票务合作伙伴:活动家 会议报名地址:https: ...
随机推荐
- java下载网络文件的N种方式
java下载网络文件的N种方式 通过java api下载网络文件的方法有很多,主要方式有以下几种: 1.使用 common-io库下载文件,需要引入commons-io-2.6.jar public ...
- 使用Dapr和.NET 6.0进行微服务实战:Dapr简介
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本文是<使用Dapr和.NET 6.0进行微服务实战>的第2篇Dapr ...
- LeetCode-343. 整数拆分 - 题解分析
题目来源 343. 整数拆分 题目详情 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化. 返回 你可以获得的最大乘积 . 示例 1: 输入: ...
- springcloud与微服务
springcloud 与 微服务 父工程(按需导入依赖) <!--打包--> <packaging>pom</packaging> <properties& ...
- final关键字用于修饰成员方法-final关键字用于修饰局部变量
final关键字用于修饰成员方法 修饰方法 格式如下: 修饰符 final 返回值类型 方法名(参数列表){ //方法体 } 重写被 final 修饰的方法,编译时就会报错. final关键字用于修饰 ...
- Quartz.Net 官方教程 Best Practices
最佳实践 JobDataMap 建议只存储基本数据(含String),避免序列化问题 作业执行期间,JobDetail和Trgger的底层共用一个JobDataMap 实例,因此Trigger的数据会 ...
- 【论文笔记】FCN全卷积网络
全卷积网络(FCN)是用于图片语义分割的一种卷积神经网络(CNN),由Jonathan Long,Evan Shelhamer 和Trevor Darrell提出,由此开启了深度学习在语义分割中的应用 ...
- SRS视频流服务器初试
目录 1.关于协议理解 2.快速开始 1.SRS安装 2.推流 3.拉流 注: 1)方式一:SRS网页播放器(推荐) 2)方式二:VLC播放器(需要下载,延迟高,不推荐) 1.关于协议理解 在前面的博 ...
- UBUNTU18.04安装使用ORB-SLAM2
1.下载: git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 2.依赖项: sudo apt install autotools ...
- Mybatis的逆向工程与延迟加载
Mybatis 的逆向工程 Mybatis是一个半自动化的ORM框架,SQL语句需要要开发者自己定义,SQL定义在Mapper.xml中,与对应的Mapper接口对应 实体类 接口 Mapper.xm ...