M63.第十四周作业

就业班(全程班)第十四周作业

1、简述CGI与FASTCGI区别

现在的CGI基本没人使用,不安全以及性能极其低下,越来越多的使用web内置扩展、fastCGI。例如微软iis的ISAPI,apache的php模块,nginx的php-cgi。CGI、内置模块、fastcgi这三种性能最好的要属于fast_cgi速度最快,但是需要额外的进程。解析来看看CGI和FASTCGI有什么不同.

CGI方式介绍:

cgi在2000年或更早的时候用得比较多,以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会fork一个新进程来运行外部程序, 这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进程也随之退出。 如果下次用户还请求改动态脚本,那么web服务器又再次fork一个新进程,周而复始的进行。这在处理高并发访问时几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少使用了。

web内置模块介绍:

后来出现了一种更高级的方式是, web服务器可以内置perl解释器或php解释器。 也就是说这些解释器做成模块的方式,web服务器会在启动的时候就启动这些解释器。 当有新的动态请求进来时,web服务器就是自己解析这些perl或php脚本,省得重新fork一个进程,效率提高了。

fastcgi方式介绍:

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

fastcgi跟cgi的区别表格:


举个例子: 服务端现在有个10万个字单词, 客户每次会发来一个字符串,问以这个字符串为前缀的单词有多少个。

那么可以写一个程序,这个程序会建一棵trie树,然后每次用户请求过来时可以直接到这个trie去查找。

但是如果以cgi的方式的话,这次请求结束后这课trie也就没了,等下次再启动该进程时,又要新建一棵trie树,这样的效率就太低下了。

而用fastcgi的方式的话,这课trie树在进程启动时建立,以后就可以直接在trie树上查询指定的前缀了。

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

准备环境:

准备软件版本:

主机名修改用以区分

数据库服务器:

实现数据库二进制安装(并加上LAMP需要的配置)

websrv服务器端:

编译安装httpd

编译安装fastcgi 方式的 php7.3

部署wordpress和discuz

测试性能

准备环境:

两台主机:

    一台主机:httpd+php(fastcgi模式)

    一台主机:mariadb 服务器

准备软件版本:

mariadb-10.2.27-linux-x86_64.tar.gz 通用二进制格式

apr-1.7.0.tar.bz2

apr-util-1.6.1.tar.bz2

httpd-2.4.41.tar.gz

php-7.4.0.tar.xz

wordpress-5.9.3-zh_CN.tar.tar.gz

Discuz_X3.4_SC_UTF8_20220131.zip

主机名修改用以区分

# 作为httpd和php服务器使用

[root@centos7 ~]$hostname websrv

[root@centos7 ~]$exit

[root@websrv ~]$

# 作为数据库使用

[root@centos7 ~]$hostname mysql

[root@centos7 ~]$exit

[root@mysql ~]$

数据库服务器

实现数据库二进制安装(并加上LAMP需要的配置)

准备好二进制mariadb安装包

1.准备好二进制mariadb安装包

[root@centos7 data]$ll

total 449668

-rw-r--r-- 1 root root 460459738 Sep 12 09:08 mariadb-10.2.27-linux-x86_64.tar.gz

2.解压安装包

[root@centos7 data]$tar xvf mariadb-10.2.27-linux-x86_64.tar.gz

[root@centos7 data]$ll

total 449668

drwxrwxr-x 12 yang yang      282 Sep 10 02:02 mariadb-10.2.27-linux-x86_64

-rw-r--r--  1 root root 460459738 Sep 12 09:08 mariadb-10.2.27-linux-x86_64.tar.gz

3.把解压后的数据库目录移动到usr/local下统一管理

[root@centos7 data]$mv mariadb-10.2.27-linux-x86_64 /usr/local/ # 移动

[root@centos7 local]$ln -s /usr/local/mariadb-10.2.27-linux-x86_64/ /usr/local/mysql  # 创建软连接

[root@centos7 local]$ll /usr/local/mysql

lrwxrwxrwx 1 root root 40 Dec 15 14:44 /usr/local/mysql -> /usr/local/mariadb-10.2.27-linux-x86_64/

4.创建服务用户,并修改mysql目录下的权限。

[root@centos7 data]$useradd -s /sbin/nologin -d /data/mysql -r -u 306 mysql # 创建服务用户

