十四周 Http協(xié)議和Web服務(wù)器Apache、日志服務(wù)器

1、簡(jiǎn)述CGI與FASTCGI區(qū)別

1、CGI
CGI:Common Gateway Interface,公共網(wǎng)關(guān)接口,它是一段程序,運(yùn)行在服務(wù)器上,提供同客戶端HTML頁(yè)面的接口,通俗的講CGI就像是一座橋,把網(wǎng)頁(yè)和WEB服務(wù)器中的執(zhí)行程序連接起來(lái),它把HTML接收的指令傳遞給服務(wù)器,再把服務(wù)器執(zhí)行的結(jié)果返還給HTML網(wǎng)頁(yè);用CGI可以實(shí)現(xiàn)表單的處理,數(shù)據(jù)庫(kù)查詢,發(fā)送電子郵件,基于Web的數(shù)據(jù)庫(kù)訪問(wèn)等許多操作,最常見(jiàn)的CGI程序就是計(jì)數(shù)器。CGI使網(wǎng)頁(yè)變得不是靜態(tài)的,而是交互式的。

CGI 在2000年或更早的時(shí)候用得比較多,以前web服務(wù)器一般只處理靜態(tài)的請(qǐng)求,如果碰到一個(gè)動(dòng)態(tài)請(qǐng)求怎么辦呢?web服務(wù)器會(huì)根據(jù)這次請(qǐng)求的內(nèi)容,然后會(huì) fork 一個(gè)新進(jìn)程來(lái)運(yùn)行外部的 C 程序或者bash,perl腳本等,這個(gè)進(jìn)程會(huì)把處理完的數(shù)據(jù)返回給web服務(wù)器,最后web服務(wù)器把內(nèi)容發(fā)送給用戶,剛才fork的進(jìn)程也隨之退出。 如果下次用戶還請(qǐng)求改動(dòng)態(tài)腳本,那么web服務(wù)器又再次fork一個(gè)新進(jìn)程,周而復(fù)始的進(jìn)行。

CGI可以讓一個(gè)客戶端,從網(wǎng)頁(yè)瀏覽器通過(guò)http服務(wù)器向執(zhí)行在網(wǎng)絡(luò)服務(wù)器上的程序傳輸數(shù)據(jù);CGI描述了客戶端和服務(wù)器程序之間傳輸?shù)囊环N標(biāo)準(zhǔn)

CGI請(qǐng)求流程:Client – (http協(xié)議) --> httpd – (cgi協(xié)議) --> application server (program file) – (mysql協(xié)議) --> mysql

2、FASTCGI
FASTCGI的方式是,web服務(wù)器收到一個(gè)請(qǐng)求時(shí),不會(huì)重新fork一個(gè)進(jìn)程(因?yàn)檫@個(gè)進(jìn)程在web服務(wù)器啟動(dòng)時(shí)就開(kāi)啟了,而且不會(huì)退出),web服務(wù)器直接把內(nèi)容傳遞給這個(gè)進(jìn)程(進(jìn)程間通信,但fastcgi使用了別的方式,tcp方式通信),這個(gè)進(jìn)程收到請(qǐng)求后進(jìn)行處理,把結(jié)果返回給web服務(wù)器,最后自己接著等待下一個(gè)請(qǐng)求的到來(lái),而不是退出

FASTCGI請(qǐng)求流程:Client – (http協(xié)議) --> httpd – (fastcgi協(xié)議) --> fastcgi服務(wù)器 – (mysql協(xié)議) --> mysql

3、CGI和FASTCGI的區(qū)別
CGI:兼職,一次性的過(guò)河拆橋式的服務(wù)
FASTCGI:專職,全周期的持續(xù)式的服務(wù)


hhh.png

2、 編譯安裝基于fastcgi模式的多虛擬主機(jī)的wordpress和discuz的LAMP架構(gòu)

1 目標(biāo)
實(shí)現(xiàn)CentOS 7 編譯安裝基于fastcgi模式的多虛擬主機(jī)的wordpress和discuz的LAP架構(gòu)

