Skip to content

ShyZhen/fmock

Repository files navigation

StyleCI Build Status License License

About FMock

A forums build with laravel.

FMock墨客社区。

客户端项目地址 https://github.com/ShyZhen/fmock-uniapp

Environment

必要

  • PHP >= 7.2.5
  • Mysql
  • Redis

以下为非必要

  • Nodejs
  • ElasticSearch = 7.4.2
  • ElasticSearch-analysis-ik 7.4.2
  • RabbitMQ

Installation

1.下载代码安装依赖

  • git clone https://github.com/ShyZhen/fmock.git
  • 创建项目数据库
  • copy .env.example .env and edit .env

除了基本的APP配置、数据库配置、以及redis缓存配置(前四个代码块),仍需配置Smtp 邮箱服务、Sms短信服务、Github OAuth 第三方登录。 根据自己vhost配置 APP_URL CLIENT_URL SERVER_URL ADMIN_URL 如果想上传文件到七牛,需要开启.env中的QiniuService=true,并配置好七牛的各项参数。

  • composer 全量镜像不稳定,推荐更换composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • composer self-update && composer install

2. 执行初始化安装

  • php artisan fmock:install

3. 权限设置

  • chmod -R 766 storage/ && chmod -R 766 bootstrap/cache/ 根据自己实际用户组情况设置777或者766

4.异步、消息队列开启(目前仅有发送短信、邮件封装了redis队列,QueueStart=true时必须执行)

  • 使用redis做队列:php artisan queue:work redis --queue=FMockTestQueue,sendSmsQueue --daemon --quiet --delay=3 --sleep=3 --tries=3

ES Quick Use

Code Info

  • 新建es类并继承抽象类Base/ElasticSearch,例如PostElasticSearch
  • 必须实现抽象函数 createIndexgetIndexName,这样就可以完全使用基类中的任意方法(其中createIndex方法仅在es:init中使用)
  • 使用方法参考Web/TestController@esTest

ES Init

  • php artisan es:init, 该命令将创建文章默认的index,并设置文章默认的mappings

ES observer

  • 需要提前开启env中的ESToObserver
  • 创建Observers,例如app/Observers/PostObserver.php
  • app/Providers/ObserversServiceProvider.php中添加观察者模型,例如Post::observe(PostObserver::class);

RabbitMQ Quick Use

Code Info

  • 函数类库在\app\Library\RabbitMQ下,分别为生成类、消费类、消费回调业务函数

Consume Bash Start

  • 启动消费脚本前要确定队列、交换机等存在,可以事先调用一次send:
   $rabbitMQ = new Publish();
   $params = ['key1' => 'value1', 'key2' => 'value2', 'action' => 'sms'];
   print_r($rabbitMQ->send(env('RABBITMQ_QUEUE'), json_encode($params)));
  • 启动消费脚本命令:
   php artisan rabbitmq:start

Consume Callback

  • 启动消费脚本之后,所有的回调逻辑处理函数全部在app\Library\RabbitMQ\RabbitMQHandle.php文件中,你只需要更新此处即可

API Info

  • 支持邮箱、手机号sms(阿里短信服务)验证码发送,以及完善的正则匹配
  • 支持邮箱、手机号(中国)登录注册
  • 多重验证,包括IP限制,账号尝试失败限制,有效避免爆破
  • 完全前后端分离模式,token鉴权,多端分开部署
  • 共用一套API接口代码,便于维护
  • 代码分层架构,controller service repo model 便于扩展
  • 支持GitHub第三方登录(后续会支持微信登录)
  • 支持微信小程序登录
  • 支持切换上传图片到七牛云与本地存储,使用七牛融合CDN进行静态资源加速
  • 七牛图片样式:fmock 最大宽度1080缩放,供内容详情使用;fmockmin 固定宽高剪裁,供首页海报图使用;
  • 记录用户上传文件日志,用户后续控制
  • 支持社区的基本操作:普通文章模块、问答模块、点赞、评论、搜藏
  • Delta格式富文本编辑器
  • 支持粉丝系统,查看用户关注、粉丝列表等操作,支持redis以及关系型数据库两种存储方式,量小推荐使用数据库
  • 支持ElasticSearch,使用Observer自动插入ES数据
  • 支持短视频上传七牛并切片、添加水印等操作(记得更新相关文件上传配置,例如nginx的client_body_temp/client_body_buffer_size 10/client_max_body_size 1024m)

Other file

API Index

Security Vulnerabilities

If you discover a security vulnerability within FMock, please send an e-mail to huaixiu.zhen via [email protected]. All security vulnerabilities will be promptly addressed.

License

The FMock is open-sourced software licensed under the MIT license.

About

a forums use laravel 7

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published