第14周-2022-03-09

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

  • CGI
    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)行帅刊。
  • 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),而不是退出掩驱。

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

環(huán)境:
MySQL8.0:centos01
httpd2.4、PHP7.4:centos02
域名(通過(guò)hosts文件解析):
wordpress.mylamp.com
discuz.mylampcom

運(yùn)行以下腳本安裝mysql數(shù)據(jù)庫(kù):
bash install_mysql80.sh

[root@centos01 ~]# cat install_mysql80.sh 
#!/bin/bash
yum -y install libaio numactl-libs
id -g mysql &> /dev/null || groupadd mysql
id mysql &> /dev/null || useradd -r -g mysql -s /bin/nologin mysql
mkdir -p /data/mysql && chown -R mysql.mysql /data/mysql
[ -f mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz ] || wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
tar xf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
mv /usr/local/mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
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
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start

創(chuàng)建wordpress和discuz數(shù)據(jù)庫(kù)賬號(hào):

[root@centos01 ~]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.27 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database wordpress;
Query OK, 1 row affected (0.01 sec)

mysql> create database discuz;
Query OK, 1 row affected (0.01 sec)

mysql> create user wordpress@'192.168.184.%' identified by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on wordpress.* to wordpress@'192.168.184.%';
Query OK, 0 rows affected (0.00 sec)

mysql> create user discuz@'192.168.184.%' identified by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on discuz.* to discuz@'192.168.184.%';
Query OK, 0 rows affected (0.00 sec)

編譯安裝http2.4

#安裝相關(guān)包
[root@centos02 ~]# yum install gcc pcre-devel openssl-devel expat-devel -y

#下載安裝包
[root@centos02 ~]# curl -O https://dlcdn.apache.org/httpd/httpd-2.4.52.tar.bz2
[root@centos02 ~]# curl -O https://dlcdn.apache.org/apr/apr-1.7.0.tar.bz2
[root@centos02 ~]# curl -O https://dlcdn.apache.org/apr/apr-util-1.6.1.tar.bz2

#編譯安裝
[root@centos02 ~]# tar xf httpd-2.4.52.tar.bz2 
[root@centos02 ~]# tar xf apr-1.7.0.tar.bz2 
[root@centos02 ~]# tar xf apr-util-1.6.1.tar.bz2 
[root@centos02 ~]# mv apr-1.7.0 httpd-2.4.52/srclib/apr
[root@centos02 ~]# mv apr-util-1.6.1 httpd-2.4.52/srclib/apr-util
[root@centos02 ~]# cd httpd-2.4.52
[root@centos02 httpd-2.4.52]# ./configure \
--prefix=/usr/local/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
[root@centos02 httpd-2.4.52]# make && make install

#配置PATH變量
[root@centos02 ~]# echo 'PATH=/usr/local/httpd/bin:$PATH' > /etc/profile.d/lamp.sh
[root@centos02 ~]# . /etc/profile.d/lamp.sh

#創(chuàng)建配置用戶和組
[root@centos02 ~]# useradd -s /sbin/nologin -r apache
[root@centos02 ~]# sed -i 's/^User daemon/User apache/' /usr/local/httpd/conf/httpd.conf
[root@centos02 ~]# sed -i 's/^Group daemon/Group apache/' /usr/local/httpd/conf/httpd.conf

#開(kāi)機(jī)啟動(dòng)腳本
[root@centos02 ~]# vi /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=/usr/local/httpd/bin/apachectl start
#ExecStart=/usr/local/httpd/bin/httpd $OPTIONS -k start
ExecReload=/usr/local/httpd/bin/apachectl graceful
#ExecReload=/usr/local/httpd/bin/httpd $OPTIONS -k graceful
ExecStop=/usr/local/httpd/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target

#啟動(dòng)httpd
[root@centos02 ~]# systemctl daemon-reload
[root@centos02 php]# systemctl enable --now httpd.service

編譯安裝fastcgi模式PHP7.4

#安裝依賴包(需要EPEL源)
[root@centos02 conf]# yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma oniguruma-devel