2 環(huán)境準(zhǔn)備
兩臺(tái)主機(jī):
一臺(tái)主機(jī):httpd+php(fastcgi模式)
一臺(tái)主機(jī):mysql服務(wù)器
軟件版本:
CentOS 7.8
mysql-8.0.23-linux-glibc2.12-x86_64.tar.gz 通用二進(jìn)制格式
apr-1.7.0.tar.gz(apr.apache.org下載安裝包)
apr-util-1.6.1.tar.gz
httpd-2.4.46.tar.bz2 (httpd.apache.org下載安裝包)
php-7.4.19.tar.gz(www.php.net下載安裝包)
latest-zh_CN.tar.gz
Discuz_X3.4_SC_UTF8_20210320.zip

3 實(shí)現(xiàn)步驟

3.1 二進(jìn)制安裝mysql

[root@centos8 ~]#rz-E  #將install_offline_mysql5.7or8.0_for_centos.sh文件拖進(jìn)來(lái)
[root@centos8 ~]#bash  install_offline_mysql5.7or8.0_for_centos.sh
開(kāi)始安裝MySQL數(shù)據(jù)庫(kù)…
創(chuàng)建mysql用戶          [  OK   ]
Starting MySQL..       [  OK   ]
數(shù)據(jù)庫(kù)安裝完成          [  OK   ]
[root@centos8 ~]#mysql -uroot -pmagedu  #賬號(hào)登錄mysql
mysql> create database blog;
mysql> create database forum;
mysql> create user blog@'10.0.0.%' identified by '123456';
mysql> create user forum@'10.0.0.%' identified by '123456';
mysql> grant all on blog.* to blog@'10.0.0.%';
mysql> grant all on forum.* to forum@'10.0.0.%';

3.2 編譯安裝httpd 2.4

3.2.1 解壓httpd和apr包

[root@centos7 data]#tar xvf apr-1.7.0.tar.gz
[root@centos7 data]#tar xvf apr-util-1.6.1.tar.gz
[root@centos7 data]#tar xvf httpd-2.4.46.tar.bz2

3.2.2 合并三個(gè)目錄一起編譯

[root@centos7 data]#mv apr-1.7.0 httpd-2.4.46/srclib/apr
[root@centos7 data]#mv apr-util-1.6.1 httpd-2.4.46/srclib/apr-util

3.2.3 下載相關(guān)依賴包

[root@centos7 data]#yum -y install gcc pcre-devel openssl-devel expat-devel

3.2.4 進(jìn)入目錄下進(jìn)行編譯安裝

[root@centos7 data]#cd httpd-2.4.46/    #進(jìn)入目錄
[root@centos7 httpd-2.4.46]#./configure \
> --prefix=/apps/httpd24 \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --with-zlib \
> --with-pcre \
> --with-included-apr \
> --enable-modules=most \
> --enable-mpms-shared=all \
> --with-mpm=prefork \

[root@centos7 httpd-2.4.46]#make -j 4 && make install    #制作安裝

3.2.5 準(zhǔn)備PATH變量

[root@centos7 httpd-2.4.46]#echo 'PATH=/apps/httpd24/bin:$PATH' > /etc/profile.d/lamp.sh      #添加變量
[root@centos7 httpd-2.4.46]#. /etc/profile.d/lamp.sh   #加載變量

[root@centos7 httpd-2.4.46]#echo $PATH    #查看變量
/apps/httpd24/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

3.2.6 創(chuàng)建apache賬戶

#工作中最好指明UID,UID要統(tǒng)一
[root@centos7 httpd-2.4.46]#useradd -s /sbin/nologin -r -u 88 apache

3.2.7 修改httpd配置文件

[root@centos7 httpd-2.4.46]#vim /apps/httpd24/conf/httpd.conf
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group,you must run
# httpd as root initially and it will switch
#
# User/Group: The name (or #number) of the user/group to run httpd as. 
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User apache        #默認(rèn)為daemon監(jiān)管 改為apache
Group apache     #同上

</IfModule>

#網(wǎng)站主頁(yè)面定義為/data/(隨自己需求)
DocumentRoot "/data/"
<Directory "/data">

3.2.8 啟動(dòng)服務(wù)

[root@centos7 httpd-2.4.46]#systemctl enable --now httpd
[root@centos7 httpd-2.4.46]#ss -ntl       #80端口打開(kāi)

