# LaraBBS **Repository Path**: shenlin/bbs ## Basic Information - **Project Name**: LaraBBS - **Description**: LaraBBS 是一个简洁的论坛应用,使用 Laravel5.5 编写而成。在论坛系统的构建中,我们将学到多角色用户权限系统、管理员后台、注册验证码、图片上传、图片裁剪,XSS 防御、自定义命令行、自定义中间件、任务调度、队列系统的使用、应用缓存、Redis、模型事件监控、表单验证、消息通知、邮件通知、模型修改器等知识。 通过本课程的学习,你将能获取到一个中等复杂度的 Web 项目开发经验。 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 28 - **Created**: 2018-04-21 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目概述 > LaraBBS 是一个简洁的论坛应用,使用 Laravel5.5 编写而成。在论坛系统的构建中,我们将学到多角色用户权限系统、管理员后台、注册验证码、图片上传、图片裁剪,XSS 防御、自定义命令行、自定义中间件、任务调度、队列系统的使用、应用缓存、Redis、模型事件监控、表单验证、消息通知、邮件通知、模型修改器等知识。 通过本课程的学习,你将能获取到一个中等复杂度的 Web 项目开发经验。 ![homepage.png](/homepage.png) ![adminpage.png](/adminpage.png) ## 功能如下 - 用户认证 —— 注册、登录、退出; - 个人中心 —— 用户个人中心,编辑资料; - 用户授权 —— 作者才能删除自己的内容; - 上传图片 —— 修改头像和编辑话题时候上传图片; - 表单验证 —— 使用表单验证类; - 文章发布时自动 Slug 翻译,支持使用队列方式以提高响应; - 站点『活跃用户』计算,一小时计算一次; - 多角色权限管理 —— 允许站长,管理员权限的存在; - 后台管理 —— 后台数据模型管理; - 邮件通知 —— 发送新回复邮件通知,队列发送邮件; - 站内通知 —— 话题有新回复; - 自定义 Artisan 命令行 —— 自定义活跃用户计算命令; - 自定义 Trait —— 活跃用户的业务逻辑实现; - 自定义中间件 —— 记录用户的最后登录时间; - XSS 安全防御; ## 运行环境要求 - Nginx 1.8+ - PHP 7.1+ - Mysql 5.7+ - Redis 3.0+ - Memcached 1.4+ ## 开发环境部署/安装 本项目代码使用 PHP 框架 [Laravel 5.5](https://d.laravel-china.org/docs/5.5/) 开发,本地开发环境使用 [Laravel Homestead](https://d.laravel-china.org/docs/5.5/homestead)。 下文将在假定读者已经安装好了 Homestead 的情况下进行说明。如果您还未安装 Homestead,可以参照 [Homestead 安装与设置](https://laravel-china.org/docs/5.5/homestead#installation-and-setup) 进行安装配置。 ### 基础安装 #### 1. 克隆源代码 克隆 `larabbs` 源代码到本地: > git clone https://gitee.com/jollyson/bbs.git #### 2. 配置本地的 Homestead 环境 1). 运行以下命令编辑 Homestead.yaml 文件: ```shell homestead edit ``` 2). 加入对应修改,如下所示: ``` folders: - map: ~/my-path/larabbs/ # 你本地的项目目录地址 to: /home/vagrant/larabbs sites: - map: larabbs.test to: /home/vagrant/larabbs/public databases: - larabbs ``` 3). 应用修改 修改完成后保存,然后执行以下命令应用配置信息修改: ```shell homestead provision ``` 随后请运行 `homestead reload` 进行重启。 #### 3. 安装扩展包依赖 composer install #### 4. 生成配置文件 ``` cp .env.example .env ``` 你可以根据情况修改 `.env` 文件里的内容,如数据库连接、缓存、邮件设置等。 #### 5. 生成秘钥 ```shell php artisan key:generate ``` #### 6. 生成数据表及生成测试数据 在 Homestead 的网站根目录下运行以下命令 ```shell $ php artisan migrate --seed ``` 初始的用户角色权限已使用数据迁移生成。 #### 7. 配置 hosts 文件 echo "192.168.10.10 larabbs.test" | sudo tee -a /etc/hosts ### 前端框架安装 1). 安装 node.js 直接去官网 [https://nodejs.org/en/](https://nodejs.org/en/) 下载安装最新版本。 2). 安装 Yarn 请按照最新版本的 Yarn —— http://yarnpkg.cn/zh-Hans/docs/install 3). 安装 Laravel Mix ```shell yarn install ``` 4). 编译前端内容 ```shell // 运行所有 Mix 任务... npm run dev // 运行所有 Mix 任务并缩小输出.. npm run production ``` 5). 监控修改并自动编译 ```shell npm run watch // 在某些环境中,当文件更改时,Webpack 不会更新。如果系统出现这种情况,请考虑使用 watch-poll 命令: npm run watch-poll ``` ### 链接入口 * 首页地址:http://larabbs.test/ * 管理后台:http://larabbs.test/admin 管理员账号密码如下: ``` username: xxxsxj@foxmail.com password: 123456 ``` 至此, 安装完成 ^_^。 ## 扩展包使用情况 | 扩展包 | 一句话描述 | 本项目应用场景 | | --- | --- | --- | | [Intervention/image](https://github.com/Intervention/image) | 图片处理功能库 | 用于图片裁切 | | [guzzlehttp/guzzle](https://github.com/guzzle/guzzle) | HTTP 请求套件 | 请求百度翻译 API | | [predis/predis](https://github.com/nrk/predis.git) | Redis 官方首推的 PHP 客户端开发包 | 缓存驱动 Redis 基础扩展包 | | [barryvdh/laravel-debugbar](https://github.com/barryvdh/laravel-debugbar) | 页面调试工具栏 (对 phpdebugbar 的封装) | 开发环境中的 DEBUG | | [spatie/laravel-permission](https://github.com/spatie/laravel-permission) | 角色权限管理 | 角色和权限控制 | | [mewebstudio/Purifier](https://github.com/mewebstudio/Purifier) | 用户提交的 Html 白名单过滤 | 帖子内容的 Html 安全过滤,防止 XSS 攻击 | | [hieu-le/active](https://github.com/letrunghieu/active) | 选中状态 | 顶部导航栏选中状态 | | [summerblue/administrator](https://github.com/summerblue/administrator) | 管理后台 | 模型管理后台、配置信息管理后台 | | [viacreative/sudo-su](https://github.com/viacreative/sudo-su) | 用户切换 | 开发环境中快速切换登录账号 | | [laravel/horizon](https://github.com/laravel/horizon) | 队列监控 | 队列监控命令与页面控制台 /horizon | ## 自定义 Artisan 命令 | 命令行名字 | 说明 | Cron | 代码调用 | | --- | --- | --- | --- | | `larabbs:calculate-active-user` | 生成活跃用户 | 一小时运行一次 | 无 | | `larabbs:sync-user-actived-at` | 从 Redis 中同步最后登录时间到数据库中 | 每天早上 0 点准时 | 无 | ## 队列清单 | 名称 | 说明 | 调用时机 | | --- | --- | --- | | TranslateSlug.php | 将话题标题翻译为 Slug | TopicObserver 事件 saved() | | TopicReplied.php | 通知作者话题有新回复 | 话题被评论以后 | ## 项目进度 已经完成相关基础教程,如果还有BUG请与我联系,大家互相学习。 ## 鸣谢 感谢 `laravel-china` 开源社区提供的教程,这是我觉得非常不错的一个Laravel开源社区,有兴趣的可以去了解一下。 以上Readme.md文档虽也是我的本意,但是我可能没有原作Summer写的好,或者遗漏某些东西,所以大多内容直接引用了,如有任何问题,请与我联系。