寫部落格的事情拖延了好久,是時候做個總結了。感謝Laravel China社群。第一次使用Laravel開發專案,有任何問題歡迎探討、指正。以下是部落格介紹。
環境要求
Laravel 6.X
PHP 7.2+
MySQL 5.7+
Redis 5.0+
主要功能
- 文章
- 整合 Markdown 編輯器,支援拖拽上傳圖片
- 多標籤選擇器
- 支援全文檢索(Laravel Scount + TNTSearch + Jieba 分詞)
- 可分專題釋出文章
- 程式碼高亮
- 文章頁面自動生成目錄
- 支援分類、打標籤
- 文章瀏覽量統計
- 按年月份歸檔
- slug 自動生成/自動翻譯
- 評論
- 支援多級巢狀評論
- 收到評論 / 回覆後站內通知
- 使用者
- 支援 GitHub 登入
- 站長登入前 / 後臺,同步前 / 後臺登入狀態
- 管理後臺
- 站點資訊可配置
- 一些最佳化項
- 文章連結新增語義化slug
- 側邊欄資料使用 Laravel ViewComposer 統一輸出
- 側邊欄資料Redis快取
- 文章瀏覽量Redis快取
- 文章建立索引使用佇列
- Slug自動翻譯使用佇列
專案資訊
- 程式碼地址:github.com/HubQin/QinBlog
- 部落格地址:blog.ishare.cool/
部落格部署
下載程式碼
https://github.com/HubQin/QinBlog.git blog
Laravel 配置
建立
.env
檔案cp .env.example .env
配置
.env
檔案如下:App_NAME=Larashop # <-- 應用名 App_ENV=production # <-- 執行環境 App_KEY= # <-- 後面將執行命令生成 App_DEBUG=false # <-- 關閉除錯(部署過程方便除錯可先設為 true) App_URL=xxxx.xxx # <-- 你的網站地址 LOG_CHANNEL=stack DB_CONNECTION=MySQL DB_HOST=MySQL # <-- MySQL 主機,注意是填 MySQL 在 docker-compose 中的服務名 DB_PORT=3306 DB_DATABASE=myblog # <-- 資料庫名稱 DB_USERNAME=root # <-- 資料庫使用者名稱 DB_PASSWORD=xxxxxx # <-- 資料庫密碼,填寫在 docker-compse.yml 檔案中設定的密碼 BROADCAST_DRIVER=log CACHE_DRIVER=Redis # <-- 快取驅動 QUEUE_CONNECTION=Redis # <-- 佇列驅動 SESSION_DRIVER=file SESSION_LIFETIME=120 Redis_HOST=Redis # <-- Redis 主機,填寫規則同 MySQL Redis_PASSWORD=xxxxxx # <-- 填寫在 redis.conf 中設定的密碼(requirepass),沒設定則不用寫 Redis_PORT=6379 # 暫時沒用到郵箱,可不配置 MAIL_DRIVER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=465 MAIL_USERNAME=xxxxxx@qq.com # <-- 你的郵箱 MAIL_PASSWORD=xxxxxx # <-- 從郵箱服務商獲取的密碼 MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=xxxxxx@qq.com # <-- 你的郵箱 MAIL_FROM_NAME=Larashop # <-- 應用名
建立資料庫,名稱與
.env
中DB_DATABASE
的值相同安裝依賴
Composer install --no-dev --prefer-dist --optimize-autoloader
生成 KEY
PHP artisan key:generate
建立軟連結
PHP artisan storage:link
資料表遷移
PHP artisan migrate --force
生成配置、路由、事件快取
PHP artisan route:cache PHP artisan config:cache PHP artisan event:cache
匯入後臺選單和角色資料:在資料庫執行
/database/admin-menu-and-role-data.sql
檔案釋出管理後臺資原始檔
PHP artisan vendor:publish --provider="Encore\\Admin\\AdminServiceProvider"
建立後臺管理員賬號
執行
PHP artisan admin:create-user
,依照提示輸入管理員名稱、密碼等
Nginx 配置
可參考官網配置:learnku.com/docs/laravel/7.x/deplo...
需要更完善的配置,如配置 HTTPS,更多安全配置等,可參考我的另一篇文章:部落格:docker-compose 部署 Laravel 專案全記錄
Supervisor 程式監護配置
由於應用中使用了任務佇列,所以需要對佇列程式進行監護,防止佇列意外停止,這裡使用Supervisor。關於 Supervisor 的使用,可以參考我之前寫的這篇:部落格:Supervisor 使用總結
參考配置:
[program:qin]
process_name=%(program_name)s_%(process_num)02d
directory=/var/www/HTML/qin
command=PHP artisan queue:work --tries=3 --sleep=3 --daemon
autostart=true
autorestart=true
numprocs=1
user=root
stopasgroup=true
killasgroup=true
redirect_stderr=true
stdout_logfile=/var/www/HTML/qin/storage/logs/queue.log
解決檔案許可權問題
日誌和快取權檔案限
sudo chown -R $USER:www-data storage sudo chown -R $USER:www-data Bootstrap/cache chmod -R 775 storage chmod -R 775 Bootstrap/cache
全文檢索資料檔案許可權
由於最開始你發表文章時,索引是由佇列生成的,而佇列有可能是 root 賬號生成的(比如,在docker環境中),這可能導致 Web 訪問的賬號無法修改該檔案。所以,部署完成後發表一篇文章後, 在
storage/indices
目錄會建立posts.index
檔案,在專案根目錄下執行chmod 0777 storage/indices/posts.index
,給予最高許可權。站點配置檔案
config/site
也要給予最高許可權,因為管理後臺配置站點要修改到這個檔案。
iconfont 圖示設定
分類圖示使用了 iconfont。配置方法:登入 www.iconfont.cn/ 建立一個專案,選擇圖示到購物車後,新增到專案。進入 “我的專案”,選擇 “Symbol” 型別,複製 .js 字尾的 url,到管理後臺 – 站點配置,填入對應的輸入框,然後儲存即可。
主要功能展示
- 文章列表
- 發表文章-分類選擇
- 發表文章-打標籤
- Markdown編輯器
- 全文檢索
- 文章頁面
- 管理後臺-站點設定
本作品採用《CC 協議》,轉載必須註明作者和本文連結