Skip to content
一刻社区后端 API 源码
Branch: master
Clone or download
Latest commit 0e82832 Apr 18, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Apply fixes from StyleCI (#40) Apr 4, 2019
bootstrap init project. May 24, 2018
config
database Apply fixes from StyleCI (#30) Mar 6, 2019
public
resources 敏感词过滤 (#20) Jan 10, 2019
routes
storage
tests Fix code style. Nov 10, 2018
.env.example Update .env.example Nov 15, 2018
.gitattributes init project. May 24, 2018
.gitignore ignore deployer config file. Nov 10, 2018
.php_cs
.travis.yml
artisan init project. May 24, 2018
composer.json Bump overtrue/laravel-uploader from 0.0.8 to 0.0.10 Apr 15, 2019
composer.lock Bump overtrue/laravel-filesystem-qiniu from 1.0.1 to 1.0.2 Apr 17, 2019
phpunit.xml Add tests. May 25, 2018
readme.md
server.php Apply fixes from StyleCI (#22) Jan 10, 2019
yike-worker.conf 添加 worker Jul 25, 2018

readme.md

Yike.io

Build Status

此项目为 https://yike.io 的后端 API,基于 Laravel 5 开发。

🏵前端源码:https://github.com/overtrue/yike.io

开源中国 Gitee 仓库:Fork me on Gitee

🚨此次开源只是应大家的要求,所以请不要联系我咨询任何使用问题,遇到问题请自行解决,熟读 Laravel 文档。 如果你有兴趣参与改进,请直接 PR 即可。

🎬快速上手视频:053. 优秀的开源社区——yike.io

运行环境要求

  • Nginx 1.8+
  • PHP 7.1+
  • MySQL 5.7+
  • Redis 3.0+

开发环境部署/安装

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

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

基础安装

克隆源代码

克隆源代码到本地:

> git clone git@github.com:overtrue/api.yike.io.git

配置本地的 Homestead 环境

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

homestead edit

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

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

sites:
    - map: api.yike.io.test
      to: /home/vagrant/api.yike.io/public

databases:
    - api_yike_io

3). 应用修改

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

homestead provision

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

安装扩展包依赖

composer install

生成配置文件

cp .env.example .env

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

APP_URL=http://api.yike.io.test
...
DB_HOST=localhost
DB_DATABASE=api_yike_io
DB_USERNAME=homestead
DB_PASSWORD=secret

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

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

$ php artisan migrate --seed

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

生成秘钥

$ php artisan key:generate

Passport 初始化

$ php artisan passport:install

将生成的 password grant 对应的 id 与 secret 记录下来,用于配置前端应用的 env 变量。

配置 hosts 文件

echo "192.168.10.10   api.yike.io.test" | sudo tee -a /etc/hosts

其它服务配置

腾讯 007 防水墙

腾讯防水墙 注册账号,创建验证码服务(你可能需要创建两个验证,一个用于发布文章,一个用于注册账号),获取对应的配置填写到 .env 中:

# 用于发布文章的验证码
CAPTCHA_ID_PUBLISH=
CAPTCHA_SECRET_PUBLISH=

# 用于用户注册用的验证码
CAPTCHA_ID_REGISTER=
CAPTCHA_SECRET_REGISTER=
帖子搜索服务

帖子搜索基于 ElasticSearch 实现,所以你需要在任何机器上部署一个 ES 服务,然后将地址与索引名称配置到:

ELASTICSEARCH_INDEX=yike
ELASTICSEARCH_HOST=http://127.0.0.1:9200
敏感词配置

请自行寻找敏感词库,将敏感词放置于 storage/SensitiveWords.txt 中,每行一个:

敏感词1
敏感词2
...

链接入口

管理员账号请自己添加 UserSeeder 创建。

至此, 安装完成 ^_^。

扩展包使用情况

扩展包 一句话描述 本项目应用场景
overtrue/easy-sms 多网关短信发送组件 发送验证码
overtrue/laravel-emoji emoji 转换组件 帖子与评论 emoji 解析
overtrue/laravel-filesystem-qiniu 七牛 CDN SDK 帖子内容图片存储
overtrue/laravel-follow Laravel 用户关系组件 用户关注与帖子订阅
overtrue/laravel-lang Laravel 多语言 报错信息本地化
overtrue/laravel-mail-aliyun 阿里云邮件 SDK 发送通知邮件
overtrue/laravel-socialite 社交登录组件 用户使用第三方登录
overtrue/laravel-uploader Laravel 上传功能封装 帖子内容图片上传
overtrue/laravel-query-logger Laravel SQL 监听工具 开发环境查看 SQL 记录
Intervention/image 图片处理功能库 用于图片裁切
guzzlehttp/guzzle HTTP 请求套件 我也记不得,反正就是要用
predis/predis Redis 官方首推的 PHP 客户端开发包 缓存驱动 Redis 基础扩展包
mewebstudio/Purifier 用户提交的 Html 白名单过滤 帖子内容的 Html 安全过滤,防止 XSS 攻击
laravel/passport 用户授权 基于 Personal Access Token 的前后端用户认证
laravel/horizon 队列监控面板 监听队列使用情况
laravolt/avatar 生成用户头像 用户头像
sentry/sentry-laravel Sentry 报错监控 监控系统错误
spatie/laravel-activitylog 用户行为记录 个人中心的用户动态
spatie/laravel-url-signer URL 加密 用户激活链接
tamayo/laravel-scout-elastic Laravel Scout ES 驱动 帖子搜索
tucker-eric/eloquentfilter 模型字段过滤 接口字段过滤
vinkla/hashids HashID 实现 暂时好像没用到
beyondcode/laravel-self-diagnosis Laravel 基础环境检查工具 检查配置是否正确

自定义 Artisan 命令

命令行名字 说明 Cron 代码调用
es:init 初始化 ES 模板

PHP 扩展包开发

想知道如何从零开始构建 PHP 扩展包?

请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— 《PHP 扩展包实战教程 - 从入门到发布》

License

MIT

You can’t perform that action at this time.