053. 优秀的开源社区——yike.io(一刻社区 )
优秀的开源社区——yike.io(一刻社区 )
最近 超哥 开源了 一刻社区 的代码,所以又多了一个可以参考和学习的项目,超哥有很多优秀的开源作品,开发了各种 Laravel 扩展包,相信大家都应该已经很熟悉了。
一刻社区是一个前后端分离的论坛项目,分为了前端以及后端 API:
前端使用的是 Vue 开发,后端使用了 Laravel 5.6,使用了腾讯防水墙服务,使用 Elasticsearch 进行全文搜索等等。
这节课我们就一起来在本地搭建一下一刻社区,方便接下来的学习。
安装
后端
$ cd ~/Code
$ git clone git@github.com:overtrue/api.yike.io.git
~/Homestead/Homestead.yaml
sites:
.
.
.
- map: api.yike.test
to: /home/vagrant/Code/api.yike.io/public
databases:
.
.
.
- yike
重启 homestead:
$ vagrant reload --provision
修改一下 hosts:
/etc/hosts
192.168.10.10 api.yike.test
进入 homestead项目目录中,执行
$ composer install
$ cp .env.example .env
修改一下数据库的名字,将 DB_DATABASE
改成刚才配置的名称 yike
。
$ php artisan migrate --seed
$ php artisan key:generate
$ php artisan passport:install
$ php artisan storage:link
最后记得执行 storage:link
,不然某些图片显示不了,例如用户头像。
前端
前端的代码没有配置到Homestead
中,我是配置到本机环境中,在Code
目录中执行以下命令。
$ git clone git@github.com:overtrue/yike.io.git
$ cd yike.io
$ yarn
$ cp .env.example .env.local
修改一下 env 配置:
.env.local
VUE_APP_API_URL=http://api.yike.io
VUE_APP_AUTH_CLIENT_ID=2
VUE_APP_AUTH_CLIENT_SECRET=ljfdHDw********
在命令行中启动:
> yarn serve
已经能看到一刻的页面了。
腾讯 007 防水墙
项目使用到了腾讯提供的防水墙服务,防止用户恶意注册和发帖。打开 007.qq.com ,使用 qq 登录。
填写如下信息,创建一个应用。
点击快速接入,里面的 App ID 和 App Secret Key 需要等会需要设置
我们一共需要两个应用,一个用于登录注册,一个用于发帖,所以点击新建验证,再创建一个。
在 env
中设置对应的 App ID 和 App Secret Key。
.env
.
.
CAPTCHA_ID_PUBLISH=208*****
CAPTCHA_SECRET_PUBLISH=0wZ_E8Rls******
CAPTCHA_ID_REGISTER=2073*****
CAPTCHA_SECRET_REGISTER=0LRJTsE******
.
.
.
回到前端的项目中,前端也需要设置一下 App ID 。
src/modules/auth/register.vue
src/modules/threads/form.vue
.
.
.
let captcha = new TencentCaptcha('xxxxxx', (res) => {
.
.
.
在上面两个文件的地方,将 App ID 替换进去,register.vue
对应注册,form.vue
对应发帖。
这两个 App ID 可以放在配置里面,有兴趣的同学可以提交个 PR。
Elasticsearch
社区的搜索功能利用了 Elasticsearch,有这么几种方式安装 Elasticsearch:
- 使用社区定制的 Vagrant Box,序言《Laravel 开发环境部署》 ,已经安装好了 6.4 版本的 Elasticsearch,并安装了 中文分词插件,
- Homestead 就是个 Ubuntu 虚拟机,你可以手动安装,www.elastic.co/guide/en/elasticsea...
- Homestead 已经提供了简便的 Elasticsearch 安装方式,如果你的网络没有问题,也可以考虑这种方式 Homestead《Laravel 5.7 中文文档》
我这里已经安装好了 Elasticsearch 这里就不演示具体的安装过程了,还是推荐大家使用社区的 Vagrant Box。
如果你的电脑性能足够,可以将 Homestead 的 memory 和 cpus 增大。
$ php artisan es:init
执行以下 es:init 初始化以下 ES 模板。
测试
这样大部分的配置工作就完成了,接着就可以正常的注册和发帖了,注册是需要验证邮件的,所以还需要来修改一下配置。
.
.
.
APP_SITE_URL=http://localhost:8082/
.
.
.
MAIL_DRIVER=log
.
.
.
APP_SITE_URL
前端的地址,验证成功后会跳转回这个地址,MAIL_DRIVER
配置一下邮件的 driver,方便进行邮件测试。
总结
项目有很多值得学习的地方,也有很多可以优化的地方,如果你有兴趣和能力,可以尝试着提交 PR 给超哥。最后感谢以下超哥开源了这么多的作品供大家学习。