隨着知識付費領域的興起,尤其是知識付費領域的龍頭“得到”的成功,知識付費領域儼然成爲了新的風口。經過這幾年的發展,知識付費領域的基礎建設有了很大的進步,後臺有粉絲指出隨着版本的更迭,原先的一些指南已經不再具有參考價值,希望我能出一期MeEdu前後臺完整的搭建文章,因此今天抽出時間和大家一起來學習如何基於Laravel,搭建在線點播系統。
文章將重點對搭建過程中出現最常見的幾個問題予以說明:
- 缺少命令環境,如npm命令,node.js環境缺失等
- 前後臺分離的新版MeEdu平臺後臺前端搭建過程中內存溢出問題
環境要求:
- PHP >= 7.2
- MySql >= 5.6
- Composer
- PHP擴展:Fileinfo
這裏我們以 centos-7-x86 64 + nginx + PHP7.2 + MySql5.6 爲例搭建。
一、前臺配置
# 1.安裝寶塔
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
# 2.配置寶塔
(a) 安裝Fileinfo擴展 # 如果Fileinfo拓展安裝失敗,就是內存太小,添加swap
(b) 禁用函數: proc_open、symlink、putenv、pcntl_signal、passthru
(c) 創建站點
# 3.安裝Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# 4.從compose安裝源碼
cd /www/wwwroot/demo.com
composer create-project qsnh/meedu=dev-master
cp -rf meedu/. .
# 5.#編輯環境變量:修改.env文件
#數據庫信息
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=edu
DB_USERNAME=edu
DB_PASSWORD=edu
#其它信息
APP_ENV=local(這裏如果正式運行,請修改爲:production)
APP_DEBUG=true(如果安裝沒問題,建議改爲false)
APP_URL=http://localhost(這裏修改你自己的域名地址)
# 6.創建上傳目錄軟鏈接
php artisan storage:link
# 7.設置storage目錄權限爲777
chmod -R 0777 storage
# 8.安裝數據表
php artisan migrate
# 9.初始化系統權限
php artisan install role
# 10.初始化管理員,按照提示輸入管理員的賬號和密碼
php artisan install administrator
# 11.初始化後臺菜單
php artisan install backend_menu
# 12.生成安裝鎖
php artisan install:lock
# 13.修改網站運行目錄public ,取消防跨站攻擊
# 14.添加網站僞靜態如下:
location / {
try_files $uri $uri/ /index.php$is_args$query_string;
}
二、前臺進階配置
(1)增加定時任務
#點擊寶塔面板左側計劃任務,設置爲每1分鐘執行一次,執行內容爲:
php /www/wwwroot/domain/artisan schedule:run >> /dev/null 2>&1 #修改爲自己的域名
(2)配置隊列監聽
# 1.安裝Supervisor:
pip install supervisor
wget -N -P /etc/ --no-check-certificate https://coding.net/u/cvc/p/supervisor/git/raw/master/supervisord.conf
# 2.新增配置代碼:
#以下爲一整條命令,先修改爲自己的域名,再一起復制到SSH運行
echo "[program:meedu]
process_name=%(program_name)s_%(process_num)02d
command=php /www/wwwroot/your_domain/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=4
redirect_stderr=true
stdout_logfile=/www/wwwroot/your_domain/storage/logs/supervisor.log" >> /etc/supervisord.conf
# 3.啓動服務:
/usr/bin/supervisord -c /etc/supervisord.conf
# 4.CentOS 7 系統開機自啓(將啓動命令加入rc.local文件):
echo "/usr/bin/supervisord -c /etc/supervisord.conf" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
CentOS 6、Debian、Ubuntu系統 可以參見此文
(3)如果需要開啓微信小程序,需要執行命令:
php artisan passport:install
該命令是生成RSA加密密鑰和小程序端的ID和Secret。注意將輸出的id和secret填寫到小程序配置文件中。
三、後臺配置
# 1.下載meedu後臺的前端項目到本地:
git clone https://github.com/Meedu/backend.git meedu-backend
# 2.安裝依賴(其中一些 npm WARN 無需理會):
npm install -g hey-cli
cd meedu-backend
npm install
# 3.打包:
hey build
打包完成之後將會在目錄下面看到 dist 文件夾,接下來將該文件夾複製到 meedu 項目的 public 目錄下面,重命名爲:admin。然後就可以在瀏覽器輸入:http://yourdomain/admin 來訪問 MeEdu 的後臺了。
這裏重點對搭建過程中出現最常見的幾個問題予以說明:
- 缺少命令環境,如npm命令,node.js環境缺失等
- 前後臺分離的新版MeEdu平臺後臺前端搭建過程中內存溢出問題
(1)缺少命令環境,如 npm command not found
原因是沒有安裝 node.js, 安裝最新版本的node.js
wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
tar -xf node-v12.16.1-linux-x64.tar.xz
# 將node路徑添加到環境變量
vi /etc/profile
export NODE_HOME=/root/node-v12.16.1-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
# 刷新權限
source /etc/profile
#測試命令
node -v
(2)最後打包過程中(hey build)內存溢出,報錯:JavaScript heap out of memory
我使用的是 512MB內存 的服務器,在Node中通過JavaScript使用內存時只能使用部分內存(64位系統:1.4 GB,32位系統:0.7 GB),這個時候,如果前端項目非常的龐大,Webpack編譯時就會佔用很多的系統資源,如果超出了V8引擎對Node默認的內存限制大小時,就會產生內存泄露(JavaScript heap out of memory)的錯誤。
基於此,既然V8引擎有對Node進行默認的內存限制大小,那麼在Node內存不足的時候,可以放寬內存大小的使用限制,在Node啓動的時候,傳遞–max-old-space-size或–max-new-space-size來調整內存大小的使用限制。
# 1.安裝 cross-env 和 increase-memory-limit
npm install -g cross-env
npm install -g increase-memory-limit
# 2.運行
increase-memory-limit
記住 cross-env 和 increase-memory-limit 版本號:
比如我這裏cross-env和increase-memory-limit版本號分別是 ^7.0.2和 ^1.0.7,
# 3.在項目文件package.json中增加內容
"scripts": {
"fix-memory-limit": "cross-env LIMIT=2048 increase-memory-limit"
},
"devDependencies": {
"increase-memory-limit": "^1.0.7",
"cross-env": "^7.0.2"
}
# 4.npm 異步運行
npm run fix-memory-limit
# 5.再次打包即可
hey build
如何個性化定製:
- 進入後臺(/admin)修改信息
- /wwwroot/domain/public/images 修改圖片
- /wwwroot/domain/resources/views/layouts/common/footer.blade.php 21、57行“手機號”改成“賬號”
- /wwwroot/domain/resources/views/layouts/common/footer.blade.php 版權申明 是否跨行
- /wwwroot/domain/resources/views/frontend/index/index.blade.php 可選擇性刪除勵志文字
- /meedu-backend/src/components/login/index.vue(編譯前)——6、7根據階段不同選一即可
- /wwwroot/domain/public/admin/static/js/18.72570da.js(編譯後) 修改後臺login頁面MeEdu申明和“郵箱”(改爲“賬號”)提示
- /wwwroot//resources/views/layouts/common/header.blade.php 修改 MeEdu <title>
- /wwwroot//resources/views/layouts/h5.blade.php 修改 MeEdu <title>
- /wwwroot//resources/views/frontend/auth/login.blade.php “手機號”(改爲“賬號”)提示
- /wwwroot//resources/views/frontend/components/mobile.blade.php “手機號”(改爲“賬號”)提示
- /wwwroot//resources/views/h5/auth/login.blade.php “手機號”(改爲“賬號”)提示
如何去除手機號驗證註冊:
如果沒有接口我們沒有辦法爲用戶發送驗證碼,換言之也就沒有辦法允許用戶註冊註冊賬號,顯然這是不合理的。因此我們需要修改這一部分的內容。
解決方法是刪除手機短信驗證碼驗證(/wwwroot/domain/app/Http/Middleware/CheckSmsCodeMiddleware.php):
然後修改移動端和pc端前端:
移動端:/wwwroot/domain/resources/views/frontend/components/mobile.blade.php
pc端:/wwwroot/domain/resources/views/layouts/common/footer.blade.php 修改 register-box
課程封面圖片 320240
首頁幻燈片:1200400
遷移站點後如何變更配置:
- 修改.env 文件
- 進入 public 目錄執行 rm storage
- 重新創建上傳目錄軟鏈接(從第6步開始)
- /wwwroot/domain/storage 下的 meedu_config.json 替換相關域名信息