3.2.9 修改ServerName配置不再提示

[root@centos7 httpd-2.4.46]#vim /apps/httpd24/conf/httpd.conf
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName www.example.com:80    #此行取消注釋,名字是什么都可以

[root@centos7 httpd-2.4.46]#systemctl restart httpd

3.2.10 修改為event模式

[root@centos7 httpd-2.4.46]#vim /apps/httpd24/conf/httpd.conf
# 默認(rèn)centos7為prefork模式,所以需要修改
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

[root@centos7 httpd-2.4.46]#systemctl restart httpd

3.2.11 可以根據(jù)需求調(diào)節(jié)這些配置對(duì)應(yīng)生產(chǎn)調(diào)到生產(chǎn)中最大值

[root@centos7 httpd-2.4.46]#vim /apps/httpd24/conf/extra/httpd-mpm.conf
# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare      
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionPerChild: maximum number of connections a server process serves
#                        before terminating
<IfModule mpm_event_module>
     StartServers              3             
     MinSpareThreads          75
     MaxSpareThreads         250        
     ThreadsPerChild          25
     MaxRequestWorkers       400
     MaxConnectionPerChild     0
</IfModule>

3.2.12 web界面測(cè)試訪問(wèn)(It works!是默認(rèn)顯示)
瀏覽器訪問(wèn)10.0.0.7
It works!

3.3 編譯安裝fastcgi方式的php7.4

php7.3 和 php7.4依賴包稍有差別

#安裝相關(guān)依賴包,依賴EPEL源
#php 7.3 相關(guān)包
yum install gcc libxml2-devel bzip2-devel libmcrypt-devel
#php 7.4 相關(guān)包
yum install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel

3.3.1 安裝依賴包

[root@centos7 ~]#yum install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel

3.3.2 解壓php編譯安裝包

[root@centos7 ~]#tar xvf php-7.4.19.tar.gz

3.3.3 進(jìn)入php目錄下進(jìn)行編譯

# 7.4 編譯方式
[root@centos7 ~]#cd php-7.4.19/
[root@centos7 php-7.4.19]#./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.19]#make -j 8 && make install

[root@centos7 php-7.4.19]#/apps/php74/bin/php --version     #查看版本號(hào)
PHP 7.4.0 (cli) (built: Dec 15 2019 17:15:08) (ZTS)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies    #這行是引擎版本


# 7.3 編譯方式
./configure --prefix=/apps/php
> --enable-mysqlnd \
> --with-mysqli=mysqlnd \
> --with-pdo-mysql=mysqlnd \
> --with-openssl  \
> --with-freetype-dir \
> --with-jpeg-dir  \
> --with-png-dir  \
> --with-zlib  \
> --with-libxml-dir=/usr \
> --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

3.3.4 準(zhǔn)備PATH變量

#修改之前準(zhǔn)備好的變量
[root@centos7 php-7.4.19]#vim /etc/profile.d/lamp.sh
PATH=/apps/httpd24/bin:/apps/php/bin:$PATH
[root@centos7 php-7.4.19]#. /etc/profile.d/lamp.sh

3.3.5 準(zhǔn)備php配置文件和啟動(dòng)文件

[root@centos7 php-7.4.19]#cp php.ini-production /etc/php.ini
[root@centos7 php-7.4.19]#cp sapi/fpm/php-fpm.service /lib/systemd/system/

3.3.6 準(zhǔn)備fastcgi (fpm) 主配置文件

[root@centos7 php-7.4.19]#cd /apps/php/etc
[root@centos7 etc]#cp php-fpm.conf.default php-fpm.conf
[root@centos7 etc]#ll
-rw-r--r-- 1 root root 5357 May 27 14:48 php-fpm.conf
-rw-r--r-- 1 root root 5357 May 27 14:15 php-fpm.conf.default
drwxr-xr-x 2 root root   30 May 27 14:15 php-fpm.d

3.3.7 子配置文件fpm改名

[root@centos7 etc]#cd php-fpm.d/
[root@centos7 php-fpm.d]#ll
total 20
-rw-r--r-- 1 root root 19602 May 27 14:15 www.conf.default
[root@centos7 php-fpm.d]#cp www.conf.default www.conf

