0
点赞
收藏
分享

微信扫一扫

N62-14

1、简述CGI与FASTCGI区别

CGI:Common Gateway Interface 公共网关接口

CGI 在2000年或更早的时候用得比较多,以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会 fork 一个新进程来运行外部的 C 程序或者bash,perl脚本等,这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进程也随之退出。 如果下次用户还请求改动态脚本,那么web服务器又再次fork一个新进程,周而复始的进行。

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

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

1、官网下载mariadb-10.2.31-linux-x86_64.tar.gz

2、编写脚本

vim mariadb.sh

#/bin/bash

mkdir /data/mysal

yum -y install libaio

tar xf mariadb-10.2.31-linux-x86_64.tar.gz -C /usr/local

ln -s /usr/local/mariadb-10.2.31-linux-x86_64/ /usr/local/mysql

chown -R root.root /usr/local/mysql/

useradd -s /sbin/nologin -r mysql

echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh

bash /etc/profile.d/mysql.sh

ln -s /usr/local/mysql/bin/* /usr/bin/

cat > /etc/my.cnf << EOF

[mysqld]

server-id=1

log-bin

datadir=/data/mysql

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/scripts/mysql_install_db --datadir=/data/mysql --user=mysql --basedir=/usr/local/mysql

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

systemctl start mysqld

3、执行脚本

bash mariadb.sh

[root@localhost ~]# mysql -uroot

MariaDB [(none)]> create database wordpress;

MariaDB [(none)]> create database discuz;

MariaDB [(none)]> grant all on wordpress.* to wordpress@'192.168.52.%' identified by "123456";

MariaDB [(none)]> grant all on discuz.* to discuz@'192.168.52.%' identified by '123456';

搭建网站

#安装相关包

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

编译安装 fastcgi 方式的 php 7.4

yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel

wget http://www.atomicorp.com/installers/atomic

chmod +x atomic

./atomic

#php7.4 编译

wget https://www.php.net/distributions/php-7.4.7.tar.gz

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

php --version

#准备php配置文件和启动文件

find / -name php.ini-production

cd /root/php-7.4.7/

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

修改配置 httpd 支持 php-fpm

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

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>

apachectl restart

#准备wordpress程序文件

mkdir /data/

tar xvf wordpress-5.4.2-zh_CN.tar.gz

mv wordpress/ /data

#准备discuz!程序文件

unzip Discuz_X3.4_SC_UTF8【20191201】.zip

mv DiscuzX/upload/ /data/discuz

chown -R apache.apache /data

N62-14_mysql

N62-14_apache_02

N62-14_php_03

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

192.168.52.153 httpserver与rsyslogclient

192.168.52.159 rsyslogserver

192.168.52.160 mysqlserver

总体架构图:

192.168.52.153 httpserver产生日志--->192.168.52.159 rsyslogserver--->192.168.52.160 mysqlserver--->192.168.52.153loganalyzer展示数据库中的日志

开始配置

192.168.52.153 rsyslogclient

[root@httpserver ~]# vi /etc/rsyslog.conf

$ModLoad imudp

$ModLoad imtcp

*.info;mail.none;authpriv.none;cron.none                @192.168.52.159:514

[root@httpserver ~]# systemctl restart rsyslog

192.168.52.159 rsyslogserver

[root@rsyslogserver ~]#yum -y install rsyslog-mysql

[root@rsyslogserver ~]#rpm -ql rsyslog-mysql

[root@rsyslogserver ~]#scp /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql 192.168.52.160:/root

[root@rsyslogserver ~]#vi /etc/rsyslog.conf

$ModLoad imudp

$UDPServerRun 514

$ModLoad imtcp

$InputTCPServerRun 514

$ModLoad ommysql

*.info;mail.none;authpriv.none;cron.none                :ommysql:192.168.52.160,Syslog,rsyslog,123456

[root@rsyslogserver ~]#systemctl restart rsyslog

192.168.52.160开始配置

一键安装mysql-5.6二进制包的脚本(可离线可在线)

#!/bin/bash

DIR=`pwd`

yum -y install wget

wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz || { action "下载失败,异常退出" false;exit 10; }

NAME="mysql-5.6.47-linux-glibc2.12-x86_64"

PACKAGE="${DIR}/${NAME}.tar.gz"

echo $PACKAGE

DATA_DIR="/data/mysql"

yum install -y libaio perl-Data-Dumper  

if [ ! -f ${PACKAGE} ];then

    echo "安装文件不存在" && exit 1

fi

if [ -h /usr/local/mysql ];then

    echo "Mysql 已经安装" && exit 2

fi

tar xvf ${PACKAGE} -C /usr/local/src

ln -sv /usr/local/src/$NAME /usr/local/mysql

id mysql &> /dev/null || useradd -r -u 81 -s /sbin/nologin mysql   

chown -R mysql.mysql /usr/local/mysql/* 

mkdir -pv /data/mysql && chown -R mysql.mysql /data/mysql

cd /usr/local/mysql/

./scripts/mysql_install_db --datadir=/data/mysql --basedir=/usr/local/mysql/ || exit 3

cp /usr/local/src/${NAME}/support-files/mysql.server /etc/init.d/mysqld

chmod a+x /etc/init.d/mysqld

#cp ${DIR}/my.cnf   /etc/my.cnf

ln -sv /usr/local/mysql/bin/mysql /usr/bin/mysql

cat > /etc/my.cnf <<EOF

[mysqld]

socket=/data/mysql.sock

user=mysql

symbolic-links=0

datadir=/data/mysql

innodb_file_per_table=1

[client]

port=3306

socket=/data/mysql.sock

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/tmp/mysql.sock

EOF

chkconfig --add mysqld

chown -R mysql.mysql /data/mysql

/etc/init.d/mysqld start

mysql进入并授权

GRANT ALL ON Syslog.* TO rsyslog@'192.168.52.%' IDENTIFIED BY '123456';

source /root/mysql-createDB.sql

SELECT COUNT(*) FROM Syslog.SystemEvents;

192.168.52.153 httpserver配置:

#从http://loganalyzer.adiscon.com/downloads/ 下载loganalyzer-4.1.12.tar.gz

[root@httpserver ~]#tar xvf loganalyzer-4.1.12.tar.gz

[root@httpserver ~]#mv loganalyzer-4.1.10/src/* /data/discuz

[root@httpserver ~]#touch /data/discuz/config.php

[root@httpserver ~]#chmod 666 /data/discuz/config.php

访问​​http://forum.magedu.org/​​install.php,按步骤安装即可

N62-14_php_04

N62-14_mysql_05











举报

相关推荐

0 条评论