api.yike.io一刻社區(qū)后端 API 源碼
Yike.io
此項(xiàng)目為 https://yike.io 的后端 API,基于 Laravel 5 開發(fā)。
?? 此次開源只是應(yīng)大家的要求,所以請不要聯(lián)系我咨詢?nèi)魏问褂脝栴},遇到問題請自行解決,熟讀 Laravel 文檔。 如果你有興趣參與改進(jìn),請直接 PR 即可。
?? 快速上手視頻:053. 優(yōu)秀的開源社區(qū)——yike.io
運(yùn)行環(huán)境要求
- Nginx 1.8+
- PHP 7.1+
- MySQL 5.7.7+
- Redis 3.0+
- ElasticSearch 5.*
- ElasticSearch ik 插件
開發(fā)環(huán)境部署/安裝
本項(xiàng)目代碼使用 PHP 框架 Laravel 5 開發(fā),本地開發(fā)環(huán)境使用 Laravel Homestead。
下文將在假定讀者已經(jīng)安裝好了 Homestead 的情況下進(jìn)行說明。如果您還未安裝 Homestead,可以參照 Homestead 安裝與設(shè)置 進(jìn)行安裝配置。
基礎(chǔ)安裝
克隆源代碼
克隆源代碼到本地:
> git clone [email protected]:overtrue/api.yike.io.git
配置本地的 Homestead 環(huán)境
1). 運(yùn)行以下命令編輯 Homestead.yaml 文件:
homestead edit
2). 加入對應(yīng)修改,如下所示:
folders:
- map: ~/my-path/api.yike.io/ # 你本地的項(xiàng)目目錄地址
to: /home/vagrant/api.yike.io
sites:
- map: api.yike.io.test
to: /home/vagrant/api.yike.io/public
databases:
- api_yike_io
3). 應(yīng)用修改
修改完成后保存,然后執(zhí)行以下命令應(yīng)用配置信息修改:
homestead provision
隨后請運(yùn)行 homestead reload 進(jìn)行重啟。
安裝擴(kuò)展包依賴
composer install
生成配置文件
cp .env.example .env
你可以根據(jù)情況修改 .env 文件里的內(nèi)容,如數(shù)據(jù)庫連接、緩存、郵件設(shè)置等:
APP_URL=http://api.yike.io.test
...
DB_HOST=localhost
DB_DATABASE=api_yike_io
DB_USERNAME=homestead
DB_PASSWORD=secret
生成數(shù)據(jù)表及生成測試數(shù)據(jù)
在 Homestead 的網(wǎng)站根目錄下運(yùn)行以下命令
$ php artisan migrate --seed
初始的用戶角色權(quán)限已使用數(shù)據(jù)遷移生成。
生成秘鑰
$ php artisan key:generate
Passport 初始化
$ php artisan passport:install
將生成的 password grant 對應(yīng)的 id 與 secret 記錄下來,用于配置 env 變量。
PASSPORT_PASSWORD_CLIENT_ID=
PASSPORT_PASSWORD_CLIENT_SECRET=
如果你忘記了,就去找 oauth_clients 表中找吧。
配置 hosts 文件
echo "192.168.10.10 api.yike.io.test" | sudo tee -a /etc/hosts
其它服務(wù)配置
騰訊 007 防水墻
去 騰訊防水墻 注冊賬號,創(chuàng)建驗(yàn)證碼服務(wù)(你可能需要創(chuàng)建兩個驗(yàn)證,一個用于發(fā)布文章,一個用于注冊賬號),獲取對應(yīng)的配置填寫到 .env 中:
# 用于發(fā)布文章的驗(yàn)證碼
CAPTCHA_ID_PUBLISH=
CAPTCHA_SECRET_PUBLISH=
# 用于用戶注冊用的驗(yàn)證碼
CAPTCHA_ID_REGISTER=
CAPTCHA_SECRET_REGISTER=
帖子搜索服務(wù)
帖子搜索基于 ElasticSearch 實(shí)現(xiàn),所以你需要在任何機(jī)器上部署一個 ES 服務(wù),然后將地址與索引名稱配置到:
ELASTICSEARCH_INDEX=yike
ELASTICSEARCH_HOST=http://127.0.0.1:9200
敏感詞配置
請自行尋找敏感詞庫,將敏感詞放置于 storage/SensitiveWords.txt 中,每行一個:
敏感詞1
敏感詞2
...
鏈接入口
- 首頁地址:http://api.yike.io.test
- 管理后臺:沒做
管理員賬號請自己添加 UserSeeder 創(chuàng)建。
至此, 安裝完成 ^_^。
擴(kuò)展包使用情況
| 擴(kuò)展包 | 一句話描述 | 本項(xiàng)目應(yīng)用場景 |
|---|---|---|
| overtrue/easy-sms | 多網(wǎng)關(guān)短信發(fā)送組件 | 發(fā)送驗(yàn)證碼 |
| overtrue/laravel-emoji | emoji 轉(zhuǎn)換組件 | 帖子與評論 emoji 解析 |
| overtrue/laravel-filesystem-qiniu | 七牛 CDN SDK | 帖子內(nèi)容圖片存儲 |
| overtrue/laravel-follow | Laravel 用戶關(guān)系組件 | 用戶關(guān)注與帖子訂閱 |
| overtrue/laravel-lang | Laravel 多語言 | 報(bào)錯信息本地化 |
| overtrue/laravel-mail-aliyun | 阿里云郵件 SDK | 發(fā)送通知郵件 |
| overtrue/laravel-socialite | 社交登錄組件 | 用戶使用第三方登錄 |
| overtrue/laravel-uploader | Laravel 上傳功能封裝 | 帖子內(nèi)容圖片上傳 |
| overtrue/laravel-query-logger | Laravel SQL 監(jiān)聽工具 | 開發(fā)環(huán)境查看 SQL 記錄 |
| Intervention/image | 圖片處理功能庫 | 用于圖片裁切 |
| guzzlehttp/guzzle | HTTP 請求套件 | 我也記不得,反正就是要用 |
| predis/predis | Redis 官方首推的 PHP 客戶端開發(fā)包 | 緩存驅(qū)動 Redis 基礎(chǔ)擴(kuò)展包 |
| mewebstudio/Purifier | 用戶提交的 Html 白名單過濾 | 帖子內(nèi)容的 Html 安全過濾,防止 XSS 攻擊 |
| laravel/passport | 用戶授權(quán) | 基于 Personal Access Token 的前后端用戶認(rèn)證 |
| laravel/horizon | 隊(duì)列監(jiān)控面板 | 監(jiān)聽隊(duì)列使用情況 |
| laravolt/avatar | 生成用戶頭像 | 用戶頭像 |
| sentry/sentry-laravel | Sentry 報(bào)錯監(jiān)控 | 監(jiān)控系統(tǒng)錯誤 |
| spatie/laravel-activitylog | 用戶行為記錄 | 個人中心的用戶動態(tài) |
| spatie/laravel-url-signer | URL 加密 | 用戶激活鏈接 |
| tamayo/laravel-scout-elastic | Laravel Scout ES 驅(qū)動 | 帖子搜索 |
| tucker-eric/eloquentfilter | 模型字段過濾 | 接口字段過濾 |
| vinkla/hashids | HashID 實(shí)現(xiàn) | 暫時好像沒用到 |
| beyondcode/laravel-self-diagnosis | Laravel 基礎(chǔ)環(huán)境檢查工具 | 檢查配置是否正確 |
自定義 Artisan 命令
| 命令行名字 | 說明 | Cron | 代碼調(diào)用 |
|---|---|---|---|
es:init |
初始化 ES 模板 | 無 | 無 |
PHP 擴(kuò)展包開發(fā)
想知道如何從零開始構(gòu)建 PHP 擴(kuò)展包?
請關(guān)注我的實(shí)戰(zhàn)課程,我會在此課程中分享一些擴(kuò)展開發(fā)經(jīng)驗(yàn) —— 《PHP 擴(kuò)展包實(shí)戰(zhàn)教程 - 從入門到發(fā)布》
License
MIT
