IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 2021-08-26 -> 正文阅读

[PHP知识库]2021-08-26

wizard知识库系统搭建

1、项目位置

https://github.com/mylxsw/wizard

简要介绍:Wizard是一款开源文档管理系统,目前支持三种类型的文档管理:Markdown,Swager,Table。主要功能有文档版本管理、用户权限管理、项目分组管理、文档搜索、分享、评论等。

2、软件列表?

软件列表版本号
MySQL5.7.33
PHP7.2.3
Nginx1.19.6
Redhat操作系统

7.7

3、原理介绍

搭建wizard项目依赖LNMP架构,所以首先要把LNMP基础环境搭建好。

3.1 LNMP架构

LNMP代表的就是:Linux+Nginx+MySQL+PHP这种网站服务器架构。
? ? ?Linux:是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。
? ? ?Nginx:是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
? ? ?Mysql:是一个中小型关系型数据库管理系统。
? ? ?PHP:是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
?

?架构图

处理流程:

1、用户通过浏览器输入域名请求Nginx Web服务,如果请求是静态资源,则由Nginx解析返回给用户;

2、如果是动态请求(.php结尾),那么Nginx就会把它通过FastCGI接口(生产常用方法)发送给PHP引擎服务(FastCGI进程php-fpm)进行解析

3、如果这个动态请求要读取数据库数据,那么PHP就会继续向后请求MySQL数据库,以读取需要的数据,并最终通过Nginx服务把获取的数据返回给用户。

在lnmp中关键性的就两点:?

????????1.nginx接收客户端发来的请求后找到对应的执行脚本文件再用php-fpm来解释执行脚本文件并将结果返回给客户端

????????2.php通过php扩展pdo、mysql、或者mysqli来操作mysql数据库实现对数据的存储

CGI:

????????CGI的全称为“通用网关接口”(Common Gateway Interface),为web服务器与web应用程序通信的一种协议

????????传统CGI接口方式的主要缺点是性能较差,因为每次web服务器遇到动态程序时都需要重新启动解析器来执行解析,之后结果才会被返回给web服务器。这在处理高并发访问时几乎是不可用的,因此就诞生了FastCGI。另外,传统的CGI接口方式安全性也很差,现在已经很少被使用。?????

FastCGI:

????????FastCGI?(Fast Common Gateway Interface)全称是“快速通用网关接口”,是一个可伸缩的,高速地在web server和脚本语言间交互的接口。FastCGI的主要优点是把动态语言和web server分离开来。这种技术允许把web server和动态语言运行在不同的主机上,以大规模扩展和改进安全性而不损失生产效率。具有如下特点:

  • 可把动态语言解析和HTTP服务器分离开。
  • Nginx,Apache,Lighttpd,以及多数动态语言都支持FastCGI。
  • FastCGI接口方式采用C/S结构,分为客户端(HTTP服务器)和服务器端(动态语言解析服务器)
  • PHP动态语言服务器端可以启动多个FastCGI的守护进程(例如php-fpm(fcgi process mangement))
  • HTTP服务器通过(例如Nginx fastcgi_pass)FastCGI客户端和动态语言FastCGI服务器端通信(例如php-fpm)

?PHP-FPM

????????PHP-FPM使用PHP编写的PHP-FastCGI管理器,是用于调度、管理PHP解析器php-cgi的管理程序。它负责管理一个进程池,处理来自Web服务器的请求。

????????早期的PHP-FPM是作为PHP源码的补丁而使用的,在PHP调的5.3.2版本中直接整合到了PHP-FPM分支,目前主流的PHP5.5,PHP5.6,PHP5.7已经集成了该功能(被官方收录),在配置时使用--enable-fpm参数即可开启PHP-FPM。

简要概括:

①CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。
②FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。同 样, SCGI 协议与 FastCGI 类似。
③PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序。
④PHP-FPM:是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,额外还提供了相对智能一些任务管理。
⑤WEB 中,Web Server 一般指Apache、Nginx、IIS、Lighttpd、Tomcat等服务器。
⑥Web Application 一般指PHP、Java、Asp.net等应用程序。

参考:

1、关于CGI和FastCGI的理解 - 天生帅才 - 博客园 (cnblogs.com)

2、CGI、FastCGI和PHP-FPM区别和关系详解(包含图解)_ssiyla的博客-CSDN博客

4、搭建步骤

1、安装mysql数据库

2、安装php,重点是线程池的配置文件

[wizard]                          #进程池的名字
listen = var/run/wizard.sock      #指定监听的ip:port或者socket,一会在nginx的配置中会用到
user = nginx                      #指定php-fpm进程用户
group = nginx                     #指定php-fpm进程用户组
listen.owner = nginx              #用户设置对socket的权限 
listen.group = nginx
listen.backlog = -1
listen.mode = 0666
listen.allowed_clients = 127.0.0.1   #允许FastCGI客户端连接的IPV4地址
chdir = /www/wizard/public           #设置启动目录,启动时会自动chdir到该目录,必须时绝对路径
pm = dynamic                         #选择进程池管理器如何控制字进程的数量
pm.max_children = 50                 #同一时刻能够存活的最大子进程的数量
pm.start_servers = 2                 #在启动时启动的子进程的数量
pm.min_spare_servers = 1             #最小空闲子进程数量
pm.max_spare_servers = 3             #最大空闲子进程数量
pm.max_requests = 500