[root@centos7 local]$chown -R root.root mysql/*  # 修改为root

[root@centos7 local]$ll mysql/

total 176

drwxrwxr-x  2 root root  4096 Aug 14 02:55 bin

-rw-r--r--  1 root root 17987 Sep  8 21:25 COPYING

-rw-r--r--  1 root root  2354 Sep  8 21:25 CREDITS

drwxrwxr-x  3 root root    18 Sep 10 02:02 data

-rw-r--r--  1 root root  8245 Sep  8 21:25 EXCEPTIONS-CLIENT

drwxrwxr-x  3 root root    19 Sep 10 02:02 include

-rw-r--r--  1 root root  8694 Sep  8 21:25 INSTALL-BINARY

drwxrwxr-x  5 root root  335 Aug 14 02:55 lib

drwxrwxr-x  4 root root    30 Sep 10 02:02 man

drwxrwxr-x 11 root root  4096 Sep 10 02:02 mysql-test

-rw-r--r--  1 root root  2843 Sep  8 21:25 README.md

-rw-r--r--  1 root root 19477 Sep  8 21:25 README-wsrep

drwxrwxr-x  2 root root    30 Sep 10 02:02 scripts

drwxrwxr-x 32 root root  4096 Sep 10 02:02 share

drwxrwxr-x  4 root root  4096 Sep 10 02:02 sql-bench

drwxrwxr-x  3 root root  275 Sep 10 02:02 support-files

-rw-r--r--  1 root root 86263 Sep  8 21:25 THIRDPARTY

5.创建数据库

[root@centos7 mysql]$/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysql --user=mysql

Installing MariaDB/MySQL system tables in '/data/mysql' ...

./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

# 创建数据库时缺少包(libaio)

[root@centos7 mysql]$yum install libaio -y  # 下载依赖包

[root@centos7 mysql]$/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysql --user=mysql  # 创建数据库(/data下没有这个目录会自动创建)

[root@centos7 mysql]$ll /data/

total 449668

-rw-r--r-- 1 root  root 460459738 Sep 12 09:08 mariadb-10.2.27-linux-x86_64.tar.gz

drwx------ 5 mysql root      181 Dec 15 14:55 mysql      # 数据库创建成功

[root@centos7 mysql]$ll /data/mysql/  # 查看用户和所属组

total 110620

-rw-rw---- 1 mysql mysql    16384 Dec 15 14:55 aria_log.00000001

-rw-rw---- 1 mysql mysql      52 Dec 15 14:55 aria_log_control

-rw-rw---- 1 mysql mysql      938 Dec 15 14:55 ib_buffer_pool

-rw-rw---- 1 mysql mysql 12582912 Dec 15 14:55 ibdata1

-rw-rw---- 1 mysql mysql 50331648 Dec 15 14:55 ib_logfile0

-rw-rw---- 1 mysql mysql 50331648 Dec 15 14:55 ib_logfile1

drwx------ 2 mysql mysql    4096 Dec 15 14:55 mysql

drwx------ 2 mysql mysql      20 Dec 15 14:55 performance_schema

drwx------ 2 mysql mysql      20 Dec 15 14:55 test

6.准备配置文件(指明数据库路径)

[root@centos7 ~]$cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf -b # 找到解压目录下的配置文件替换掉/etc下的配置文件并备份

cp: overwrite ‘/etc/my.cnf’? y

# 原系统/etc下就有一个my.cnf的配置文件但是需要改配置

[root@centos7 mysql]$vim /etc/my.cnf

[mysqld]

datadir=/data/mysql  # 加上这一行就够了 (需要启用二进制日志啊之类的根据需要启动)


如果上一步cp没做直接用的自带的文件,注意sock路经。(服务可能起不来是因为启动过一次之后系统建立了一个sock路径但是用的是系统自带的配置文件建立的路径。你在拷贝配置文件过去后一定要确保没有启动过服务。如果启动过请重启电脑或删掉旧的配置文件建立的sock文件再启动服务)

7. 制作启动服务(类似于centos6的启动脚本)

[root@centos7 mysql]$cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld # 拷贝目录下的server启动脚本到

[root@centos7 mysql]$chkconfig --list    # 查看注册了哪些服务

Note: This output shows SysV services only and does not include native

      systemd services. SysV configuration data might be overridden by native

      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

      To see services enabled on particular target use

      'systemctl list-dependencies [target]'.

netconsole    0:off 1:off 2:off 3:off 4:off 5:off 6:off

network        0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@centos7 mysql]$chkconfig --add mysqld  # 添加服务

[root@centos7 mysql]$chkconfig --list  # 再次查看

Note: This output shows SysV services only and does not include native

      systemd services. SysV configuration data might be overridden by native

      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

      To see services enabled on particular target use

      'systemctl list-dependencies [target]'.

mysqld        0:off 1:off 2:on 3:on 4:on 5:on 6:off

netconsole    0:off 1:off 2:off 3:off 4:off 5:off 6:off

network        0:off 1:off 2:on 3:on 4:on 5:on 6:off  # 添加上了

8.添加PATH变量

[root@centos7 ~]$echo "PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh

[root@centos7 ~]$. /etc/profile.d/mysql.sh

9.创建部署软件需要的数据库和用户并授权

# 创建数据库

MariaDB [(none)]> create database wordpress;

Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create database discuz;

Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> show databases;

+--------------------+

| Database          |

+--------------------+

| discuz            |

| information_schema |

| mysql              |

| performance_schema |

| test              |

| wordpress          |

+--------------------+

6 rows in set (0.00 sec)

# 创建用户并授权

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

Query OK, 0 rows affected (0.00 sec)

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

Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select user,host,password from mysql.user;  # 查看创建的账户

+-----------+--------------+-------------------------------------------+

| user      | host        | password                                  |

+-----------+--------------+-------------------------------------------+

| root      | localhost    |                                          |

| root      | centos7      |                                          |

| root      | 127.0.0.1    |                                          |

| root      | ::1          |                                          |

|          | localhost    |                                          |

|          | centos7      |                                          |

| wordpress | 192.168.39.% | *114893F4494D9D1D5AE2BCCACDD663C08715DA05 |

| discuz    | 192.168.39.% | *114893F4494D9D1D5AE2BCCACDD663C08715DA05 |

+-----------+--------------+-------------------------------------------+

8 rows in set (0.00 sec)

数据库需要的基本配置完毕


websrv服务器端

websrv端需要的包

[root@centos7 ~]$ll

total 43984

-rw-r--r--  1 root root  872238 May 14  2019 apr-1.7.0.tar.bz2

-rw-r--r--  1 root root  428595 May 14  2019 apr-util-1.6.1.tar.bz2

-rw-r--r--  1 root root 11800498 Dec 12 14:57 Discuz_X3.4_SC_UTF8_20220131.zip

-rw-r--r--  1 root root  9267917 Oct  8 15:10 httpd-2.4.41.tar.gz

-rw-r--r--  1 root root 10232208 Dec 14 08:30 php-7.4.0.tar.xz

-rw-r--r--  1 root root 12423575 Dec 12 14:18 wordpress-5.9.3-zh_CN.targz

编译安装httpd

1.解压httpd和apr包

[root@centos7 data]$ll

total 10324

-rw-r--r-- 1 root root  872238 May 14  2019 apr-1.7.0.tar.bz2

-rw-r--r-- 1 root root  428595 May 14  2019 apr-util-1.6.1.tar.bz2

-rw-r--r-- 1 root root 9267917 Oct  8 15:10 httpd-2.4.41.tar.gz

[root@centos7 data]$tar xvf apr-1.7.0.tar.bz2  # 最小化安装缺少包

tar (child): cannot run bzip2: No such file or directory

tar (child): trying lbzip2

tar (child): lbzip2: Cannot exec: No such file or directory

tar (child): Error is not recoverable: exiting now

tar: Child returned status 2

tar: Error is not recoverable: exiting now

[root@centos7 data]$yum install bzip2 # 下载解压需要的包

# 解压

[root@centos7 data]$tar xvf apr-1.7.0.tar.bz2

[root@centos7 data]$tar xvf apr-util-1.6.1.tar.bz2

[root@centos7 data]$tar xvf httpd-2.4.41.tar.gz

[root@centos7 data]$ll

total 10336

drwxr-xr-x 27 1001 1001    4096 Apr  2  2019 apr-1.7.0

-rw-r--r--  1 root root  872238 May 14  2019 apr-1.7.0.tar.bz2

drwxr-xr-x 20 1001 1001    4096 Oct 18  2017 apr-util-1.6.1

-rw-r--r--  1 root root  428595 May 14  2019 apr-util-1.6.1.tar.bz2

drwxr-sr-x 11 root  40    4096 Aug  9 21:36 httpd-2.4.41

-rw-r--r--  1 root root 9267917 Oct  8 15:10 httpd-2.4.41.tar.gz

2.合并三个目录一起编译

[root@centos7 data]$mv apr-1.7.0 httpd-2.4.41/srclib/apr

[root@centos7 data]$mv apr-util-1.6.1 httpd-2.4.41/srclib/apr-util

3.下载相关依赖包

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

4.进入目录下进行编译安装

[root@centos7 data]$cd httpd-2.4.41/ # 进入目录

[root@centos7 httpd-2.4.41]$./configure \

> --prefix=/app/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.41]$make -j 4 && make install  # 制作安装

5.准备PATH变量

[root@centos7 httpd-2.4.41]$echo 'PATH=/app/httpd24/bin:$PATH' > /etc/profile.d/lamp.sh # 添加变量

[root@centos7 httpd-2.4.41]$. /etc/profile.d/lamp.sh  # 加载变量

[root@centos7 httpd-2.4.41]$echo $PATH  # 查看变量

/app/httpd24/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

6.创建apache账户

# 工作中最好指明UID,UID要统一.

[root@centos7 httpd-2.4.41]$useradd -s /sbin/nologin -r -u 88 apache

7.修改httpd配置文件

[root@centos7 httpd-2.4.41]$vim /app/httpd24/conf/httpd.conf

#

# 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  # 默认为daemon监管改为apache

Group apache  # 同上

# 网站主页面定义为/data/(随自己需求)

DocumentRoot "/data/"

8.启动服务

[root@centos7 httpd-2.4.41]$apachectl restart

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:feac:5484%eth0. Set the 'ServerName' directive globally to suppress this message

httpd not running, trying to start 

[root@centos7 httpd-2.4.41]$ss -ntlup

Netid State      Recv-Q Send-Q                                              Local Address:Port                                                              Peer Address:Port             

tcp  LISTEN    0      128                                                              *:22                                                                          *:*                  users:(("sshd",pid=6461,fd=3))

tcp  LISTEN    0      100                                                      127.0.0.1:25                                                                          *:*                  users:(("master",pid=6581,fd=13))

tcp  LISTEN    0      128                                                            :::80                                                                          :::*                  users:(("httpd",pid=49496,fd=4),("httpd",pid=49495,fd=4),("httpd",pid=49494,fd=4),("httpd",pid=49493,fd=4),("httpd",pid=49492,fd=4),("httpd",pid=49491,fd=4))

tcp  LISTEN    0      128                                                            :::22                                                                          :::*                  users:(("sshd",pid=6461,fd=4))

tcp  LISTEN    0      100                                                            ::1:25                                                                          :::*                  users:(("master",pid=6581,fd=14))

9.修改ServerName配置不在提示

[root@centos7 httpd-2.4.41]$vim /app/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.41]$apachectl restart  # 不在提示

[root@centos7 httpd-2.4.41]$

10.修改为event模式

[root@centos7 httpd-2.4.41]$vim /app/httpd24/conf/httpd.conf

#  默认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.41]$apachectl restart

11.可以根据需求调节这些配置对应生产调到生产中最大值

[root@centos7 httpd-2.4.41]$vim /app/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

# MaxConnectionsPerChild: maximum number of connections a server process serves

#                        before terminating

    StartServers            3

    MinSpareThreads        75

    MaxSpareThreads        250

    ThreadsPerChild        25

    MaxRequestWorkers      400

    MaxConnectionsPerChild  0

现在httpd服务已经可以访问了!

编译安装fastcgi 方式的 php7.4

php7.3和php7.4依赖包稍有差别

#安装相关包,依赖EPEL源

#php 7.3 相关包

yum install gcc libxml2-devel bzip2-devel libmcrypt-devel

#php 7.4 相关包

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

oniguruma-devel

1.安装依赖包

[root@centos7 data]$yum install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel

2.解压php编译安装包

[root@centos7 data]$tar xvf php-7.4.0.tar.xz

[root@centos7 data]$ll

total 20328

-rw-r--r--  1 root root  872238 May 14  2019 apr-1.7.0.tar.bz2

-rw-r--r--  1 root root  428595 May 14  2019 apr-util-1.6.1.tar.bz2

drwxr-sr-x 12 root  40    4096 Dec 15 16:14 httpd-2.4.41

-rw-r--r--  1 root root  9267917 Oct  8 15:10 httpd-2.4.41.tar.gz

drwxrwxr-x 16 root root    4096 Nov 27 04:13 php-7.4.0    # 解压完的目录

-rw-r--r--  1 root root 10232208 Dec 14 08:30 php-7.4.0.tar.xz

3.进入php目录下进行编译

# 7.4编译方式

[root@centos7 data]$cd php-7.4.0/

[root@centos7 data]$./configure \

--prefix=/app/php74 \

--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 data]$make -j 4 && make install

[root@centos7 php-7.4.0]$/app/php74/bin/php --version  # 查看版本号

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=/app/php73 \

--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

4.准备PATH变量

# 修改之前准备好的变量

[root@centos7 php-7.4.0]$vim /etc/profile.d/lamp.sh

PATH=/app/httpd24/bin:/app/php/bin/:$PATH   

[root@centos7 php-7.4.0]$. /etc/profile.d/lamp.sh

5.准备php配置文件

[root@centos7 php-7.4.0]$cp php.ini-production /etc/php.ini

6.准本fastcgi(fpm)主配置文件(改名=启用)

[root@centos7 php-7.4.0]$cd /app/php74/etc/

[root@centos7 etc]$cp php-fpm.conf.default php-fpm.conf

[root@centos7 etc]$ll

total 16

-rw-r--r-- 1 root root 5357 Dec 15 17:28 php-fpm.conf

-rw-r--r-- 1 root root 5357 Dec 15 17:15 php-fpm.conf.default

drwxr-xr-x 2 root root  30 Dec 15 17:15 php-fpm.d

7.子配置文件fpm改名

[root@centos7 etc]$cd php-fpm.d/

[root@centos7 php-fpm.d]$ll

total 20

-rw-r--r-- 1 root root 19602 Dec 15 17:15 www.conf.default

[root@centos7 php-fpm.d]$cp www.conf.default www.conf

8.修改fpm子配置文件

[root@centos7 php-fpm.d]$vim www.conf

# 修改为apache,以apache的身份来创建fastcgi的进程

user = apache

group = apache

# 开启状态页

; Default Value: not set

pm.status_path = /status

# 开启ping测试

; Default Value: not set

ping.path = /ping

9.准备启动脚本

# 查找一下启动脚本

[root@centos7 php74]$updatedb

[root@centos7 php74]$locate php-fpm

/app/php74/etc/php-fpm.conf

/app/php74/etc/php-fpm.conf.default

/app/php74/etc/php-fpm.d

/app/php74/etc/php-fpm.d/www.conf

/app/php74/etc/php-fpm.d/www.conf.default

/app/php74/php/man/man8/php-fpm.8

/app/php74/sbin/php-fpm

/data/php-7.4.0/sapi/fpm/init.d.php-fpm

/data/php-7.4.0/sapi/fpm/init.d.php-fpm.in

/data/php-7.4.0/sapi/fpm/php-fpm

/data/php-7.4.0/sapi/fpm/php-fpm.8

/data/php-7.4.0/sapi/fpm/php-fpm.8.in

/data/php-7.4.0/sapi/fpm/php-fpm.conf

/data/php-7.4.0/sapi/fpm/php-fpm.conf.in

/data/php-7.4.0/sapi/fpm/php-fpm.service

/data/php-7.4.0/sapi/fpm/php-fpm.service.in

# 拷贝过去作为启动文件

[root@centos7 php74]$cp /data/php-7.4.0/sapi/fpm/php-fpm.service /usr/lib/system

d/system

# 重新加载服务

[root@centos7 php74]$systemctl daemon-reload

10.修改配置httpd 支持php-fpm

# 启用代理

#LoadModule remoteip_module modules/mod_remoteip.so

LoadModule proxy_module modules/mod_proxy.so    # 启用

#LoadModule proxy_connect_module modules/mod_proxy_connect.so

#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

#LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so  # 启用

# 添加index.php

    DirectoryIndex index.php index.html

# 添加这三行

AddType application/x-httpd-php .php

    AddType application/x-httpd-php-source .phps

    ProxyRequests Off

# 多虚拟主机和status启用

servername wordpress.atotaobao.org

documentroot /data/wordpress

require all granted

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1

ProxyPassMatch ^/(status|ping)$ fcgi://127.0.0.1:9000/$1

CustomLog "logs/access_wordpress_log" common

servername discuz.taotaobao.org

documentroot /data/discuz

require all granted

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/discuz/$1

CustomLog "logs/access_discuz_log" common

11.创建部署软件需要的目录并建立一个测试php文件测试使用

[root@centos7 php74]$mkdir /data/wordpress

[root@centos7 php74]$mkdir /data/discuz

[root@centos7 php74]$vim /data/discuz/test.php

phpinfo();

?>

[root@centos7 php74]$cp /data/discuz/test.php /data/wordpress/

windows更改host文件

web界面测试



12.准备opcache加速

查找opcache.so模块路径

[root@centos7 wordpress]$locate opcache.so

/app/php74/lib/php/extensions/no-debug-zts-20190902/opcache.so  # 这个是opcache加速模块

/data/php-7.4.0/ext/opcache/.libs/opcache.so

/data/php-7.4.0/modules/opcache.so

# 这三个文件是一样的只是在不同目录里作用不同

[root@centos7 wordpress]$ll /app/php74/lib/php/extensions/no-debug-zts-20190902/opcache.so

-rwxr-xr-x 1 root root 2491984 Dec 15 17:15 /app/php74/lib/php/extensions/no-debug-zts-20190902/opcache.so

[root@centos7 wordpress]$ll /data/php-7.4.0/ext/opcache/.libs/opcache.so

-rwxr-xr-x 1 root root 2491984 Dec 15 17:15 /data/php-7.4.0/ext/opcache/.libs/opcache.so

[root@centos7 wordpress]$ll /data/php-7.4.0/modules/opcache.so

-rwxr-xr-x 1 root root 2491984 Dec 15 17:15 /data/php-7.4.0/modules/opcache.so

准备加速插件文件(用来加速php处理动态资源)

[root@centos7 wordpress]$mkdir /etc/php.d/

[root@centos7 wordpress]$vim /etc/php.d/opcache.ini

[opcache]

zend_extension=opcache.so

#zend_extension=/app/php74/lib/php/extensions/no-debug-zts-20190902/opcache.so

opcache.enable=1  # 1 启用  0 关闭

# 路径以写全也可以只写模块名都可以找到。

[root@centos7 wordpress]$systemctl restart php-fpm.service  # 重启服务


部署wordpress和discuz

1.解压wordpress

[root@centos7 wordpress]$rm -rf /data/wordpress/ # wordpress 不用准备目录里面的所有文件都需要

[root@centos7 data]$ll

total 32464

-rw-r--r--  1 root root  872238 May 14  2019 apr-1.7.0.tar.bz2

-rw-r--r--  1 root root  428595 May 14  2019 apr-util-1.6.1.tar.bz2

drwxr-xr-x  2 root root      22 Dec 15 18:23 discuz

drwxr-sr-x 12 root  40    4096 Dec 15 16:14 httpd-2.4.41

-rw-r--r--  1 root root  9267917 Oct  8 15:10 httpd-2.4.41.tar.gz

drwxrwxr-x 19 root root    4096 Dec 15 17:11 php-7.4.0

-rw-r--r--  1 root root 10232208 Dec 14 08:30 php-7.4.0.tar.xz

-rw-r--r--  1 root root 12423575 Dec 12 14:18 wordpress-5.9.3-zh_CN.tar.tar.gz

[root@centos7 data]$tar xvf wordpress-5.3-zh_CN.tar.gz  # 解压

[root@centos7 data]$ll

total 32468

-rw-r--r--  1 root root  872238 May 14  2019 apr-1.7.0.tar.bz2

-rw-r--r--  1 root root  428595 May 14  2019 apr-util-1.6.1.tar.bz2

drwxr-xr-x  2 root root      22 Dec 15 18:23 discuz

drwxr-sr-x 12 root  40    4096 Dec 15 16:14 httpd-2.4.41

-rw-r--r--  1 root root  9267917 Oct  8 15:10 httpd-2.4.41.tar.gz

drwxrwxr-x 19 root root    4096 Dec 15 17:11 php-7.4.0

-rw-r--r--  1 root root 10232208 Dec 14 08:30 php-7.4.0.tar.xz

drwxr-xr-x  5 1006 1006    4096 Nov 14 09:00 wordpress

-rw-r--r--  1 root root 12423575 Dec 12 14:18 wordpress-5.9.3-zh_CN.tar.gz

2.解压discuz

[root@centos7 data]$unzip wordpress-5.9.3-zh_CN.tar.tar.gz # 解压没有这个解压软件

-bash: unzip: command not found

[root@centos7 data]$yum install unzip    # 下载解压软件

[root@centos7 ~]$unzip Discuz_X3.4_SC_UTF8_20220131.zip -d /opt  # 指定目录安装因为有的东西不能放在网站主页目录下

[root@centos7 ~]$rm -f /data/discuz/test.php  # 删除之前的测试文件

[root@centos7 ~]$mv /opt/upload/* /data/discuz/  # 把upload下的所有文件移动到discuz目录下

3.修改权限

[root@centos7 ~]$cd /data/

[root@centos7 data]$chown -R apache.apache discuz/ wordpress

web界面测试wordpress


web界面测试discuz


测试性能

1.找一台虚拟机当客户端,现在客户端添加主机头解析。

[root@centos ~]# vim /etc/hosts

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.39.7 wordpress.taotaobao.org discuz.taotaobao.org  # 添加这一行就行了


2.使用ab命令测试

# 如果没有这个命令下载这个包

[root@centos ~]# yum install httpd-tools

[root@centos ~]# ab -c 10 -n 100 http://wordpress.taotaobao.org/  # 测试

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking wordpress.taotaobao.org (be patient)...^[[A..done

Server Software:        Apache/2.4.41

Server Hostname:        wordpress.taotaobao.org

Server Port:            80

Document Path:          /

Document Length:        27338 bytes

# 第一次测试

Concurrency Level:      10

Time taken for tests:  1.936 seconds

Complete requests:      100

Failed requests:        0

Write errors:          0

Total transferred:      2759700 bytes

HTML transferred:      2733800 bytes

Requests per second:    51.66 [#/sec] (mean)  # 主要看这行多测试几遍取平均值

Time per request:      193.561 [ms] (mean)

Time per request:      19.356 [ms] (mean, across all concurrent requests)

Transfer rate:          1392.34 [Kbytes/sec] received

# 第二次测试

Concurrency Level:      10

Time taken for tests:  1.117 seconds

Complete requests:      100

Failed requests:        0

Write errors:          0

Total transferred:      2759700 bytes

HTML transferred:      2733800 bytes

Requests per second:    89.51 [#/sec] (mean)

Time per request:      111.724 [ms] (mean)

Time per request:      11.172 [ms] (mean, across all concurrent requests)

Transfer rate:          2412.21 [Kbytes/sec] received

# 第三次测试

Concurrency Level:      10

Time taken for tests:  0.840 seconds

Complete requests:      100

Failed requests:        0

Write errors:          0

Total transferred:      2759700 bytes

HTML transferred:      2733800 bytes

Requests per second:    119.09 [#/sec] (mean)

Time per request:      83.967 [ms] (mean)

Time per request:      8.397 [ms] (mean, across all concurrent requests)

Transfer rate:          3209.61 [Kbytes/sec] received

3.关闭opcache加速,测试。

# websrv服务端修改

[root@centos7 ~]$vim /etc/php.d/opcache.ini

opcache.enable=0  # 这一项修改为0

[root@centos7 ~]$systemctl restart php-fpm.service # 重启服务或重新加载

# 测试第一次

Concurrency Level:      10

Time taken for tests:  3.421 seconds

Complete requests:      100

Failed requests:        0

Write errors:          0

Total transferred:      2759700 bytes

HTML transferred:      2733800 bytes

Requests per second:    29.23 [#/sec] (mean)

Time per request:      342.077 [ms] (mean)

Time per request:      34.208 [ms] (mean, across all concurrent requests)

Transfer rate:          787.84 [Kbytes/sec] received

# 测试第二次

Concurrency Level:      10

Time taken for tests:  2.786 seconds

Complete requests:      100

Failed requests:        0

Write errors:          0

Total transferred:      2759700 bytes

HTML transferred:      2733800 bytes

Requests per second:    35.89 [#/sec] (mean)

Time per request:      278.639 [ms] (mean)

Time per request:      27.864 [ms] (mean, across all concurrent requests)

Transfer rate:          967.21 [Kbytes/sec] received

# 测试第三次

Concurrency Level:      10

Time taken for tests:  2.806 seconds

Complete requests:      100

Failed requests:        0

Write errors:          0

Total transferred:      2759700 bytes

HTML transferred:      2733800 bytes

Requests per second:    35.64 [#/sec] (mean)

Time per request:      280.607 [ms] (mean)

Time per request:      28.061 [ms] (mean, across all concurrent requests)

Transfer rate:          960.43 [Kbytes/sec] received

结论:加速与不加速性能可能相差三倍

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


一、安装mysql

# yum -y install mariadb-server

# systemctl enable --now mariadb && systemctl status mariadb

● mariadb.service - MariaDB 10.3 database server

  Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)

  Active: active (running) since Sat 2021-12-25 03:56:37 EST; 2min 38s ago

    Docs: man:mysqld(8)

          https://mariadb.com/kb/en/library/systemd/

  Process: 31604 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCE>

  Process: 31470 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited>

  Process: 31445 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)

Main PID: 31573 (mysqld)

  Status: "Taking your SQL requests now..."

    Tasks: 30 (limit: 11303)

  Memory: 87.3M

  CGroup: /system.slice/mariadb.service

          └─31573 /usr/libexec/mysqld --basedir=/usr

二、安装rsyslog

# yum -y install rsyslog-mysql

#将sql脚本复制到数据库服务器

# scp /usr/share/doc/rsyslog/mysql-createDB.sql 10.0.0.28:/root/

三、配置mysql服务器

3.1 导入数据库

# mysql -uroot < mysql-createDB.sql

# mysql -e "show databases;"

+--------------------+

| Database          |

+--------------------+

| Syslog            |

| information_schema |

| mysql              |

| performance_schema |

+--------------------+

3.2 创建授权用户

# mysql -e "create user rsyslog@'10.0.0.%' identified by '123456';"

# mysql -e "grant all on Syslog.* to 'rsyslog'@'10.0.0.%';"

# mysql -e "select user,host from mysql.user;"

+---------+--------------+

| user    | host        |

+---------+--------------+

| rsyslog | 10.0.0.%    |

| root    | 127.0.0.1    |

| root    | ::1          |

| root    | localhost    |

| root    | mysql-server |

+---------+--------------+

四、配置rsyslog服务器

4.1 配置日志服务器将日志发送至指定数据库

[root@ rsyslog-server ~]#vim /etc/rsyslog.conf

####MODULES####    #在 MODULES 语言下面添加

module(load="ommysql")

#在RULES语句块下面添加

#### RULES ####

#facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD

*.info :ommysql:10.0.0.28,Syslog,rsyslog,123456

[root@ rsyslog-server ~]# systemctl restart rsyslog.service

4.2 测试

#在日志服务器上生成日志

# logger "this is a test log"

#在数据库上查询到上面的测试日志

$> mysql -e "select count(*) from Syslog.SystemEvents;"

+----------+

| count(*) |

+----------+

|    1907 |

+----------+

# 可以看到测试日记已经存到Mysql的Syslog库中

# mysql -e "select *  from  Syslog.SystemEvents\G" | grep -C10 "this is a test log"

  GenericFileName: NULL

          SystemID: NULL

*************************** 1904. row ***************************

                ID: 1904

        CustomerID: NULL

        ReceivedAt: 2021-12-25 17:25:29

DeviceReportedTime: 2021-12-25 17:25:29

          Facility: 1

          Priority: 5

          FromHost: reyslog

          Message: this is a test log

        NTSeverity: NULL

        Importance: NULL

      EventSource: NULL

        EventUser: NULL

    EventCategory: NULL

          EventID: NULL

  EventBinaryData: NULL

      MaxAvailable: NULL

        CurrUsage: NULL

          MinUsage: NULL


五、部署配置LogAnalyzer

5.1 安装LogAnalyzer

# wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.10.tar.gz

# tar xvf loganalyzer-4.1.10.tar.gz

# mkdir /var/www/html/log

# mv loganalyzer-4.1.10/src/* /var/www/html/log

5.2 安装相关服务

# yum -y install httpd php-fpm php-mysqlnd php-gd

# systemctl enable --now httpd php-fpm && systemctl status httpd php-fpm

5.3 测试php

php是使用套接字和httpd通讯的,并非监听在9000端口。

需要监听在端口,修改配置文件/etc/php-fpm.d/www.conf,监听端修改为:listen = 127.0.0.1:9000

# cat > /var/www/html/info.php << EOF

EOF

# 打开浏览器访问http://10.0.0.38/info.php,没问题继续下一步操作

六、基于 web 页面初始化LogAnalyzer

6.1 打开浏览器

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


6.2 提示缺失配置文件

# touch /var/www/html/log/config.php

# chmod 666 /var/www/html/log/config.php

6.3 重新访问


6.4 测试

[root@reyslog ~]# logger "this is a test log"

[root@reyslog ~]# logger "this is a newtest log


你可能感兴趣的:(M63.第十四周作业)