日志服务管理与基于FACTCGI的LAMP架构
Posted 一夜入秋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志服务管理与基于FACTCGI的LAMP架构相关的知识,希望对你有一定的参考价值。
1、简述CGI与FASTCGI区别
1.1、CGI
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
结论:
通过查看CGI工作原理,CGI程序性能较差,安全性较低,从而为了解决这些问题就产生了FastCGI。不过在实际生产中很少使用了。
1.2、FASTCGI
fastcgi的方式是,web服务器收到一个请求时,不会重新fork一个进程(因为这个进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出
请求流程:
Client -- (http协议) --> httpd -- (fastcgi协议) --> fastcgi服务器 -- (mysql协议) --> mysql
结论:
通过查看FastCGI工作原理,在内存中可以同时运行多进程,不过比CGI方式消耗更多的服务器内存,每个php-CGI进程消耗几十兆内存,甚至几兆内存也有可能,在进行优化配置php-cgi进程池的数量时要防止过量,即使如此但它比CGI性能要好的多,它还能提供nginx搭配PHP实施项目的可能。
1.3、CGI和FASTCGI比较
CGI: 兼职, 一次性的过河拆桥式的服务 FASTCGI: 专职,全周期的持续式的服务 |
名称 | 在web服务器方面 | 在对数据进行处理的进程方面 |
---|---|---|---|
CGI | fork一个新的进程进行处理 | 读取参数,处理数据,然后就结束生命期 | |
FASTCGI | 用tcp方式跟远程主机上的进程或本地进程建立连接 | 要开启tcp端口,进入循环,等待数据的到来,处理数据 |
2、编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构
2.1、目标
实现CentOS 7 编译安装基于 fastcgi 模式的多虚拟主机的wordpress和discuz的LAMP架构
2.2、架构图和环境准备
# 两台服务器
1 Apache(httpd)+PHP (FastCGI模式):
主机名:httpd-php
系统版本:CentOS 7.9
IP: 10.0.0.7/24
数据库:MariaDB-10.3.28
2 Mariadb 服务器:
主机名:mariadb
系统版本:CentOS 8.5
IP: 10.0.0.18/24
数据库:MariaDB-10.3.28
# 软件包及版本: https://mariadb.com/downloads/
mariadb-10.4.24-linux-x86_64.tar.gz #通用二进制格式
httpd-2.4.53.tar.gz
apr-1.7.0.tar.bz2
apr-util-1.6.1.tar.bz2
php-7.4.28.tar.xz
wordpress-5.9.2-zh_CN.tar.gz
Discuz_X3.4_SC_UTF8_20220131.zip
#软件包下载的路径
https://mariadb.com/downloads/或https://mariadb.org/ #这两个链接都可以下载mariadb的软件包
https://www.php.net/downloads
https://httpd.apache.org/download.cgi
https://cn.wordpress.org/download/
https://www.dismall.com/thread-73-1-1.html
2.3、数据库服务器
2.3.1、数据库主机的环境和二进制包准备
[root@Centos8 ~]#hostname -I
10.0.0.18
[root@Centos8 ~]#hostnamectl set-hostname Mariadb
[root@Centos8 ~]#exit
[root@Mariadb ~]#cd /data/
#这里我用的是清华大学镜像源上下载的mariadb二进制包,这个你也可以在https://mariadb.org/上去下载包
[root@Mariadb data]#wget https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.4.24/bintar-linux-x86_64/mariadb-10.4.24-linux-x86_64.tar.gz
2.3.2、mariadb的安装以及配置
#检验主机是否有mysql用户
[root@Mariadb data]#getent passwd mysql
#创建mysql用户并创建mysql组,设置用户不可登录
[root@Mariadb data]#useradd -r -s /sbin/nologin mysql
#解压刚刚下载好的mariadb二进制包
[root@Mariadb data]#tar xvf mariadb-10.4.24-linux-x86_64.tar.gz -C /usr/local &> /dev/null
[root@Mariadb data]#ll /usr/local/
drwxrwxr-x 12 zhanggui zhanggui 257 Feb 12 07:20 mariadb-10.4.24-linux-x86_64
#切换到目录并创建软链接
[root@Mariadb data]#cd /usr/local/
[root@Mariadb local]#ln -sv mariadb-10.4.24-linux-x86_64 mysql
mysql -> mariadb-10.4.24-linux-x86_64
[root@Mariadb local]#ll
drwxrwxr-x 12 zhanggui zhanggui 257 Feb 12 07:20 mariadb-10.4.24-linux-x86_64
lrwxrwxrwx 1 root root 28 Apr 5 22:23 mysql -> mariadb-10.4.24-linux-x86_64
#查看mysql目录下的文件权属,并修改所属权限
[root@Mariadb local]#cd mysql
[root@Mariadb mysql]#ll
total 168
drwxrwxr-x 2 zhanggui zhanggui 4096 Jan 19 02:23 bin
-rw-r--r-- 1 zhanggui zhanggui 17987 Feb 11 03:42 COPYING
-rw-r--r-- 1 zhanggui zhanggui 2093 Feb 11 03:42 CREDITS
drwxrwxr-x 2 zhanggui zhanggui 81 Feb 11 08:09 docs
drwxrwxr-x 3 zhanggui zhanggui 19 Feb 11 08:08 include
-rw-r--r-- 1 zhanggui zhanggui 8779 Feb 11 03:42 INSTALL-BINARY
drwxrwxr-x 5 zhanggui zhanggui 4096 Jan 19 02:24 lib
drwxrwxr-x 4 zhanggui zhanggui 30 Feb 11 08:09 man
drwxrwxr-x 9 zhanggui zhanggui 4096 Feb 11 08:09 mysql-test
-rw-r--r-- 1 zhanggui zhanggui 2874 Feb 11 03:42 README.md
-rw-r--r-- 1 zhanggui zhanggui 19520 Feb 11 03:42 README-wsrep
drwxrwxr-x 2 zhanggui zhanggui 56 Feb 11 08:09 scripts
drwxrwxr-x 31 zhanggui zhanggui 4096 Feb 11 08:09 share
drwxrwxr-x 4 zhanggui zhanggui 4096 Feb 11 08:09 sql-bench
drwxrwxr-x 3 zhanggui zhanggui 165 Feb 11 08:09 support-files
-rw-r--r-- 1 zhanggui zhanggui 86263 Feb 11 03:42 THIRDPARTY
#这里我写的是相对路径,相当于/usr/local/mysql/
[root@Mariadb mysql]#chown -R root.root ./*
#创建数据库的数据目录,并给目录授权
[root@Mariadb mysql]#mkdir /data/mysql
[root@Mariadb mysql]#chown -R mysql.mysql /data/mysql
#创建数据库配置文件目录,并编写配置文件
[root@Mariadb mysql]#mkdir /etc/mysql
[root@Mariadb mysql]#cd
[root@Mariadb ~]#vim /etc/mysql/my.cnf
[mysqld]
server-id=18
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock
skip_name_resolve = on
log-error=/data/mysql/error.log
pid-file=/data/mysql/mysql.pid
character-set-server=utf8mb4
[client]
port=3306
socket=/data/mysql/mysql.sock
default-character-set=utf8mb4
#进入数据库程序目录,安装依赖包,初始化安装数据库
[root@Mariadb ~]#cd /usr/local/mysql/
[root@Mariadb mysql]#yum -y install libaio
[root@Mariadb mysql]#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MariaDB/MySQL system tables in /data/mysql ...
OK
...........
Consider joining MariaDBs strong and vibrant community:
https://mariadb.org/get-involved/
#设置PATH变量并使之立刻生效
[root@Mariadb mysql]#echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh
[root@Mariadb mysql]#. /etc/profile.d/mysql.sh
#准备数据库服务文件并设置开机自启动
[root@Mariadb mysql]#cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@Mariadb mysql]#chkconfig --add mysqld
[root@Mariadb ~]#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
#这里3,4,5表示on的话就成功开机自启动了
2.3.3、验证数据库并创建好需要的数据库和用户账号
[root@Mariadb ~]#mysql
Welcome to the MariaDB monitor. Commands end with ; or \\g.
Your MariaDB connection id is 14
Server version: 10.4.24-MariaDB-log MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type help; or \\h for help. Type \\c to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> create database discuz;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> grant all on wordpress.* to wordpress@10.0.0.% identified by "Mysql@word";
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> grant all on discuz.* to discuz@10.0.0.% identified by "Mysql@dis";
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| discuz |
| information_schema |
| mysql |
| performance_schema |
| test |
| wordpress |
+--------------------+
6 rows in set (0.000 sec)
MariaDB [(none)]> exit #或者使用quit都可以退出MySQL
Bye
Web服务器
3、通过loganalyzer展示数据库中的日志
以上是关于日志服务管理与基于FACTCGI的LAMP架构的主要内容,如果未能解决你的问题,请参考以下文章