3.3.8 修改fpm子配置文件

[root@centos7 php-fpm.d]#vim www.conf    #/apps/php/etc/php-fpm.d/www/conf
#修改進(jìn)程所有者為apache,以apache的身份來(lái)創(chuàng)建fastcgi進(jìn)程
user = apache
group = apache
#開(kāi)啟狀態(tài)頁(yè)
; Default Value: not set
pm.status_path = /fpm_status
#開(kāi)啟ping測(cè)試
; Default Value: not set
ping.path = /ping

3.3.9 修改配置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    #啟用 fastcgi

#添加index.php
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>

#添加下面兩行
AddType application/x-httpd-php .php     #支持php后綴的文件
ProxyRequests off    #開(kāi)啟反向代理功能

#實(shí)現(xiàn)第一個(gè)虛擬主機(jī)
<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
#實(shí)現(xiàn)status和ping頁(yè)面
ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1
CustomLog "logs/access_blog_log" common
</virtualhost>

#實(shí)現(xiàn)第二個(gè)虛擬主機(jī)
<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 ~]#systemctl restart httpd.service
[root@centos7 ~]#ss -ntl     #80端口打開(kāi)

3.3.10 windows更改hosts文件

添加這一行對(duì)虛擬主機(jī)的域名和虛擬機(jī)ip
10.0.0.7 blog.magedu.org blog.magedu.org

web界面測(cè)試
blog.magedu.org/test.php

web狀態(tài)頁(yè)測(cè)試
blog.magedu.org/status

web界面ping測(cè)試
blog.magedu.org/ping

3.3.11 支持opcache加速

[root@centos7 php-fpm.d]#mkdir /etc/php.d/
[root@centos7 php-fpm.d]#vim /etc/php.d/opcache.ini
[opcache]
Zend_extension=opcace.so
Opcache.enable=1
[root@centos7 php-fpm.d]#systemctl daemon-reload
[root@centos7 php-fpm.d]#systemctl enable --now php-fpm.service
[root@centos7 php-fpm.d]#ss -ntl     #9000端口打開(kāi)

3.3.12 準(zhǔn)備wordpress和discuz!相關(guān)文件

[root@centos7 php-fpm.d]#cd /data
[root@centos7 data]#mkdir blog forum

[root@centos7 ~]#tar xf latest-zh_CN.tar.gz
[root@centos7 ~]#mv wordpress/* /data/blog/
[root@centos7 ~]#unzip Discuz_X3.4_SC_UTF8_20210320.zip
[root@centos7 ~]#mv upload/* /data/forum/
[root@centos7 ~]#chown -R apache.apache /data/*

3.3.13 web界面測(cè)試
blog.magedu.org

forum.magedu.org

3、通過(guò)loganalyzer展示數(shù)據(jù)庫(kù)中的日志

1 目標(biāo)
通過(guò)loganalyzer展示數(shù)據(jù)庫(kù)中的日志

2 環(huán)境準(zhǔn)備
三臺(tái)主機(jī)
一臺(tái)日志服務(wù)器,利用上一個(gè)案例實(shí)現(xiàn),IP:10.0.0.18
一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,利用上一個(gè)案例實(shí)現(xiàn),IP:10.0.0.28
一臺(tái)當(dāng)httpd+php服務(wù)器,并安裝loganalyzer展示web圖形,IP:10.0.0.38

3 步驟

3.1 安裝php和相關(guān)軟件包

在10.0.0.38主機(jī)上安裝httpd,php和相關(guān)軟件包

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

3.2 安裝LogAnalyzer

在10.0.0.38主機(jī)上安裝LogAnalyzer

#從http://loganalyzer.adiscon.com/downloads/  下載loganalyzer-4.1.12.tar.gz
[root@centos8 ~]#tar xvf loganalyzer-4.1.12.tar.gz
[root@centos8 ~]#mv loganalyzer-4.1.12.tar.gz/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.3 基于web頁(yè)面初始化

訪問(wèn)http://10.0.0.38/log實(shí)現(xiàn)初始化
選擇MySQL Native,Syslog Fields,Monitorware

3.4 安全加固

[root@centos8 ~]#chmod 644 /var/www/html/log/config.php
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容