#下載安裝包
[root@centos02 ~]# wget https://www.php.net/distributions/php-7.4.28.tar.bz2

#編譯安裝
[root@centos02 ~]# tar xf php-7.4.28.tar.bz2
[root@centos02 ~]# cd php-7.4.28
[root@centos02 php-7.4.28]# ./configure \
--prefix=/usr/local/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@centos02 php-7.4.28]# make -j 4 && make install

#配置PATH變量
[root@centos02 php-7.4.28]# echo 'PATH=/usr/local/php/bin:/usr/local/httpd/bin:$PATH' > /etc/profile.d/lamp.sh 
[root@centos02 php-7.4.28]# . /etc/profile.d/lamp.sh
[root@centos02 php-7.4.28]# php --version
PHP 7.4.28 (cli) (built: Mar  8 2022 10:47:52) ( ZTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

#準(zhǔn)備php配置文件和啟動(dòng)文件
[root@centos02 php-7.4.28]# cp php.ini-production /etc/php.ini
[root@centos02 php-7.4.28]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
[root@centos02 php-7.4.28]# cd /usr/local/php/etc/
[root@centos02 etc]# cp php-fpm.conf.default php-fpm.conf
[root@centos02 etc]# cd php-fpm.d/
[root@centos02 php-fpm.d]# cp www.conf.default www.conf
[root@centos02 php-fpm.d]# sed -i 's/ProtectSystem=full/ProtectSystem=false/' /usr/lib/systemd/system/php-fpm.service

#修改進(jìn)程所有者
[root@centos02 etc]# sed -i 's/user = nobody/user = apache/' /usr/local/php/etc/php-fpm.d/www.conf
[root@centos02 etc]# sed -i 's/group = nobody/group = apache/' /usr/local/php/etc/php-fpm.d/www.conf

#支持opcache加速
[root@centos02 etc]# mkdir /etc/php.d/
[root@centos02 etc]# vi /etc/php.d/opcache.ini
[opcache]
zend_extension=opcache.so
opcache.enable=1

#啟動(dòng)PHP
[root@centos02 fpm]# systemctl daemon-reload
[root@centos02 fpm]# systemctl enable --now php-fpm.service

#修改配置 httpd 支持 php-fpm
[root@centos02 var]# vi /usr/local/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
#虛擬主機(jī)配置
<virtualhost *:80>
servername wordpress.mylamp.com
documentroot /data/wordpress
DirectoryIndex index.php index.htm
<directory /data/wordpress>
require all granted
</directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1
CustomLog "logs/access_wordpress_log" common
</virtualhost>

<virtualhost *:80>
servername discuz.mylamp.com
documentroot /data/discuz
DirectoryIndex index.php index.htm
<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@centos02 var]# systemctl restart httpd

#準(zhǔn)備wordpress程序文件
[root@centos02 ~]# mkdir /data
[root@centos02 ~]# unzip wordpress-5.9.1-zh_CN.zip
[root@centos02 ~]# mv wordpress /data/
[root@centos02 ~]# setfacl -R -m u:apache:rwx /data/wordpress/
#準(zhǔn)備discuz!程序文件
[root@centos02 Discuz]# unzip Discuz_X3.4_SC_UTF8_20220131.zip
[root@centos02 Discuz]# mv upload/ /data/discuz
[root@centos02 Discuz]# setfacl -R -m u:apache:rwx /data/discuz/

#wordpress站點(diǎn)配置
瀏覽器打開(kāi)http://wordpress.mylamp.com




#discuz站點(diǎn)配置
瀏覽器打開(kāi)http://discuz.mylamp.com


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

環(huán)境:
mysql:centos01(192.168.184.147)
loganalyzer民逼、lamp:centos02(192.168.184.129)
rsyslog:centos03(192.168.184.134)

#日志服務(wù)器上安裝:
[root@centos03 ~]# yum install rsyslog-mysql
#將數(shù)據(jù)庫(kù)初始化腳本拷貝的mysql服務(wù)器上:
[root@centos03 ~]# scp /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql 192.168.184.147:~