参考:https://www.cnblogs.com/linuxk/p/10382178.html

3、nginx的配置文件

   server {
        listen  80;
        server_name  zhishiku.cslc.com;
        #client_max_body_size 100m;
        #charset koi8-r;
        root   /www/wizard/public;
        index  index.php;
        #access_log  logs/host.access.log  main;

    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ .*\.(gif|jpg|png|bmp|swf|js|css)$ {
        try_files $uri  =302;
    }

    location ~ .*\.php$ {
        # php-fpm 监听地址,这里用了socket方式
        fastcgi_pass  unix:/usr/local/php/var/run/wizard.sock;
        fastcgi_param SCRIPT_FILENAME /www/wizard/public$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        }                      

4、下载wizard项目,放置与路径/www/下,资源位置为/www/wizard/public。主要看下配置文件/www/wizard/.env,这个是知识库的配置

# 应用名称
APP_NAME="测试中心知识库"
# 环境,正式请使用 production
APP_ENV=production
APP_KEY=base64:9ZqHD9ABVYkfN1il53mBYAqN/ZqEeSvUz3zPt2z3KFM=
# 调试和日志级别
APP_DEBUG=false
APP_LOG_LEVEL=debug
# 应用服务地址
APP_URL=http://104.21.0.205

# 数据库连接配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=knowledgeroot
DB_USERNAME=cslc
DB_PASSWORD=cslc

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

# Redis 连接配置
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

# 邮件服务器配置
MAIL_DRIVER=smtp
MAIL_HOST=172.16.0.22
MAIL_PORT=25
MAIL_USERNAME='uatsvn@cslc.com.cn'
MAIL_PASSWORD='pass@word123'
MAIL_ENCRYPTION=false
MAIL_FROM_NAME=测试中心

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

APP_TIMEZONE=Asia/Shanghai

# 评论功能
# 是否启用评论功能
WIZARD_REPLY_SUPPORT=true
# 默认主题,支持 default/dark
WIZARD_DEFAULT_THEME=default

# 表格文档配置
WIZARD_SPREEDSHEET_MAX_ROWS=100
WIZARD_SPREEDSHEET_MAX_COLS=26

# 用户帐号是否需要邮件激活
WIZARD_NEED_ACTIVATE=false
# 加密密钥
WIZARD_JWT_SECRET=5Dck4izVEXsP52AOcVxaFUsTzA8uwUiP
# 当前版本,目前的作用是刷新静态资源缓存
WIZARD_RESOURCE_VERSION=202103221014
# 是否启用 LDAP 登录
WIZARD_USE_LDAP=false

# 是否开启 LDAP 日志
LDAP_LOGGING=true
# LDAP 帐号前缀/后缀
LDAP_ACCOUNT_PREFIX=
LDAP_ACCOUNT_SUFFIX=
# LDAP 服务地址
LDAP_HOSTS=
LDAP_PORT=
# LDAP Base DN
LDAP_BASE_DN=
# LDAP 授权帐号
LDAP_USERNAME=
LDAP_PASSWORD=
# LDAP 连接安全配置
LDAP_USE_SSL=false
LDAP_USE_TLS=false
# 同步 LDAP 密码到本地
LDAP_PASSWORD_SYNC=true
# 如果 LDAP 登录失败,是否使用本地帐号密码登录
LDAP_LOGIN_FALLBACK=true
# LDAP 信息中,用哪个字段作为用户的名称,比如 displayname, cn 等
LDAP_SYNC_NAME_ATTR=cn
# LDAP 限制只允许属于该成员的用户登录
WIZARD_LDAP_ONLY_MEMBER_OF=

# 是否必须登录才能查看文档
WIZARD_MUST_LOGIN=yes
# 管理员公共页面是否展示所有项目
WIZARD_ADMIN_SEE_ALL=true

# 是否启用 CDN 加速
CDN_ENABLED=false
# CDN 服务器域名
CDN_URL=http://cdn.example.com

# 版本检查
WIZARD_VERSION_CHECK=false

# 是否自动添加 TOC/TOCM 标签到 Markdown 文档,可选值为空、TOC、TOCM,为空时不启用该功能
# 如果文档中包含手写的 TOC 和 TOCM,也不会自动添加
WIZARD_MARKDOWN_TOC_DEFAULT=TOCM
# 是否启用 Markdown 严格模式,默认为 true,如果你的文档存在兼容性问题,则可以修改此项
WIZARD_MARKDOWN_STRICT=true

# 是否启用邀请注册机制
# 启用后,用户注册时必须提供邀请码
WIZARD_REGISTER_INVITATION=false
# 静态邀请码,所有用户注册时必须提供此邀请码,邀请码对所有用户固定不变
WIZARD_REGISTER_INVITATION_STATIC=eb092be4a8970338c06a37900a7116f1

修改配置后使配置生效:php artisan config:cache

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 08:48:43  更:2021-08-28 08:50:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:16:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码