N63044-第十四周

第二十七天:
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区别

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

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

CGI和fastcgi 比较

CGI: 兼职, 一次性的过河拆桥式的服务
FASTCGI: 专职,全周期的持续式的服务
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

2.1 二进制在线安装mysql8.0

[root@centos8 ~]#vim install_online_mysql8.0_for_centos.sh
. /etc/init.d/functions
SRC_DIR=`pwd`
MYSQL='mysql-8.0.28-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

mysql> create database wordpress;
mysql> create database discuz;
mysql> create user wordpress@'10.0.0.%' identified by '123456';
mysql> create user discuz@'10.0.0.%' identified by '123456';
mysql> grant all on wordpress.* to wordpress@'10.0.0.%';
mysql> grant all on discuz.* to discuz@'10.0.0.%';

2.2 在线编译安装http2.4

[root@centos7 ~]#vim install_online_http_2.4.53_for_centos_ubuntu.sh
#!/bin/bash
APR_URL=https://mirrors.aliyun.com/apache/apr/
APR_FILE=apr-1.7.0
TAR=.tar.bz2
APR_UTIL_URL=https://mirrors.aliyun.com/apache/apr/
APR_UTIL_FILE=apr-util-1.6.1
HTTPD_URL=https://mirrors.aliyun.com/apache/httpd/
HTTPD_FILE=httpd-2.4.53
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 编译安装 fastcgi 方式的 php 7.4

[root@centos7 ~]#yum install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel -y
[root@centos7 ~]#tar xvf php-7.4.28.tar.gz
[root@centos7 php-7.4.28]#./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 php-7.4.28]#make -j 8 && make install
[root@centos7 php-7.4.28]#vim /etc/profile.d/lamp.sh
PATH=/apps/php/bin:/apps/httpd/bin:$PATH
[root@centos7 php-7.4.28]#. /etc/profile.d/lamp.sh
[root@centos7 ~]#php --version
[root@centos7 ~]#cd php-7.4.28/
[root@centos7 php-7.4.28]#cp php.ini-production /etc/php.ini
[root@centos7 php-7.4.28]#cp sapi/fpm/php-fpm.service /usr/lib/systemd/system
[root@centos7 etc]#cp php-fpm.conf.default php-fpm.conf
[root@centos7 etc]#cd php-fpm.d/
[root@centos7 php-fpm.d]#cp www.conf.default www.conf
[root@centos7 ~]#vim /apps/php/etc/php-fpm.d/www.conf
user = apache
group = apache
pm.status_path = /fpm_status
ping.path = /ping
[root@centos7 ~]#mkdir /etc/php.d
[root@centos7 ~]#vim /etc/php.d/opcache.ini
[opcache]
zend_extension=opcache.so
opcache.enable=1
[root@centos7 ~]#systemctl daemon-reload
[root@centos7 ~]#systemctl enable --now php-fpm.service 

2.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
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
ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1
CustomLog "logs/access_discuz_log" common
</virtualhost>
[root@centos7 ~]#systemctl restart httpd

2.5 准备wordpress和discuz! 相关文件

[root@centos7 ~]#tar xf wordpress-5.9.2-zh_cn.tar.gz
[root@centos7 ~]#mv wordpress/ /data
[root@centos7 ~]#chown -R apache.apache /data/wordpress/

[root@centos7 opt]#unzip Discuz_X3.4_SC_UTF8_20220131.zip
[root@centos7 opt]#mv upload/ /data/discuz
[root@centos7 opt]#chown -R apache.apache /data/discuz/

2.6 测试访问

vim /etc/hosts
10.0.0.7 blog.magedu.org forum.magedu.org

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

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

在这里插入图片描述

1、环境准备

三台主机
一台日志服务器,利用上一个案例实现,IP:10.0.0.8,
一台数据库服务器,利用上一个案例实现,IP:10.0.0.18
一台当httpd+php 服务器,并安装loganalyzer展示web图形,IP:10.0.0.28

2、安装 php和相关软件包

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

3、安装 LogAnalyzer

[root@centos8 ~]# tar xvf loganalyzer-4.1.12.tar.gz
[root@centos8 ~]# mv loganalyzer-4.1.12/src/ /var/www/html/log
[root@centos8 ~]# touch /var/www/html/log/config.php
[root@centos8 ~]# chmod 666 /var/www/html/log/config.php 

4、基于 web 页面初始化

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

5、安全加固

http://10.0.0.38/log/install.php
[root@centos8 ~]#chmod 644 /var/www/html/log/config.php
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值