#mysql服務(wù)器導(dǎo)入建庫(kù)sql
[root@centos01 ~]# mysql < mysql-createDB.sql
#創(chuàng)建rsyslog賬號(hào)
mysql> create user rsyslog@'192.168.184.%' identified with mysql_native_password by '123456';
mysql> grant all on Syslog.* to rsyslog@'192.168.184.%';

#在日志服務(wù)器上配置加入模塊:
[root@centos03 ~]#vi /etc/rsyslog.conf
#在 MODULES 語(yǔ)言下面加下面行(centos7)
$ModLoad ommysql
#在RULES語(yǔ)句塊加下面行的格式
#facility.priority  :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
*.info :ommysql:10.0.0.28,Syslog,rsyslog,123456

#重啟rsyslog服務(wù)
[root@centos03 ~]# systemctl restart rsyslog.service

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

下載地址:https://download.adiscon.com/loganalyzer/loganalyzer-4.1.12.tar.gz
在centos02上安裝LAP環(huán)境:

#配置yum源:
[root@centos02 ~]# yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm

#安裝php-fpm7.4版和httpd
[root@centos02 ~]# yum install httpd php74-php-fpm php74-php-mysqlnd php74-php-opcache php74-php-json php74-php-gd

#修改文件配置:
[root@centos02 ~]# vi /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
#ProxyPassMatch ^/(fpm_status|ping) fcgi://127.0.0.1:9000

#啟動(dòng)httpd和PHP
[root@centos02 ~]# systemctl enable --now httpd php74-php-fpm

#測(cè)試PHP:
[root@centos02 ~]# cd /var/www/html
[root@centos02 ~]# vim info.php
<?php phpinfo(); ?>
瀏覽器訪問(wèn):http://192.168.184.129/info.php

#loganalyzer配置
[root@centos02 ~]# tar xf loganalyzer-4.1.12.tar.gz
[root@centos02 ~]# mv loganalyzer-4.1.12/src/ /var/www/html/log

#創(chuàng)建loganalyzer配置文件并加權(quán)限:
[root@centos02 html]# touch /var/www/html/log/config.php
[root@centos02 html]# chmod 666 /var/www/html/log/config.php

后續(xù)在瀏覽器中配置:
http://192.168.184.129/log






最終效果

#最后將文件恢復(fù)成644
[root@centos02 log]# cd /var/www/html/log/
[root@centos02 log]# chmod 644 config.php

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涮帘,隨后出現(xiàn)的幾起案子拼苍,更是在濱河造成了極大的恐慌,老刑警劉巖调缨,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疮鲫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡弦叶,警方通過(guò)查閱死者的電腦和手機(jī)俊犯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伤哺,“玉大人燕侠,你說(shuō)我怎么就攤上這事×⒗颍” “怎么了绢彤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)桃序。 經(jīng)常有香客問(wèn)我杖虾,道長(zhǎng),這世上最難降的妖魔是什么媒熊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮坟比,結(jié)果婚禮上芦鳍,老公的妹妹穿的比我還像新娘。我一直安慰自己葛账,他們只是感情好柠衅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著籍琳,像睡著了一般菲宴。 火紅的嫁衣襯著肌膚如雪贷祈。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,215評(píng)論 1 299
  • 那天喝峦,我揣著相機(jī)與錄音势誊,去河邊找鬼。 笑死谣蠢,一個(gè)胖子當(dāng)著我的面吹牛粟耻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播眉踱,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挤忙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谈喳?” 一聲冷哼從身側(cè)響起册烈,我...
    開(kāi)封第一講書(shū)人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎婿禽,沒(méi)想到半個(gè)月后赏僧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谈宛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年次哈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吆录。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窑滞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出恢筝,到底是詐尸還是另有隱情哀卫,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布撬槽,位于F島的核電站此改,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侄柔。R本人自食惡果不足惜共啃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望暂题。 院中可真熱鬧移剪,春花似錦、人聲如沸薪者。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至攻人,卻和暖如春取试,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怀吻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工瞬浓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烙博。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓瑟蜈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親渣窜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铺根,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容