写了个小博客

教程学了好几遍,一直想自己做个东西.从画思维导图开始到部署到写文档,一遍走下来,还是收获良多.

网站部署在阿里云上,使用到了 站长 的 summerblue/laravel-ubuntu-init 和 这篇文章介绍的 博客:又一篇 Deployer 的使用攻略 并使用了 https.

贴上文档

项目概述

LaraBlog 是一个简洁的博客应用,使用 Laravel5.8 编写而成。

功能如下

前台

  • 首页文章展示 —— 使用 with 方法进行关联模型预加载,避免N+1问题;
  • 分类详情页 —— 分类数据从缓存中读取,使用视图合成器 viewComposer 传递数据;
  • 标签详情页 —— 标签模型与文章模型多对多关联;
  • 评论发表删除 —— 使用 ReplyRequest 进行表单验证,ReplyObserver 进行回复数量字段更新.删除时,使用 email 字段作为授权认证方法,通过 axios.delete 方法调用删除接口
  • 搜索页 —— 基于 Laravel Scout 全文搜索的 Algolia 驱动;
  • 热门文章 —— 后台使用定时任务加权算出得分存入缓存中;
  • 配置化 —— 网站可变处使用 congfig 函数配置化

后台

  • 后台使用 laravel-admin 1.7.3 版本
  • 文章,评论,分类,标签 crud
  • 文章发布时,对应的 Obersver 推送 TranslateSlug 队列任务
  • 队列任务管理 —— 使用 admin 中间件, laravel-admin 的RBAC权限控制接管 Horizon 访问权限;
  • 自定义 Artisan 命令行 —— 自定义热门文章计算命令;
  • 自定义 Trait —— 热门文章的业务逻辑实现;
  • laravel-visits —— 记录文章的浏览数目;
  • XSS,CSRF 安全防御;

运行环境要求

  • Nginx 1.8+
  • PHP 7.0+
  • Mysql 5.7+
  • Redis 3.0+

开发环境部署/安装

本项目代码使用 PHP 框架 Laravel 5.8 开发,本地开发环境使用 Laravel Homestead

下文将在假定读者已经安装好了 Homestead 的情况下进行说明。如果您还未安装 Homestead,可以参照 Homestead 安装与设置 进行安装配置。

基础安装

1. 克隆源代码

克隆 larabbs 源代码到本地:

> git clone https://github.com/ishushx/LaraBlog.git

2. 配置本地的 Homestead 环境

1). 运行以下命令编辑 Homestead.yaml 文件:

homestead edit

2). 加入对应修改,如下所示:

folders:
    - map: ~/my-path/larablog/ # 你本地的项目目录地址
      to: /home/vagrant/larablog

sites:
    - map: larablog.test
      to: /home/vagrant/larablog/public

databases:
    - larablog

3). 应用修改

修改完成后保存,然后执行以下命令应用配置信息修改:

homestead provision

随后请运行 homestead reload 进行重启。

3. 安装扩展包依赖

composer install

4. 生成配置文件

cp .env.example .env

你可以根据情况修改 .env 文件里的内容,如数据库连接、缓存、邮件设置等:

APP_URL=http://larablog.test
...
DB_HOST=localhost
DB_DATABASE=larablog
DB_USERNAME=homestead
DB_PASSWORD=secret

DOMAIN=.larablog.test

5. 生成数据表及生成测试数据

在 Homestead 的网站根目录下运行以下命令

$ php artisan migrate
$ mysql larablog < database/admin.sql

初始的用户角色权限已使用数据生成。

7. 生成秘钥

php artisan key:generate

8. 配置 hosts 文件

echo "192.168.10.10   larablog.test" | sudo tee -a /etc/hosts

前端框架安装

1). 安装 node.js

直接去官网 https://nodejs.org/en/ 下载安装最新版本。

2). 安装 Yarn

请安装最新版本的 Yarn —— http://yarnpkg.cn/zh-Hans/docs/install

3). 安装 Laravel Mix

yarn install

4). 编译前端内容

// 运行所有 Mix 任务...
yarn run dev

// 运行所有 Mix 任务并缩小输出..
yarn run production

5). 监控修改并自动编译

yarn run watch

// 在某些环境中,当文件更改时,Webpack 不会更新。如果系统出现这种情况,请考虑使用 watch-poll 命令:

yarn run watch-poll

链接入口

管理员账号密码如下:

username: admin
password: admin

至此, 安装完成 ^_^。

扩展包使用情况

扩展包 一句话描述 本项目应用场景
guzzlehttp/guzzle HTTP 请求套件 请求百度翻译 API
predis/predis Redis 官方首推的 PHP 客户端开发包 缓存驱动 Redis 基础扩展包
hieu-le/active 选中状态 顶部导航栏选中状态
laravel/horizon 队列监控 队列监控命令与页面控制台 admin/horizon
awssat/laravel-visits 页面统计 基于 Redis 有序集合记录文章浏览次数
laravel/scount 全文搜索 laravel 官方推荐的搜索包
algolia/algoliasearch-client-php algolia 搜索 搜索引擎
encore/laravel-admin 管理后台 laravel-admin管理后台

自定义 Artisan 命令

命令行名字 说明 Cron 代码调用
blog:calculate-hot-posts 生成热门文章 一小时运行一次

队列清单

名称 说明 调用时机
TranslateSlug.php 将文章标题翻译为 Slug PostObserver 事件 saved()
本帖已被设为精华帖!
本帖由系统于 4年前 自动加精
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 13

:+1:不错。

4年前 评论
Summer

教程学了好几遍,一直想自己做个东西。从画思维导图开始到部署到写文档,一遍走下来,还是收获良多.

书读百遍,其义自见。又能将所学应用在自己的项目上,不错不错

4年前 评论

加个友链吗 :smirk:

4年前 评论
Epona

我用hexo搞的。。懒得自己写了😂

4年前 评论
Jennie

先 :+1: 一个,然后
后台详情的富文本得处理下:
file

编辑的时候看到图片超了:
file

4年前 评论
Flex

我也撸了一款 https://github.com/inbjo/CoreBlog :joy:

4年前 评论

实践才能更好掌握看过的知识 :+1:

4年前 评论

非常好.

4年前 评论
sreio

全文搜索包名和地址都错误,正确地址:https://github.com/laravel/scout

4年前 评论

learn by doing ~ 加油 ~

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!