PHP 是搭建 Web 服務的常用開發語言之一,基於 PHP 也衍生出了眾多 Web 開發框架,Laravel 便是其中的優秀代表,它具有富於表達性且簡潔的語法,提供了眾多功能,例如模板引擎,MVC架構支援,安全性高,開發者工具,資料庫遷移等,可以滿足不同場景或規模的 Web 應用開發。
本篇教程將為您指導,如何通過 SCF Web Function
,快速部署您的 Laravel 框架上雲。
模版部署 – 一鍵部署 Laravel 專案
登入 Serverless 控制檯,單擊左側導航欄的【函式服務】。
在主介面上方選擇期望建立函式的地域,並單擊【新建】,進入函式建立流程。
選擇使用【模版建立】來新建函式,在搜尋框裡篩選
WebFunc
,篩選所有 Web 函式模版,選擇Laravel 框架模版
,點選“下一步”。如下圖所示:
在“配置”頁面,您可以檢視模版專案的具體配置資訊並進行修改。
單擊【完成】,即可建立函式。
函式建立完成後,您可在“函式管理”頁面,檢視 Web 函式的基本資訊,並通過 API 閘道器生成的訪問路徑 URL 進行訪問,檢視您部署的 Laravel 專案
自定義部署 – 快速遷移本地專案上雲
本地開發
首先請在本地環境裡,完成 Laravel 的開發環境搭建,參考官網文件
本地建立 Laravel 示例專案
在專案目錄下,通過以下指令,初始化 Laravel 示例應用:
composer create-project --prefer-dist laravel/laravel blog
- 本地啟動示例專案後,在瀏覽器裡訪問
http://0.0.0.0:9000
,即可在本地完成Laravel 示例專案的訪問
$ php artisan serve --host 0.0.0.0 --port 9000
Laravel development server started: <http://0.0.0.0:9000>
[Wed Jul 7 11:22:05 2021] 127.0.0.1:54350 [200]: /favicon.ico
部署上雲
接下來,我們對本地已經建立完成的專案進行部分修改,使其可以通過 Web Function 快速部署,對於 Laravel,具體改造步驟如下:
1. 新增 scf_bootstrap
啟動檔案
在專案根目錄下新建 scf_bootstrap
啟動檔案,在裡面完成環境變數配置,指定服務啟動命令等自定義操作,確保您的服務可以通過該檔案正常啟動
注意
scf_bootstrap
必須有755
或者777
的可執行許可權
- 如果想要在日誌中輸出環境變數,啟動命令前需要加
-u
引數,示例:python -u app.py
2. 修改檔案讀寫路徑
由於在 SCF 環境內,只有 /tmp
檔案可讀寫,其它目錄會由於缺少許可權而寫入失敗,因此需要在 scf_bootstrap
裡,以環境變數的方式注入,調整 Laravel 框架的輸出目錄:
#!/bin/bash
# 注入 SERVERLESS 標識
export SERVERLESS=1
# 修改模板編譯快取路徑,雲函式只有 /tmp 目錄可讀寫
export VIEW_COMPILED_PATH=/tmp/storage/framework/views
# 修改 session 以記憶體方式(陣列型別)儲存
export SESSION_DRIVER=array
# 日誌輸出到 stderr
export LOG_CHANNEL=stderr
# 修改應用儲存路徑
export APP_STORAGE=/tmp/storage
# 初始化模板快取目錄
mkdir -p /tmp/storage/framework/views
3. 修改監聽地址與埠
在 Web 函式內,限制了監聽埠必須為 9000
,因此需要在在 scf_bootstrap
中,通過指定監聽埠:
/var/lang/php7/bin/php artisan serve --host 0.0.0.0 --port 9000
完整 scf_bootstrap
內容如下:
- 本地配置完成後,執行啟動檔案,確保您的服務可以本地正常啟動,接下來,登陸騰訊云云函式控制檯,新建 Web 函式以部署您的 Laravel 專案:
部署完成後,點選生成的 URL,即可訪問您的 Laravel 應用:
開發管理
部署完成後,即可在 SCF 控制檯快速訪問並測試您的 Web 服務,並且體驗雲函式多項特色功能如層繫結、日誌管理等,享受 Serverless 架構帶來的低成本、彈性擴縮容等優勢。
本作品採用《CC 協議》,轉載必須註明作者和本文連結